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

时间:2013-10-20 09:31:56

标签: c++

我感到困惑:

Director.cpp

class Director {

  public:
  Director() {

  }

  runScene(Scene _scene) {
    scene = _scene;
  }

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

};

Scene.cpp

class Scene {

  public:
  Scene(int number) {


  }

}

g ++说

  

没有用于调用'Scene :: Scene()'

的匹配函数

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

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

我想要的只是我的班级有Scene类型的成员属性,我可以随时更改。我做错了什么?

1 个答案:

答案 0 :(得分:5)

Scerne

中声明构造函数
Scene(int number) {

}

您实际上是禁用了不带参数的默认构造函数。您需要将Scene()(无参数)构造函数添加到场景类中,或者您的Director构造函数需要看起来像这样:

Director() : Scene(0)
{
}