我正在使用Decorator设计模式。装饰者继承自Game类并以游戏为参数。
class Game {
protected:
int a;
public:
~Game();
Game(int a);
};
class Decorator : public Game{
Game *m_game;
public:
Decorator(Game *game):m_game(game){}
};
然后它返回错误:错误:'Decorator'的构造函数必须显式初始化没有默认构造函数的基类'Game' 装饰者(游戏*游戏):m_game(游戏){} ^
我该如何解决?
答案 0 :(得分:0)
基类的构造函数需要一个参数。 这将有所帮助(用相应的值替换0)。
Decorator(Game *game) : Game(0), m_game(game) {}
在C ++中,如果你明确定义了一个构造函数,编译器就不再生成隐式的无参数了。