没有类类型c++
does not have class type C++
这是我程序中的一个类!当我试图编译整个程序时,我得到这样的错误消息:
来源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(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
作为Scene的成员函数:
class Scene
{
// ...
Lake lake(int L);
但是在plot
中,您尝试使用lake
,就好像它是一个变量:
int plot()
{
lake.light_up();
将Lake lake(int L);
行替换为Lake lake= Lake(L);
Lake lake{L};
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 如何从C++中的依赖类型中获得它所依赖的类型
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 是否可以初始化不可复制类型的成员变量(或基类)
- 如何获取std::result_of函数的返回类型
- 从父命名空间重载类型
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 访问者访问变体并返回不同类型时出错
- 在VS2010-VS2015下编译时,如何使用decltype作为较大类型表达式的LHS
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 模板元程序查找相似的连续类型名称
- 是否可以从int转换为enum类类型
- 构造函数正在调用一个使用当前类类型的函数
- 我应该使用什么来代替void作为变体中的替代类型之一
- 类中的字符串不命名类型