1. ホーム
  2. c++

[解決済み] はクラスタイプ C++ を持ちません。

2022-02-16 21:54:47

質問

これは私のプログラムの1つのクラスです。プログラム全体をコンパイルしようとすると、次のようなエラーメッセージが表示されます。

main.cpp:174: error: '((Scene*)this)->Scene::lake' does not have class type.

ソース

class Scene
{
    int L,Dist;
    Background back ;
    Lake lake(int L);
    IceSkater iceskater(int Dist);
public :
    Scene(int L, int Dist)
    {
        cout<<"Scene was just created"<<endl;
    }

    ~Scene()
    {
        cout<<"Scene is about to be destroyed !"<<endl;
    }
};

解決方法は?

問題は次の行にあります。

Lake lake(int L);

を宣言するだけなら Lake オブジェクトを削除したい場合、おそらく (int L) . そこであなたがしていることは、関数を宣言することです lake を返します。 Lake を受け取り int をパラメータとする。

を構築する際にLを渡そうとしている場合。 lake オブジェクトを作成する場合、次のようなコードにしたいと思います。

class Scene
{
    int L,Dist;
    Background back ;
    Lake lake;
    IceSkater iceskater;
public :
    Scene(int L, int Dist) :
        L(L),     
        Dist(Dist),
        lake(L),
        iceskater(Dist)
    {
        cout<<"Scene was just created"<<endl;
    }
.....

コンストラクタに追加された4行に注目してください。 これはメンバの初期化と呼ばれるもので、メンバ変数を作成する方法です。 詳しくは次の記事をご覧ください。 よくある質問 . また、私が見つけた他の豆知識もあります。 こちら そして こちら .