问题描述
我有一个奇怪的问题,我正在我的项目(一个交易项目(服务器))中实现运行时多态性,这里出现实例初始化错误,我已尽力而为,但没有任何解决方案。
这是显示编译错误的代码,"include/Trading_GenericTemplate.h:37: error: expected constructor,destructor,or type conversion before â=â token
”
#ifndef STRAT_TradING_TEMPLATE_H
#define STRAT_TradING_TEMPLATE_H
class STRAT_TEMPLATE
{
public :
STRAT_TEMPLATE()
{}
virtual int EntrySignal(int instMapI,float *param)
{}
virtual int EntryPricer(int instMapI,float *param)
{}
virtual bool ExitSignal(int instMapI,float *param)
{}
virtual int ExitPricer(int instMapI,float *param)
{}
virtual void Init(int instMapI)
{}
};
class B :public STRAT_TEMPLATE
{
public :
B()
{}
int EntrySignal(int instMapI,float *param)
{}
int EntryPricer(int instMapI,float *param)
{}
bool ExitSignal(int instMapI,float *param)
{}
int ExitPricer(int instMapI,float *param)
{}
void Init(int instMapI)
{}
};
STRAT_TEMPLATE* startTrading[20];
startTrading[0] = new B();
#endif
让我简要描述一下我到底想做什么,我需要20个基类实例,然后每个实例都需要通过其不同的子类对象进行初始化,该子类对象将在其他头文件中定义。但是在初始化它的第一个子类对象后,我得到了这个错误。 我已经实现了此链接https://www.geeksforgeeks.org/virtual-functions-and-runtime-polymorphism-in-c-set-1-introduction/代码,该代码可以在同一台计算机上的简单cpp程序中完美执行。 因此,请帮助解决问题和解决方案。 预先感谢。
解决方法
赋值语句startTrading[0] = new B();
仅在函数体内是可能的,而在全局范围内是不允许的。
你可以做
STRAT_TEMPLATE* startTrading[20] = { new B() };