Как реализовать Наследование: ошибка: конфликтующее объявление 'typedef struct - PullRequest
0 голосов
/ 21 мая 2018

У меня есть:

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 голосов
/ 21 мая 2018

Я использовал более простой подход (избегайте нескольких шагов в одной строке с этими структурами) и у меня не было проблем со следующими файлами:

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 (), я думаю, мы не можем ему помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...