簡體   English   中英

沒有類型C ++

[英]does not have class type C++

這是我的課程中的一個課程! 當我嘗試編譯整個程序時,我收到如下錯誤消息:

main.cpp:174:錯誤:'((Scene *)this) - > Scene :: lake'沒有類類型

來源

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作為參數。

如果您在構建lake對象時嘗試傳入L,那么我認為您希望代碼看起來像這樣:

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行。 這稱為成員初始化,以及它如何構造成員變量。 在這個常見問題中閱讀更多相關信息。 或者我在這里這里找到的其他一些花絮。

您將lake聲明為一個接受一個參數並返回Lake 然后,您嘗試通過lake.light_up()調用方法。 這會導致您觀察到的錯誤。

要解決這個問題,你需要將lake變成一個變量,例如Lake lake; ,或者你需要停止嘗試在其上調用方法。

您已聲明(但從未定義) lake作為場景的成員函數:

class Scene
{
    // ...
    Lake lake(int L);

但是在plot ,你嘗試使用lake ,就好像它是一個變量:

int plot()
{
    lake.light_up();

更換Lake lake(int L);Lake lake(int L); Lake lake= Lake(L); 或者用這個: Lake lake{L};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM