2012-04-23 14 views
0

以下のクラスは約20個のエラーを吐き出しますが、ベクトルの箇条書きをコメントアウトしても問題ありません。私はいくつかの明白なエラーがないのですか?C++ - エラーの原因となるベクトル

#include <vector> 
#include "SDL.h" 
#include "Bullet.h" 

#ifndef GAMEDATA_H 
#define GAMEDATA_H 

class GameData 
{ 
public: 
    GameData(); 
    ~GameData(); 
    GameData(const GameData& data); 
    GameData& operator=(const GameData* rhs); 

    vector<Bullet> bullets; 

    SDL_Surface* shipimage; 
    SDL_Surface* bulletimage; 
}; 

#endif 
+5

これまでの回答はおそらく正しいでしょうが、具体的なもので、正確なエラーメッセージを含める必要があります。それはほとんどの時間を変えます。 – crashmstr

答えて

7

vectorは、内部ネームスペースstdです。 vectornamespace stdで宣言されている

std::vector<Bullet> bullets; 
+0

うわー...私はそれを逃したと信じられない。ありがとう、今素晴らしい作品! – will

2

:あなたにbullets宣言を変更します。タイプをstd::vectorに変更してください。すべて正常です。あなたがstdメンバーを使用する場合は、ソースファイルで

、過度にあなたはそれが役に立つ宣言するかもしれません:

using namespace std; 

を他のコードの行の前に。これにより、std::修飾子なしでstdメンバーにアクセスすることができます。これはまさにあなたがほとんどの例の前にstd::を見ていない理由です - 彼らはこの指令を宣言します。

+4

'using namespace std;'は、 'vector'や' string'などのシンボルよりもはるかに多くのシンボルをグローバル名前空間に引っ張るので、これを解決するのは一般的に悪い方法です。 – Griwes

+0

私はまさにそのことを言っていました。例が通常どのようにそれを使用するのかを彼に伝えるのは良いことですが、 "namespaceを使う"指示を使用するようにアドバイスすることはできません。 – mfontanini

+1

私は、 'namespace'を使うことは、そのスコープが制限されている限り、大丈夫だと思います。私は時々関数スコープの中でそれを使用します。これはいつでも変更できる実装の詳細です。私はまた、(小さな)ソースファイルで 'namespace'を使うのは問題ないと思っています。実際の原因は、ヘッダーファイルに 'namespace'を使用していることです。これは、そのヘッダーを含むファイル内のグローバル名前空間を汚染するためです。 – ollb

関連する問題