1

我有几个编译错误可能正在盯着我看,但我似乎无法解决它们。我尝试使用括号、分号和#includes 检查解决方案,但没有任何乐趣。这是在带有 C++ 的 VisualStudio 2008 中。

错误是;

错误 1 ​​错误 C2653:“游戏”:不是类或命名空间名称 logs.h 34

错误 2 错误 C3861:“SetState”:找不到标识符 logs.h 34

在 logs.h 中找到

Game::SetState(2);

完整的标题;

# pragma once

#include "DarkGDK.h"
#include "Screen.h"

class LogS:public Screen
{
    public:
        LogS():Screen()
        {

            //to be added
        }
        void SetBgrnd();
        void Skip();
};

void LogS::SetBgrnd()
{
    s_sprite_id = 1;
    dbShowSprite(11);
    Show();
}

void LogS::Skip()
{
    if(dbReturnKey())
    {
        dbHideAllSprites();
        Game::SetState(2);
    }
}

以及应该使用静态函数的 Game.h;

# pragma once

#include "DarkGDK.h"
#include "LogS.h"

class Game
{
    static int gameState;

    public:
        Game();
        static void SetState(int gameState);

};

Game::Game()
{
    LoadImages();
    SetState(1);
}

inline void Game::SetState(gameState& g)
{
    gameState = g;
}

编辑了不相关的位。如果你不知道,我是新手:P 任何帮助表示赞赏,谢谢。

4

1 回答 1

2

静态成员变量must在类外定义:

class Game
{
   static int gameState;

public:
    Game();
    static void SetState(int gameState);

};
int Game::gameState = 0;

正如@Drew Dormann 所指出的:

#include "LogS.h"从 Game.h 中删除。

Game.h 不需要LogS编译的定义。

添加#include "Game.h"到 LogS.h。

LogS.h需要定义Game才能编译。

于 2013-04-24T20:35:26.707 回答