如何实现继承:错误:冲突声明'typedef结构

时间:2018-05-21 18:22:48

标签: c oop inheritance struct

我有:

my_entity.h

typedef struct {

    long _id;
    char *_myEntityType;
    char *_myEntitySubType;

    long _myEntityGUID;
    long _myEntityOwnerGUID;
    long _myEntityContainerGUID;

} MyEntity;

typedef struct {

    MyEntity *_myEntity;

} MyContainerEntity;  

尝试运行项目时出现以下错误:

/my_entity.h: error: conflicting declaration ‘typedef struct MyContainerEntity MyContainerEntity’
 } MyContainerEntity;
   ^

我错过了什么或做错了什么?

提前谢谢大家。

1 个答案:

答案 0 :(得分:-3)

我使用了一种更简单的方法(避免使用结构在一行中执行多个步骤)并且对以下文件没有任何问题:

my_entity.h

struct EntityStruct {
    long _id;
    char *_myEntityType;
    char *_myEntitySubType;
    long _myEntityGUID;
    long _myEntityOwnerGUID;
    long _myEntityContainerGUID;
} ;

typedef struct EntityStruct MyEntity ;
typedef struct {
    MyEntity *pointer2MyEntity;
} MyContainerEntity;

的main.c

#include <stdio.h>
#include "my_entity.h"

int main()
{
    MyEntity firstEntity;
    MyContainerEntity containerEntity;
    containerEntity.pointer2MyEntity = &firstEntity;
    return 0;
}

my_entity.h的替代内容

typedef struct EntityStruct {
   long _id;
   char *_myEntityType;
   char *_myEntitySubType;
   long _myEntityGUID;
   long _myEntityOwnerGUID;
   long _myEntityContainerGUID;
} MyEntity ;

typedef struct {
   MyEntity *pointer2MyEntity;
} MyContainerEntity; 

好吧,我承认我弄错了,我认为有必要为结构提供一个单独的不同名称,但即使是OP提供的代码也是可行的(我最初没有测试它,因为我上去编辑它并仅测试了我的版本)。因为他没有为.h和main()提供完整的文件,我想我们无法帮助他。