Class handler to call static methods

조회 수: 6 (최근 30일)
Pavel Benes
Pavel Benes 2021년 8월 27일
편집: Matt J 2022년 9월 13일
I am new to OOP in MATLAB and I am trying to figure out how to make object handler, which could be used to call classes static methods.
Lets say I have two clases car and bike. Both have in common static method MakeSound().
Now I would like in the script have something like
vehHand = @car;
and later in the script use somehting like
vehHand.MakeSound();
I looks like @car is not handle to the object but just handle to the constructor of the class. Is there a way to call static method of a class, knowing the name of class as a string (for example className = "car")? I am pretty sure that something like
feval([className '.' 'MakeSound'])
or
eval([className '.' 'MakeSound()'])
would work but is there some "nicer" way to do this?
  댓글 수: 1
Raphaël Candelier
Raphaël Candelier 2022년 9월 13일
편집: Raphaël Candelier 2022년 9월 13일
Same question here.
For completeness, the class handle can be used by feval after conversion to a string:
feval([func2str(vehHand) '.MakeSound'])
But this is not really satisfying and can become pretty awful when parameters have to be passed to the static method.

댓글을 달려면 로그인하십시오.

답변 (1개)

Matt J
Matt J 2022년 9월 13일
편집: Matt J 2022년 9월 13일
h=@(varargin) feval([vehHand '.MakeSound'],varargin{:});
h(arg1, arg2,...,argN)

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

태그

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by