0
単純なオーバーロードされたplus
関数を持つMATLABクラスがあり、オブジェクトを返すことができません。私は関数が各フィールド値を一緒に追加し、同じクラスのオブジェクトを出力し、フィールド値は2つの入力の合計であるとします。 2つのオブジェクトを一緒に追加すると、オブジェクトではなく構造体が得られます。私はクラスには新しく、間違っていると思われます。どんな助けも素晴らしいだろう。次のようにオーバーロードされたメソッド操作から同じクラスのオブジェクトを返すのは、structではなく "plus"ですか?
コードは次のとおりです。
classdef Molar
properties
A = 0;
B = 0;
C = 0;
end
methods
function M = Molar(val)
M.A = val;
M.B = val+1;
M.C = val+2;
end
function M = plus(M1,M2)
M.A = M1.A + M2.A;
M.B = M1.B + M2.B;
M.C = M1.C + M2.C;
end
end
end
それが実行され、私が行うと:私は+
操作を行う際に
>> x = Molar(2)
x =
Molar with properties:
A: 2
B: 3
C: 4
>> y = Molar(3)
y =
Molar with properties:
A: 3
B: 4
C: 5
は、その後、私はstruct
を取得します。他のMolar
オブジェクトを返すにはどうすればいいですか?
>> x+y
ans =
struct with fields:
A: 5
B: 7
C: 9
コンストラクタメソッドを別に使用する必要があるのかどうか疑問です。 この点に関する助けがあれば幸いです。
なるほど、ありがとう!非常に賢い。だからクラスをコーディングするための規範ですか?またはこれはハックと見なされますか? – teepee
はい、C++(暗黙的に)とpython(明示的に)として、クラスメソッドの最初のパラメータはそれ自身です。 – rahnema1