2009-06-22 58 views
1

我剛剛重組了一個項目的代碼,現在我收到了無法解析的錯誤。該頭文件包含在試圖編譯的.cpp文件中。在VC++中編譯頭文件時遇到問題

#include "WinMain.h" 
#include "numDefs.h" 
#include <bitset> 

class Entity 
{ 
public: 
    Entity(); 
    virtual ~Entity(); 

    virtual bitset<MAX_SPRITE_PIXELS> getBitMask(); 
    virtual void getMapSection(float x, float y, int w, int h, bitset<MAX_SPRITE_PIXELS>* section); 
}; 

我得到這些編譯器錯誤的實體:: getBitMask()的聲明:

錯誤C2143:語法錯誤:缺少 ';'前 '<'

錯誤C2433: '實體::位集': '虛擬' 不允許在數據聲明

錯誤C4430:缺少類型說明符 - 假定爲int。注意:C++不支持default-int

錯誤C2238:在';'之前的意外標記(s)

下一行還有更多類似的錯誤。看起來像bitset沒有被包括在內,但它顯然是?我無法弄清楚發生了什麼問題。 WinMain.h包含windows.h,並且numDefs.h不包含任何內容。

使用MS Visual C++ 2008

+0

什麼是MAX_SPRITE_PIXELS,它在哪裏定義? – 2009-06-22 19:45:27

+0

MAX_SPRITE_PIXELS在numDefs.h中定義 – 2009-06-22 20:26:25

回答

8

錯誤聲明位集作爲std::bitset<MAX_SPRITE_PIXELS>

0

看起來像在 「numDefs.h」

5

bitset模板在std::命名空間中定義,所以你要麼需要通過它的全名std::bitset引用,或在類聲明之前添加using namespace std;地方。

4

我認爲你需要說std :: bitset。