Я запуталась:
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 ответ
Объявив конструктор в Scerne
Scene(int number) {
}
Вы фактически отключаете конструктор по умолчанию, который не принимает параметров. Вам либо нужно добавить конструктор Scene()
(без параметров) в класс сцены, либо ваш конструктор Director
должен выглядеть примерно так:
Director() : Scene(0)
{
}
Scene
, который должен иметь то же имя, что и класс, к которому он принадлежит - так что это действительно Scene(0)
.
Похожие вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .
Scene() {}
в разделеpublic
class Scene
, однако правильное решение может сильно отличаться и будет зависеть от того, что именно означаетScene
и какой семантике будет членscene