[英]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.