Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;需要构造函数参数的类成员_C++ - Fatal编程技术网

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

C++ C++;需要构造函数参数的类成员,c++,C++,我感到困惑: 总监。cpp class Director { public: Director() { } runScene(Scene _scene) { scene = _scene; } private: Scene scene; // <-- Private member "scene" of type Scene. }; class Scene { public: Scene(int number) { } }

我感到困惑:

总监。cpp

class Director {

  public:
  Director() {

  }

  runScene(Scene _scene) {
    scene = _scene;
  }

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

};
class Scene {

  public:
  Scene(int number) {


  }

}
g++说

调用“Scene::Scene()”时没有匹配的函数

它似乎正在尝试初始化
场景
,但由于没有不带参数的构造函数,因此无法进行初始化。我对C++仍然是新的——为什么它试图初始化那个私有成员?< /P> 我不知道发生了什么事。我试着改变
场景到<代码>场景(int),这只会导致
runScene
抛出错误,因为这会使编译器认为
scene
实际上是一个函数


我只希望我的类有一个
Scene
类型的成员属性,我可以随时更改它。我做错了什么?

Scerne

Scene(int number) {

}
您实际上禁用了不带参数的默认构造函数。您需要将
Scene()
(无参数)构造函数添加到场景类中,或者
Director
构造函数需要如下所示:

Director() : Scene(0)
{
}

通过在
Scerne

Scene(int number) {

}
您实际上禁用了不带参数的默认构造函数。您需要将
Scene()
(无参数)构造函数添加到场景类中,或者
Director
构造函数需要如下所示:

Director() : Scene(0)
{
}

有大量的复制品。基本上,使用构造函数初始化列表:Director():scene(42){}最简单的解决方案是在
类scene
公共部分声明
scene(){}
,但是,正确的解决方案可能会有很大的不同,这取决于
场景
类的确切含义以及
场景
成员的语义有很多重复项。基本上,使用构造函数初始化列表:Director():scene(42){}最简单的解决方案是在
类scene
公共部分声明
scene(){}
,但是,正确的解决方案可能会大不相同,这取决于
场景
类的确切含义以及
场景
成员的语义。不,您正在调用
场景
的构造函数,该构造函数必须与它所属的类具有完全相同的名称-因此它确实是
场景(0)
。不,您正在调用
Scene
的构造函数,该构造函数必须与它所属的类具有完全相同的名称-因此它确实是
Scene(0)