相关疑难解决方法(0)

709
推荐指数
11
解决办法
17万
查看次数

如何有条件地实例化不同的父/子类?

在这里这里发布并回答类似的问题,但建议的解决方案对我不起作用.

我有三个具有多级继承的类:

class Model
{
public:
    Model();
    template <typename InputModelType>
    void importModel(const InputModelType &m);
    virtual void process(); 
};

class SpecialModel : public Model
{
public:
    SpecialModel();
    template <typename InputModelType>
    void importSpecialModel(const InputModelType &m);
    virtual void process() override; 
};

class SpecialSpecialModel : public SpecialModel
{
public:
    SpecialModel();
    template <typename InputModelType>
    void importSpecialSpecialModel(const InputModelType &m);
    virtual void process() override; 
};
Run Code Online (Sandbox Code Playgroud)

子模型是父模型的特例,可以存储在更简单的结构中,因此可以更快地处理.

我想要做的是根据model_type用户指定的输入参数来实例化模型,如下所示:

Model* model;
switch(model_type){
case 1:
    model = new SpecialModel;
    model->importSpecialModel(gm);
    break;
case 2: …
Run Code Online (Sandbox Code Playgroud)

c++ oop inheritance class

1
推荐指数
1
解决办法
109
查看次数

标签 统计

c++ ×2

inheritance ×2

c++-faq ×1

class ×1

object-slicing ×1

oop ×1