错误,“ include / Trading_GenericTemplate.h:37:错误:â=â标记之前的预期构造函数,析构函数或类型转换”

问题描述

我有一个奇怪的问题,我正在我的项目(一个交易项目(服务器))中实现运行时多态性,这里出现实例初始化错误,我已尽力而为,但没有任何解决方案。 这是显示编译错误代码"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() };