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

时间:2013-08-22 10:53:02

标签: c++ struct

我在头文件Player.h中声明了一个结构体,我想在另一个类中使用它,但我无法使它工作。我在其他课程中包含了Player.h,但它说

  

错误C2011:'Point':'struct'类型重新定义。

我错过了什么?

在Player.h中

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


class Player
{
    public:
    Player(void);
    ~Player(void);

    std::vector<Point> rocketVector;
    private:
};

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

#ifndef __PLAYER_H
#define __PLAYER_H

//content of Player.h

#endif