1

ヘッダーでベクトルを宣言しようとすると、エラーの長い文字列を受け取り続けます。私はしばらく見回しましたが、解決策を見つけることができません。

エラーは次のとおりです。

1>コンパイル中...1>game.cpp 1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38):エラーC2143:構文エラー:欠落している';' '<' 1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38)の前:エラーC2071:'input :: vector':不正なストレージクラス1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38):エラーC4430:型指定子がありません-intと見なされます。注:C++はdefault-int1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38)をサポートしていません:エラーC2238:';'の前に予期しないトークンがあります 1> main.cpp 1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38):エラーC2143:構文エラー:';'がありません '<' 1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38)の前:エラーC2071:'input :: vector':不正なストレージクラス1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38):エラーC4430:型指定子がありません-intと見なされます。注:C++はdefault-int1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38)をサポートしていません:エラーC2238:';'の前に予期しないトークンがあります 1> input.cpp 1> c:\ users \ legacyblade \ documents \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38):エラーC2143:構文エラー:欠落している';' '<' 1> cの前:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38):エラーC2071:'input :: vector':不正なストレージクラス1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38):エラーC4430:型指定子がありません-intと見なされます。注:C++はdefault-int1> c:\ users \ legacyblade \ document \ visual studio 2008 \ projects \ fourswords \ fourswords \ input.h(38)をサポートしていません:エラーC2238:';'の前に予期しないトークンがあります

ソースコードは次のとおりです。

#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

ベクトルの名前空間を使用する必要があります。vectorの接頭辞std::

また、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 に答える