我感到困惑:
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
类型的成员属性,我可以随时更改。我做错了什么?
答案 0 :(得分:5)
在Scerne
Scene(int number) {
}
您实际上是禁用了不带参数的默认构造函数。您需要将Scene()
(无参数)构造函数添加到场景类中,或者您的Director
构造函数需要看起来像这样:
Director() : Scene(0)
{
}