我有一个类Game,一个类Player,一个名为“player”的Player实例是Game类的成员。
Game::Game() : player(screen, player_image, 390, 290) { }
朋友告诉我这样做,但我讨厌这样做,原因有两个: 1.当我将变量“screen”传递给该行上的Player时,屏幕未正确初始化,因此我必须稍后再次传递它。 2.看起来很糟糕,直到今天我才被告知这样做,我从未见过这样的代码。
那么,它有办法解决吗?谢谢。
在我的.hpp文件中,我有:
public: Player player;
答案 0 :(得分:4)
我们需要为您的类型查看更多代码,以便为您提供明确的答案。但是,将其他成员字段传递给其他成员字段的ctor也没有错,只要它已经初始化了。例如
class Game {
Screen screen;
PlayerImage player_image;
Player player;
Game() :
screen(42),
player(screen, player_image, 390, 290) {
}
};
注意:初始化列表的执行顺序取决于class
中声明字段的顺序,而不是初始化列表中列出的顺序。因此,在类型中以依赖顺序声明字段非常重要。
编辑
OP请求标头和cpp文件之间的分割
部首:
class Game {
Screen screen;
PlayerImage player_image;
Player player;
Game();
};
CPP文件
Game::Game() :
screen(42),
player(screen, player_image, 390, 290) {
}