1

当我尝试在标头中声明一个向量时,我不断收到一长串错误。我已经环顾了一段时间,但找不到解决方案。

以下是错误:

1>正在编译... 1>game.cpp 1>c:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38):错误 C2143:语法错误:缺少 ';' 在'<' 1>c:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38) 之前:错误 C2071:'input::vector':非法存储类 1>c:\ users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int 1>c:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38) : error C2238: unexpected token(s) before ';' 1>main.cpp 1>c:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38):错误 C2143:语法错误:缺少 ';' 在'<' 1>c:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38) 之前:错误 C2071:'input::vector':非法存储类 1>c:\ users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int 1>c:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38) : error C2238: unexpected token(s) before ';' 1>input.cpp 1>c:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38):错误 C2143:语法错误:缺少“;” 在'<' 1>c 之前:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38):错误 C2071:'input::vector':非法存储类 1>c:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38):错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int 1>c:\users\legacyblade\documents\visual studio 2008\projects\fourswords\fourswords\input.h(38) : error C2238: unexpected token(s) before ';'

这是源代码:

#include <vector>
#include <SFML/Graphics.hpp>

#ifndef _input_h
#define _input_h

class input
{
public:
      input();
     void update();

//----input keys----//

    // Directions
    bool upPress;
    bool downPress;
    bool leftPress;
    bool rightPress;

    // Actions
    bool aPress;
    bool bPress;
    bool jumpPress;
    bool shieldPress;

    // Menu
    bool startPress;
    bool screenshotPress;
    bool fullscreenPress;

//------------------//

private:
    extern vector<sf::Keyboard::Key> keyBindings;

};

#endif

无论有没有 extern,它都会给我同样的错误,即使我改变了向量中事物的类型(甚至是 int)。

非常感谢您的阅读。如果有人可以提供帮助,那就太好了。我需要向量来做我想做的事情。不知道为什么给我带来这么大的麻烦。同一地点的任何其他类型的变量都不会导致错误。只有向量。

4

3 回答 3

2

只是补充一下,您需要声明中的命名空间,因为我们通常不希望使用“使用命名空间 std”来膨胀头文件。因此,如果您在其他地方看到在其前面没有 std:: 的向量,则可能在其他地方声明了命名空间。

于 2012-08-21T21:33:12.093 回答
1

您需要使用向量的命名空间。前缀vectorstd::.

此外,extern在语义上对类成员没有任何意义。去掉它。

std::vector<sf::Keyboard::Key> keyBindings;
于 2012-08-21T21:24:26.177 回答
0
extern vector<sf::Keyboard::Key> keyBindings;

应该

std::vector<sf::Keyboard::Key> keyBindings;
于 2012-08-21T21:22:53.497 回答