2013-03-06 3 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

Это отлично работает! Спасибо огромное! –

Смежные вопросы