2013-03-06 54 views
5

オブジェクトの特定のプロパティを設定する際に問題があります。私はMatlab、特にオブジェクト指向プログラミングについて比較的新しいです。以下は私のコードです:Matlabでオブジェクトのプロパティを設定する

classdef Card < handle 
properties 
    suit; 
    color; 
    number; 
end 

methods 
    %Card Constructor 
    function obj= Card(newSuit,newColor,newNumber) 
     if nargin==3 
     obj.suit=newSuit; 
     obj.color=newColor; 
     obj.number=newNumber; 
     end 
    end 

    function obj=set_suit(newSuit) 
     obj.suit=(newSuit); 
    end 

私はset_suit関数を試すまで、すべてうまく動作します。これは私がコマンドウィンドウに入力したものです。

a=Card 

a = 

Card handle 

Properties: 
    suit: [] 
color: [] 
number: [] 

Methods, Events, Superclasses 

a.set_suit('Spades') 
Error using Card/set_suit 
Too many input arguments. 

これは、常に多すぎる入力引数のエラーを返します。このやオブジェクト指向プログラミングの助けとなることは大いにありがたく思います。

答えて

4

クラスmethods(非static)の場合、最初の引数はオブジェクトそのものです。引数リストの先頭に追加obj引数に注意してください

function obj=set_suit(obj, newSuit) 
    obj.suit=(newSuit); 
end 

:だから、あなたの方法は次のようになります。

今、あなたはどちらか、このメソッドを呼び出すことができ

a.set_suit('Spades'); 

または

set_suit(a, 'Spades'); 
+0

でこれは完璧に動作します!どうもありがとうございます! –

関連する問題