抽象类指针参数的默认值

问题描述

我正在尝试做这样的事情:

class Movement {
public:
    virtual void move() = 0;
};

class Walk : public Movement {
public:
    void move() { cout << "walking"; }
};

class Run : public Movement {
public:
    void move() { cout << "run"; }
};
class Animal {
public:
    virtual void print();
};

class Human : public Animal {
public:
    void print() { cout << "Human"; }
};

class Lion : public Animal {
public:
    void print() { cout << "Lion"; }
};
class Model {
    Animal* animal;
    Movement* movement;

public:
    Model(Animal* animal = new Human(),Movement* movement = new Walk()) {
        this->animal = animal;
        this->movement = movement;
    }
    void print() {
        cout << "This Model consist of one: ";
        animal->print();
        cout << ",which is: ";
        movement->move();
    }
};
int main() {
    Model first = Model(),second = Model(new Lion(),new Run());
    first.print();
    cout << endl;
    second.print();
    return 0;
}

我们如何设置抽象类指针的默认值以及如何将它们作为像main这样的参数传递给它?

我也希望能够像这样只通过单行从main传递参数,而无需事先进行初始化。

任何人都可以帮助我解决C ++中的问题吗?

我尝试了很多,但没有运气。

我正在寻找一种解决方法,可以将抽象类用作其他类的参数。

我知道不能将对象分配给指针,我只是不知道该怎么做才能满足我的要求,即抽象类作为具有默认值的参数。

这是我最近一次尝试使用精确代码,但是不幸的是,使用new,有人知道如何摆脱new并达到预期的结果吗?

注意:
我的实际代码非常复杂,基本上是使用抽象类实现多态并将这些抽象类作为参数传递给具有默认参数的另一个类,如果有 ANY 其他方式来执行类似操作,我将非常感谢帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)