自定义类的实例作为另一个类的成员

时间:2012-03-10 18:30:10

标签: c++

我有一个类Game,一个类Player,一个名为“player”的Player实例是Game类的成员。

Game::Game() : player(screen, player_image, 390, 290) { }

朋友告诉我这样做,但我讨厌这样做,原因有两个: 1.当我将变量“screen”传递给该行上的Player时,屏幕未正确初始化,因此我必须稍后再次传递它。 2.看起来很糟糕,直到今天我才被告知这样做,我从未见过这样的代码。

那么,它有办法解决吗?谢谢。

在我的.hpp文件中,我有:

public: Player player;

1 个答案:

答案 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) {

  }