2013-03-06 4 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)의 경우 첫 번째 인수는 개체 자체입니다. 인수 목록의 시작 부분에

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

참고 추가 obj 인수 : 그래서, 당신의 방법은 같아야합니다.

이제이 완벽하게 작동

a.set_suit('Spades'); 

또는

set_suit(a, 'Spades'); 
+0

에 의해이 방법 중 하나를 호출 할 수 있습니다! 정말 고맙습니다! –

관련 문제