如何使枚举被其他类识别
How to make an enum recognized by other classes
我正在我的SimulationEngine基类中创建一个名为RiskFactor的枚举。
class SimulationEngine
{
public:
enum RiskFactor { interest_rate, equities, volatility };
SimulationEngine(double horizon, Wrapper<valuationFunction>& theFunction_, RiskFactor simulatedRiskFactor);
virtual void DoOnePath(double vol, double normvariate) = 0;
virtual SimulationEngine* clone() const = 0;
const virtual double GetHorizon();
const Wrapper<valuationFunction>& GetFunction() const;
RiskFactor simulatedRiskFactor;
protected:
double horizon;
Wrapper<valuationFunction> theFunction;
};
在一个派生类中,我有这个方法,在调用对象"TheFunction"的方法时,使用类型为RiskFactor enum的"模拟风险因子"。
void OneStepBSEngine::DoOnePath(double vol, double normvariate)
{
double variance = vol * vol * horizon;
double rootVariance = sqrt(variance);
double itoCorrection = -0.5 * variance;
//double movedSpot = spotvalue * exp(drift * horizon + itoCorrection);
//spotvalue = movedSpot * exp(rootVariance * normvariate);
double factor = exp(drift * horizon + itoCorrection + rootVariance * normvariate);
theFunction->RiskFactorMultiply(factor, simulatedRiskFactor);
return;
}
我应该如何让类"theFunction"寻找它来识别枚举并允许我写最后一行(尚未工作(:
theFunction->RiskFactorMultiply(factor, simulatedRiskFactor);
该类当前如下所示:
class valuationFunction
{
public:
valuationFunction(double TTM);
virtual void ValueInstrument() = 0;
virtual double GetValue() const;
virtual void RiskFactorAdd(double increment) = 0;
virtual void RiskFactorMultiply(double factor) = 0;
virtual void UpdateTTM(double timeStep);
virtual valuationFunction* clone() const = 0;
virtual ~valuationFunction() {}
private:
protected:
double f;
double TTM;
};
我希望能够调用 RiskFactorAdd 和 RiskFactorMultiply 函数与枚举 RiskFactor。
RiskFactorMultiply
的声明需要用封闭的类名限定枚举名称。
class valuationFunction
{
// ...
virtual void RiskFactorMultiply(double factor, SimulationEngine::RiskFactor risk) = 0;
// ...
};
这同样适用于枚举值,例如,如果RiskFactorMultiply
想使第二个参数成为可选参数。
virtual void RiskFactorMultiply(double factor, SimulationEngine::RiskFactor risk = SimulationEngine::volatility) = 0;
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 提升 ASIO 无法识别计时器对象
- 从udp接收帧对于人脸识别来说太慢
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 模板类无法识别友元运算符
- 如何使枚举被其他类识别
- QT 无法识别 UTF-8 编码,适用于其他所有位置
- 实现文件只能识别其他类的远期声明
- C++ 其他类无法识别的类属性(标头包括公共)
- 为什么主函数不识别其他功能是否返回float类型编号
- Qt::如何识别/检测系统是否被Linux中的其他系统远程访问
- 使用Windows生物识别框架或任何其他方法通过.Net访问指纹读取器
- 模板功能,用于从其他容器中识别smart_pointer
- 当我的分词器识别出令牌时,如何执行其他操作
- Qt不识别其他子项目
- 其他类无法识别包含C++的类
- C++自定义类未被其他类识别
- 检测/识别端口(HDMI,其他)显示器连接到Windows 7/8/10 win32c++
- cc1plus:无法识别的命令行选项警告任何其他警告