c++ - 如何使用在另一个类中声明的结构

标签 c++ struct

我在头文件 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/

相关文章:

c++ - 我可以创建一个没有底层容器对象的空范围(迭代器对)吗?

c++ - 如何 extern 声明 extern "C"变量

具有可变大小和可变类型的 C++ 容器

c++ - 删除结构的指针是否也会删除结构内的指针?

c++ - 如何在 C++ 中创建结构的实例?

c++ - 从大量 ASCII 文件中读取数据的最快方法

c++ - 替代 PImpl Idiom - 优势与劣势?

c - 将数组结构作为数组传递

struct - 在 Julia 中以编程方式定义结构

c++ - 只读类变量 (C++) 和运算符重载