需要构造函数参数的C++类成员

Vol*_*ort 0 c++

我感到困惑:

Director.cpp

class Director {

  public:
  Director() {

  }

  runScene(Scene _scene) {
    scene = _scene;
  }

  private:
  Scene scene; // <-- Private member "scene" of type Scene.

};
Run Code Online (Sandbox Code Playgroud)

Scene.cpp

class Scene {

  public:
  Scene(int number) {


  }

}
Run Code Online (Sandbox Code Playgroud)

g ++说

没有用于调用'Scene :: Scene()'的匹配函数

它似乎正在尝试初始化scene,这是无法完成的,因为没有构造函数不带参数.我还是C++的新手 - 为什么要尝试初始化那个私有成员?

我不确定发生了什么.我尝试更改Scene scene;Scene scene(int);,这只会导致runScene抛出错误,因为这会使编译器认为这scene实际上是一个函数.

我想要的只是我的类有一个类型的成员属性Scene,我可以随时更改.我究竟做错了什么?

小智 5

通过声明构造函数 Scerne

Scene(int number) {

}
Run Code Online (Sandbox Code Playgroud)

你实际上是禁用没有参数的默认构造函数.您需要向Scene()场景类添加(无参数)构造函数,否则Director构造函数需要看起来像这样:

Director() : Scene(0)
{
}
Run Code Online (Sandbox Code Playgroud)