1

我刚刚重新组织了一个项目的代码,现在我遇到了我无法解决的错误。此标头包含在尝试编译的 .cpp 文件中。

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

我在声明 Entity::getBitMask() 时遇到了这些编译器错误:

错误 C2143:语法错误:缺少“;” 在'<'之前

错误 C2433:“Entity::bitset”:数据声明中不允许“虚拟”

错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

错误 C2238:';' 前面的意外标记

下一行也有更多类似的错误。似乎 bitset 没有被包括在内,但显然是?我不知道出了什么问题。WinMain.h 包含 windows.h,而 numDefs.h 不包含任何内容。

使用 MS Visual C++ 2008。

4

4 回答 4

8

将位集声明为std::bitset<MAX_SPRITE_PIXELS>.

于 2009-06-22T19:45:40.260 回答
5

bitset模板是在命名空间中定义的,std::因此您要么需要通过它的全名来引用它,要么在类声明之前std::bitset添加using namespace std;某个位置。

于 2009-06-22T19:45:41.867 回答
4

我认为您需要说 std::bitset。

于 2009-06-22T19:46:31.257 回答
0

看起来像“numDefs.h”中的错误

于 2009-06-22T19:45:19.373 回答