Я не совсем уверен, но есть пара идей: вы не можете пересылать объявление typedefs, поэтому, если кто-то форвард объявил A
, это может вызвать проблемы (даже если это кажется несвязанным).
Я подозреваю, что настоящая проблема в том, что вы typedef
используете структуру, а не называете ее. Почти наверняка это приводит к тому, что компилятор присваивает ему разные связи (например, он получает разное оформленное имя в каждом файле), и он не может найти соответствующие функции.
Наконец, поскольку вы используете наследование, это должен быть C ++, поэтому вам, вероятно, вообще не следует использовать typedef
для struct
s.