2015-04-28 77 views
0

非常第一本文檔中: http://www.mathworks.com/help/matlab/matlab_oop/getting-familiar-with-classes.html這個MATLAB類是什麼,爲什麼它不在我的電腦上工作?

類是:

classdef BasicClass 
    properties 
     Value 
    end 
    methods 
     function r = roundOff(obj) 
     r = round([obj.Value],2); 
     end 
     function r = multiplyBy(obj,n) 
     r = [obj.Value] * n; 
     end 
    end 
end 

當我運行這種方式

a = BasicClass 
a.Value = pi/3; 

它工作正常,並做什麼它應該,但這個一段代碼

a = BasicClass(pi/3); 

提供了以下錯誤:

「使用圓形

太多輸入參數錯誤。」

這是什麼意思? (我正在使用R2014a)在Matlab中使用oop是否愚蠢? LOL

回答

1

的代碼,無論你缺少類構造函數(如在半路上下來的幫助鏈接被提及)相比,貴錯誤信息不完全正確:

classdef BasicClass 
    properties 
    Value 
    end 
    methods 

    % Class constructor -> which you can pass pi/3 into. 
    function obj = BasicClass (varargin) 
     if nargin == 1 
     obj.Value = varargin{1}; 
     end 
    end 

    % Your Methods 
    function r = roundOff(obj) 
     r = round([obj.Value],2); 
    end 
    function r = multiplyBy(obj,n) 
     r = [obj.Value] * n; 
    end 
    end 
end 
+0

謝謝,這工作,但現在此代碼給出錯誤 roundOff(a) 它說:使用回合出錯 輸入參數太多。在BasicClass/roundOff(第16行)中出現錯誤 。 哦,我想這不是課堂的問題,也許我的循環功能已經過時了。再次感謝! –

+0

@ĬnfernalSeraphím你沒有將'roundOff'函數調用爲'myObj.roundOff(foo)'對嗎?或者作爲'myClass.roundOff(myObj)'?第一個參數指向調用函數的對象。所以如果你有一個'BasicClass'對象'bc',那麼'bc.roundOff();'將'bc'舍入到最接近的整數。此外,構造函數不是強制性的,以防未定義構造函數。Matlab使用默認構造函數。仍然一個類應該總是有一個定義的構造函數。 – patrik