2013-04-24 83 views
1

我有幾個編譯錯誤可能盯着我,但我似乎無法解決它們。我已經去檢查括號,分號和#includes的解決方案,但沒有快樂。這是Visual Studio 2008中的C++。VS 2008爲C++編譯錯誤

錯誤是;

錯誤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 任何幫助表示讚賞,謝謝。

class Game 
{ 
    static int gameState; 

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

}; 
int Game::gameState = 0; 

並且如@Drew曼指出::

從Game.h.刪除#include "LogS.h"

回答

2

靜態成員變量must外部類中定義

Game.h不需要定義LogS來編譯。

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

LogS.h 需要定義Game來編譯。

+0

+1 ...我需要在某個地方,我仍然看到更多的錯誤。隨意直接添加我的答案給你。 :) – 2013-04-24 20:37:56

+0

「應該」?... – 2013-04-24 20:38:50

+0

@CaptainObvlious抱歉,英文不是我的母語,更新。 – taocp 2013-04-24 20:39:44