在通过构造函数传递变量的对象中创建对象

create objects in object passing variables through constructor

本文关键字:对象 创建对象 变量 构造函数      更新时间:2023-10-16

整天都在用谷歌的旅行来敲打我的头。我有一个主对象,需要在其构造函数中创建其他几个对象,主对象在其构造函数中获取变量,这些变量传递给它创建的对象。

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&)'

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

我认为你想要:

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) { }
};