필터 지우기
필터 지우기

Unable to Overload Subsasgn

조회 수: 4 (최근 30일)
Andrew Barton
Andrew Barton 2012년 9월 20일
댓글: sst 2019년 2월 22일
I'm trying to write a class that overloads the subsasgn function, but I am running into this rather cryptic error:
Class 'MyClass' is not allowed to define a 'subsasgn' method.
Since most of the documentation and discussion about subsasgn comes from the perspective of overloading it, I'm somewhat at a loss to determine why I cannot do this, so basically any suggestion of what might be happening is appreciated.
I'm subclassing dynamicprops, matlab.mixin.Heterogeneous, and matlab.mixin.Copyable. I was worried that it wasn't allowed to overload subsasgn with a class that subclasses dynamicprops, but I've tested that and it works fine in other cases.
I'm on R2012a.
This question follows up on the one I asked here, but since it's since it's separate I thought making a fresh one would be ok: http://www.mathworks.com/matlabcentral/answers/48406-setter-methods-for-dynamic-properties
  댓글 수: 2
Daniel Shub
Daniel Shub 2012년 9월 21일
Please post the example code that does not work.
sst
sst 2019년 2월 22일
I was wondering, are there any other base classes that introduce a restriction on overloading subsasgn? I am inheriting from the Simulink.Parameter class and trying to overload the subsasgn function.

댓글을 달려면 로그인하십시오.

채택된 답변

Daniel Shub
Daniel Shub 2012년 9월 21일
The documentation is pretty clear on this:
"Cannot Redefine Indexing or Concatenation
The use of heterogeneous arrays requires consistent indexing and concatenation behaviors. Therefore, subclasses of matlab.mixin.Heterogeneous cannot change their default indexed reference, indexed assignment, or concatenation behavior.
You cannot override the following methods in your subclasses:
cat
horzcat
vertcat
subref
subsasign
In cases involving multiple inheritance in which your subclass inherits from superclasses in addition to matlab.mixin.Heterogeneous, the superclasses cannot define any of these methods."
  댓글 수: 2
Andrew Barton
Andrew Barton 2012년 9월 21일
Ah, well, that's a bummer. Given that your answer to this question makes your fix to my previous problem not work in my case, is there any way for me to reopen that question, or can I repost it? I'm new to Matlab answers and don't have a great grasp of the etiquette here yet.
Also thank you for being so helpful.
Daniel Shub
Daniel Shub 2012년 9월 21일
I think posting it as a new question with the new requirement would be fine. Please post some example code (full class file) along with the expected output and any edge cases.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by