try to manage a dynamic list of classinstances
11 ビュー (過去 30 日間)
古いコメントを表示
hi its me again, i figured a lot out already thanks to your help, but there are still some misteries. i got this:
classdef node<handle
properties
x;
y;
bearing=0;
end % properties
methods
function obj = node(x,y)
obj.x=x;
obj.y=y;
end%functions
end%methods
end %class
and this:
classdef manlists
properties
nodelist={}
stablist={}
materiallist={}
formlist={}
end
methods
function f = manlists()
f.nodelist={node(1,2);node(2,3)};% as a try, and here works the node instance
f.stablist={};
f.materiallist={};
f.formlist={} ;
end
function h = grN(obj)
h = size(obj.nodelist,1);
end
function h = AddNode(a,b)
h.nodelist{end+1} =node(a,b)
end
end
end
but it doesnt work like i expect it to
in the command window it works
>> man = manlists;
>> man.nodelist{end+1}=node(1,2)
man =
manlists
Properties:
nodelist: {3x1 cell}
stablist: {}
materiallist: {}
formlist: {}
Methods
but inside the class i get this error:
>> man.AddNode(1,2)
??? Error using ==> AddNode
Too many input arguments.
i tried arround for several hours but i cant figure it out please help
thanks
3 件のコメント
Daniel Shub
2012 年 3 月 25 日
It is also strange to me that nodelist is a cell array instead of an array of class node.
採用された回答
Daniel Shub
2012 年 3 月 25 日
The call
man.AddNode(1,2)
is converted behind the scenes to
AddNode(man, 1, 2)
which has three arguments, but AddNode only takes 2 arguments. What I think you "want" is
function h = AddNode(h,a,b)
その他の回答 (1 件)
per isakson
2012 年 3 月 25 日
Try
man = manlists;
man.nodelist(end+1) = node(1,2);
man = man.AddNode(1,2);
man.grN
with these two classes
classdef node < handle
properties
x;
y;
bearing=0;
end % properties
methods
function this = node(x,y)
this.x=x;
this.y=y;
end%functions
end%methods
end %class
classdef manlists
properties
nodelist = node.empty
end
methods
function this = manlists()
this.nodelist(end+1:end+2,1)=[ node(1,2); node(2,3)];
end
function sz = grN( this )
sz = size( this.nodelist, 1 );
end
function this = AddNode( this, a ,b )
this.nodelist(end+1) = node( a, b );
end
end
end
2 件のコメント
Daniel Shub
2012 年 3 月 25 日
My guess is that at some point Wu is going to subclass node and therefore need to use a heterogeneous array. As it stands now, I like your way with standard arrays.
参考
カテゴリ
Help Center および File Exchange で Construct and Work with Object Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!