我在头文件 Player.h 中声明了一个结构,我想在另一个类中使用它,但我无法让它工作。我在另一个类中包含了 Player.h 但它说
error C2011: 'Point' : 'struct' type redefinition.
我错过了什么?
在 Player.h 中
struct Point {
int x, y;
char name[20];
};
class Player
{
public:
Player(void);
~Player(void);
std::vector<Point> rocketVector;
private:
};
最佳答案
你的头文件需要include guards .
#ifndef MY_HEADER // or some other unique name
#define MY_HEADER
struct Point {
int x, y;
char name[20];
};
class Player
{
public:
Player(void);
~Player(void);
std::vector<Point> rocketVector;
private:
};
#endif
include guards 的目的是防止在翻译单元中多次包含一个 header (直接或间接通过其他 header )。当你说 #include "something"
时,预处理器基本上只是将头文件粘贴到指令的位置。如果这种情况发生多次(如您的情况),您将获得同一个类的多个定义或 header 中定义的任何其他内容。
关于c++ - 如何使用在另一个类中声明的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18378445/