Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 没有类类型C++;_C++ - Fatal编程技术网

C++ 没有类类型C++;

C++ 没有类类型C++;,c++,C++,这是我课程中的一节课!当我试图编译整个程序时,会收到如下错误消息: main.cpp:174:错误:“((场景*)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&l

这是我课程中的一节课!当我试图编译整个程序时,会收到如下错误消息:

main.cpp:174:错误:“((场景*)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;
    }
};
课堂场景
{
国际L区;
背景背景;
湖泊(国际L);
溜冰者溜冰者(国际区);
公众:
场景(内部L,内部距离)
{

cout将
lake
声明为一个方法,该方法接受一个参数并返回
lake
。然后尝试通过
lake.light\u up()
调用该方法。这会导致您观察到的错误


要解决此问题,您需要将
lake
声明为变量,例如
lake-lake;
,或者您需要停止尝试对其调用方法。

您的问题在以下行中:

Lake lake(int L);
如果您只是试图声明一个
Lake
对象,那么您可能需要删除
(int L)
。您现在拥有的是声明一个函数
Lake
,该函数返回
Lake
,并接受
int
作为参数

如果您在构建
对象时试图传入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;
    }
.....
课堂场景
{
国际L区;
背景背景;
湖泊;
溜冰者溜冰者;
公众:
场景(内部L,内部距离):
L(L),
区(区),
湖(L),
溜冰者(区)
{
cout您已声明(但从未定义)
lake
为场景的成员函数:

class Scene
{
    // ...
    Lake lake(int L);
但在
plot
中,您尝试使用
lake
,就好像它是一个变量一样:

int plot()
{
    lake.light_up();

将行
Lake-Lake(int-L);
替换为
Lake-Lake=Lake(L);

或者说:
Lake Lake{L};

Lake是一个方法,而不是一个变量Lake Lake(int L);Lake.light\u up()//这并不是说senseLake是一个类,我正在尝试在类场景中创建她的对象Lake是一个类,但是Lake(lowcase)是一个方法,你试图调用该对象的一个方法,这行是错误的,Lake.light\u up();作为在不同情况下出现此错误的人的提醒:我在将
QVariant
类型转换为
std::string
时遇到了这种情况:
x.toString.toStringStd()
。我忘记了
x.toString()
末尾的
()
。这花了我不少时间。