我有一个有两个不同类对象的类作为成员。我想用另一个成员初始化其中一个成员,但到目前为止我似乎无法使其工作。
例如,Game game(&input);
包含必须指定类型的错误。我该怎么做呢?
class KApp {
private:
Input input;
Game game(&input);
};
class Input {
Input() {};
};
class Game {
private:
Input* input;
public:
Game(Input & inp) : input(&inp) {}
Game(Input* inp) : input(inp) {}
};
答案 0 :(得分:1)
尝试这样的事情
class KApp {
private:
Input input;
Game game;
KApp() : game(&input) {}
};
Game game(&input);
发生的事情是,您正在声明成员game
,编译器已将其作为函数声明并且抱怨该参数没有一种类型。
这样,您就可以在KApp的构造函数中显式调用Game::Game(Input*)
(此时应使用默认构造函数初始化输入)。
编辑 - 输入* vs输入&