C++ C++;需要构造函数参数的类成员
我感到困惑: 总监。cppC++ 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) { } }
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)
。