没有类类型 C++
Posted
技术标签:
【中文标题】没有类类型 C++【英文标题】:does not have class type C++ 【发布时间】:2013-01-03 17:25:10 【问题描述】:这是我的课程中的一门课!当我尝试编译整个程序时,我收到如下错误消息:
main.cpp:174: error: '((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 Lake(int L);湖.light_up(); //这没有意义 Lake 是一个班级,我正在尝试在班级场景中创建她的对象湖 当然是一个类,但是lake(小写)是一个方法,你试图调用那个对象的方法,这条线是错误的,lake.light_up(); 提醒人们在不同情况下遇到此错误:我在将QVariant
类型转换为std::string
时遇到了这种情况:x.toString.toStringStd()
。我忘记了x.toString()
末尾的()
。这让我头上掉了好几根头发。
【参考方案1】:
你的问题在下面一行:
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 行。这称为成员初始化,以及如何构造成员变量。在faq 中了解更多信息。或者我发现的其他一些花絮 here 和 here。
【讨论】:
【参考方案2】:您将lake
声明为接受一个参数并返回Lake
的方法。然后你尝试通过lake.light_up()
调用它的方法。这会导致您观察到的错误。
要解决此问题,您要么需要将lake
声明为变量,例如Lake lake;
,或者你需要停止尝试调用它的方法。
【讨论】:
【参考方案3】:您已声明(但从未定义)lake
作为 Scene 的成员函数:
class Scene
// ...
Lake lake(int L);
但是在plot
中,您尝试使用lake
,就好像它是一个变量:
int plot()
lake.light_up();
【讨论】:
【参考方案4】:将Lake lake(int L);
行替换为Lake lake= Lake(L);
或者这样:Lake lakeL;
【讨论】:
以上是关于没有类类型 C++的主要内容,如果未能解决你的问题,请参考以下文章