没有类型C ++

时间:2013-01-03 17:25:10

标签: c++

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

  

main.cpp:174:错误:'((场景*)这个) - >场景::湖'没有班级类型

来源

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;
    }
};

4 个答案:

答案 0 :(得分:17)

您的问题在以下一行:

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中了解有关它的更多信息。或者我发现herehere的其他一些花絮。

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

您已声明(但从未定义)lake作为Scene的成员函数:

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

但是在plot中,您尝试使用lake,就像它是变量一样:

int plot()
{
    lake.light_up();

答案 3 :(得分:0)

将行Lake lake(int L);替换为Lake lake= Lake(L); 或与此:Lake lake{L};