1

整天去谷歌旅行,我一直在为此头疼。我有一个主对象,需要在其构造函数中创建其他几个对象,主对象在其构造函数中获取变量,这些变量将传递给它创建的对象。

class WorldManager{
  public:
  WorldManager(int x, int y, int z){
    //do stuff
  }
}

class GameManager{
  public:
  WorldManager world;
  GameManager(int x, int y, int z){
    world(x,y,z);
  }
}

我收到错误

error: no matching function for call to `GAMEMANAGER::GraphicsManager(HWND__*&, int&, int&)'

它一直有效,直到我在世界级的构造函数中要求 args

4

1 回答 1

3

我认为你想要:

class GameManager{
public:
    WorldManager world;
    GameManager(int x, int y, int z) : world(x, y, z) { }
};

奇怪的冒号被称为初始化列表,它构建了成员对象和父类以及一堆其他的东西。


如果您有多个要构建的对象,请将它们添加到列表中:

class GameManager{
public:
    WorldManager world1, world2;
    GameManager(int x, int y, int z) : world1(x, y, z), world2(x, y, z) { }
};
于 2012-11-24T05:31:10.850 回答