5

そのため、オブジェクトの特定のプロパティを設定するのに問題があります。私は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

1 に答える 1

4

クラスメソッド(非static ) の場合、最初の引数はオブジェクト自体です。したがって、メソッドは次のようになります。

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

obj引数リストの先頭にある追加の引数に注意してください。

このメソッドは、次のいずれかの方法で呼び出すことができます。

a.set_suit( 'Spades' );

また

set_suit( a, 'Spades' );
于 2013-03-06T06:26:10.570 に答える