2013-03-06 13 views
5

In questo modo sto riscontrando problemi nell'impostazione di proprietà specifiche di un oggetto. Sono relativamente nuovo a Matlab e in particolare alla programmazione orientata agli oggetti. Qui di seguito è il mio codice:Impostazione di una proprietà di un oggetto in 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 

Tutto funziona bene, fino a quando tento la funzione set_suit. Questo è ciò che ho digitato nella finestra di comando.

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. 

Questo restituisce sempre l'errore di troppi argomenti di input. Qualsiasi aiuto con questa programmazione orientata agli oggetti in generale sarebbe molto apprezzato.

risposta

4

Per la classe methods (non static) il primo argomento è l'oggetto stesso. Così, il metodo dovrebbe essere simile:

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

Nota l'argomento aggiuntivo obj all'inizio della lista degli argomenti.

Ora si può chiamare questo metodo sia per

a.set_suit('Spades'); 

o

set_suit(a, 'Spades'); 
+0

Questo funziona perfettamente! Grazie mille! –

Problemi correlati