VS 2008的C ++编译错误

时间:2013-04-24 20:31:16

标签: c++ visual-studio

我有几个编译错误可能正在盯着我,但我似乎无法解决它们。我已经开始检查括号,分号和#includes的解决方案,但没有快乐。这是在使用C ++的VisualStudio 2008中。

错误是;

  

错误1错误C2653:'Game':不是类或命名空间名称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 感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

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

class Game
{
   static int gameState;

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

};
int Game::gameState = 0;

正如@Drew Dormann指出的那样:

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

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

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

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