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

How to use a struct declared in another Class

本文关键字:声明 结构 何使用 另一个      更新时间:2023-10-16

我已经在头文件Player.h中声明了一个结构,我想在另一个类中使用它,但我无法使它工作。我已经把Player.h列入了另一个类别,但上面写着

错误C2011:"点":"结构"类型重新定义。

我错过了什么?

在Player.h 中

struct Point {  
    int x, y;
    char name[20]; 
};

class Player
{
    public:
    Player(void);
    ~Player(void);
    std::vector<Point> rocketVector;
    private:
};

您的头文件需要包含保护

#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 "something"时,预处理器基本上只是将头文件粘贴在指令的位置。如果这种情况发生多次(就像您的情况一样),您将获得同一类的多个定义或头中定义的任何其他定义。

您只需要在头文件的开头添加#pragma once,或者著名的技巧:

#ifndef __PLAYER_H
#define __PLAYER_H
//content of Player.h
#endif