Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

Undefined operator '>' for input arguments of type 'BasicClass'

조회 수: 1 (최근 30일)
Maciej Satora
Maciej Satora 2017년 9월 1일
마감: MATLAB Answer Bot 2021년 8월 20일
Hey, I want to write a simple class that will calculate recursive some values. Then, when I want to call my function, I got the report: Undefined operator '>' for input arguments of type 'BasicClass' Any ideas how can I repair this? I'm pretty new with the object oriented programming...
classdef BasicClass
properties
Value
end
methods
function [Result] = r (Value)
if Value > 0
Result = r(Value - 1) * 1000+2;
else
Result =2;
end
end
end
end

답변 (2개)

Steven Lord
Steven Lord 2017년 9월 1일
The input argument to the r method of the BasicClass class will be an instance of BasicClass. You will need to access the property of that object explicitly; there's no implicit "Because this identifier matches the name of a property, we'll use the value of that property on the instance of the class in this method" behavior.
While you could make a new BasicClass object to perform the recursive call to the r method, I would instead use a class-related function that is not a method to do that recursion. Put all of the next block of code into a file named BasicClass.m.
classdef BasicClass
properties
Value
end
methods
function [Result] = r (myobj)
Result = recurseComputeR(myobj.Value);
end
end
end
function Result = recurseComputeR(myobjValue)
if myobjValue > 0
Result = recurseComputeR(myobjValue-1)*1000+2;
else
Result = 2;
end
end
Use this class like:
obj = BasicClass;
obj.Value = 2;
answer = r(obj)
You should receive 2002002 in the variable answer.

Maciej Satora
Maciej Satora 2017년 9월 2일
Thank You sir! It helped a lot. Is it like creating a function that is reference to another one?

이 질문은 마감되었습니다.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by