MATLAB:OOP调用来自不同类的函数
MATLAB: OOP Calling Functions from Different Class
我的目标是使用 MATLAB OOP 设计一个在 MATLAB 中编程的可重用引擎。这是我第一次尝试这样做。我想解决的问题如下:我有一个抽象类cPayoffBase
,它定义了未知类型收益的接口。继承cPayoffBase
,我有一个具体的类cPayoffCall
,它实现了调用选项。现在我定义了另一个类cVanillaDerivs
,它接受用户定义的收益对象和执行价格。当我将用户定义的对象传递给cVanillaDerivs
以计算一些数量时,异常Index exceeds matrix dimensions.
浮出水面。我将详细提供代码。
cPayoffBase.m
classdef (Abstract) cPayoffBase < handle
methods (Abstract)
mfGetPayoff(argSpotPrc)
end
end
cPayoffCall.m
classdef cPayoffCall < cPayoffBase
properties (GetAccess = private, SetAccess = private)
dmStrikePrc
end
methods
function obj = cPayoffCall(argStrikePrc)
obj.dmStrikePrc = argStrikePrc;
end
function rslt = mfGetPayoff(obj, argSpotPrc)
rslt = max(argSpotPrc - obj.dmStrikePrc, 0.0);
end
end
cVanillaDerivs.m
classdef cVanillaDerivs
%% Data Members
properties (GetAccess = private, SetAccess = private)
dmPayoffObj
dmExpiryDt
end
%% Implementation
methods
% Constructor
function obj = cVanillaDerivs(argPayoffObj, argExpiryDt)
obj.dmPayoffObj = argPayoffObj;
obj.dmExpiryDt = argExpiryDt;
end
% Member Functions
function rslt = mfGetExpriyDt(obj)
rslt = obj.dmExpiryDt;
end
function rslt = mfGetDerivPayoff(argSpotPrc)
rslt = obj.dmPayoffObj(argSpotPrc);
end
end
end
命令窗口
>> clear classes
>> spot = 100; strike = 50; T = 1;
>> payoffObj = cPayoffCall(strike);
>> typeVanilla = cVanillaDerivs(payoffObj, T);
>> mfGetDerivPayoff(typeVanilla, spot)
Index exceeds matrix dimensions.
Error in cVanillaDerivs/mfGetDerivPayoff (line 37)
rslt = obj.dmPayoffObj(argSpotPrc);
在C++中,鉴于我有一个包装类并将类对象包装cPayoffBase
我可以在类cVanillaDerivs
中对双返回函数mfGetDerivPayoff(double dmSpotPrc) const
执行类似return (*dmPayoff)(dmSpotPrc)
的操作。请让我知道我的错误,如果可能的话,我如何在 MATLAB OOP 中实现与C++相同的过程。
您正在尝试访问属性的元素编号 100 dmPayoffObj
。但是,此属性设置为 payOffObj
,它不是数组。因此错误。
我想你想要的是回报dmPayoffObj
的回报。应更改类cVanillaDerivs
的方法mfGetDerivPayoff
,如下所示:
function rslt = mfGetDerivPayoff(argSpotPrc)
rslt = obj.dmPayoffObj.mfGetPayoff(argSpotPrc);
end
你的意思是rslt = obj.dmPayoffObj.mfGetPayoff(argSpotPrc);
而不是rslt = obj.dmPayoffObj(argSpotPrc);
?
- 是否可以创建一个从不同类调用函数的线程?
- 有没有办法将指定不同类的 std::make_unique 传递到函数中
- 在工人类中使用不同类的静态函数进行实验
- 模板化虚拟函数,管理单个类的不同类属性
- 如何在它们之间分配和使用 2 个不同类的函数指针?
- 如何处理具有不同类的成员函数的函数查找表?
- C++ I/O 流重载:如何实现同一标头中相同 4 个 I/O 函数的 3 个不同类的友元重载?
- 不同类的构造函数的重载解析
- 不同类的虚拟函数共享相同的(无效?)内存地址
- 使用来自不同类的同名函数;这是什么模式
- 如何使用具有相同类名或函数名的第三方库
- 函数指针数组,其中包含不同类的类函数
- 如何让来自不同类的内联函数相互调用
- 是否可以在容器中存储具有模板成员函数的不同类
- 如何从不同类的静态成员函数访问非静态Qt-Ui函数
- 指向不同类方法的函数指针
- 类函数可以具有不同类对象的参数
- 在构造函数中调用不同类的构造函数?
- inheritance:如何用相同的函数生成一个不同类的数组,这些类在C++中做不同的事情
- STD ::绑定同类中的静态成员函数