首页 > 解决方案 > 错误,“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 程序中完美执行的代码。所以请帮助解决问题和解决方案。提前致谢。

标签: c++classpolymorphismvirtual

解决方案


赋值语句startTrading[0] = new B();只能在函数体中使用,在全局范围内是不允许的。

你可以做

STRAT_TEMPLATE* startTrading[20] = { new B() };

推荐阅读