0

私は混乱しています:

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いつでも変更できる type のメンバ プロパティを持つクラスだけです。私は何を間違っていますか?

4

1 に答える 1

5

コンストラクターを宣言することにより、Scerne

Scene(int number) {

}

パラメータを取らないデフォルトのコンストラクタを効果的に無効にしています。Scene()(パラメーターなし) コンストラクターをシーン クラスに追加するか、Directorコンストラクターを次のようにする必要があります。

Director() : Scene(0)
{
}
于 2013-10-20T09:36:32.003 に答える