Получение ошибки компилятора при удалении typedef в структуре C ++ - PullRequest
0 голосов
/ 16 августа 2011

Изначально у меня было следующее.

struct A: public B
{                 
};

typedef struct A C;

Теперь я изменил это на

typedef struct: public B
{                 
} C;

и я получаю ошибку ссылки для всех функций, получающих

fun(C*)

в качестве параметра.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 16 августа 2011

Я не совсем уверен, но есть пара идей: вы не можете пересылать объявление typedefs, поэтому, если кто-то форвард объявил A, это может вызвать проблемы (даже если это кажется несвязанным).

Я подозреваю, что настоящая проблема в том, что вы typedef используете структуру, а не называете ее. Почти наверняка это приводит к тому, что компилятор присваивает ему разные связи (например, он получает разное оформленное имя в каждом файле), и он не может найти соответствующие функции.

Наконец, поскольку вы используете наследование, это должен быть C ++, поэтому вам, вероятно, вообще не следует использовать typedef для struct s.

...