引起误差的C++矢量
下面的类给出了大约20个错误,但是如果我注释掉矢量项目符号,看起来一切都很好。我是否遗漏了一些明显的错误引起误差的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)
#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是可以的,只要它的范围受到限制。我有时在函数范围内使用它,它只是我可以随时更改的另一个实现细节。我还认为在小的源文件中使用名称空间是可以的,因为在发生冲突时更改名称空间仍然很便宜。真正的罪魁祸首是在头文件中使用名称空间,因为这将污染包含该头文件的任何文件中的全局名称空间。