引起误差的C++矢量

引起误差的C++矢量,c++,vector,C++,Vector,下面的类给出了大约20个错误,但是如果我注释掉矢量项目符号,看起来一切都很好。我是否遗漏了一些明显的错误 #include <vector> #include "SDL.h" #include "Bullet.h" #ifndef GAMEDATA_H #define GAMEDATA_H class GameData { public: GameData(); ~GameData(); GameData(const GameData& data)

下面的类给出了大约20个错误,但是如果我注释掉矢量项目符号,看起来一切都很好。我是否遗漏了一些明显的错误

#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
向量位于命名空间标准内。请将您的项目符号声明修改为:

std::vector<Bullet> bullets;
向量在名称空间std中声明。将类型更改为std::vector,一切都将正常

在源文件中,如果过度使用std成员,您可能会发现声明:

using namespace std;

在任何其他代码行之前。这将允许您在不使用std::限定符的情况下访问std成员。这正是为什么您在大多数示例前面看不到std::的原因-它们声明了此指令。

到目前为止的响应可能是正确的,但您需要具体说明,并包含您得到的确切错误消息。它在大多数情况下都会产生不同;这通常是一个糟糕的解决方法,因为它会将比向量、字符串等更多的符号引入全局名称空间。最好告诉他为什么示例通常使用它,但不要建议他使用using namespace指令。我认为使用namespace是可以的,只要它的范围受到限制。我有时在函数范围内使用它,它只是我可以随时更改的另一个实现细节。我还认为在小的源文件中使用名称空间是可以的,因为在发生冲突时更改名称空间仍然很便宜。真正的罪魁祸首是在头文件中使用名称空间,因为这将污染包含该头文件的任何文件中的全局名称空间。