Библиотека, которую я использую, имеет класс G и класс S, который наследует G.
Мне нужно было добавить к ним функциональность, поэтому я обернул G и S, скорее, я унаследовал от них создание Gnew и Snew соответственно.
Итак, мое наследство:
G --> Gnew
|
v
S --> Snew
Но я хочу использовать Gnew в Snew, и когда я пытаюсь включить заголовок Gnew (в файле реализации Snew), чтобы использовать его ... охранники включения маскируют определение Gnew в Snew ???
Как я могу использовать Gnew в Snew? Прямо сейчас, компилятор даже не позволяет мне объявлять Gnew в файле определения Snew (что для меня не имеет смысла), если я не пересылаю объявление внутри класса.
В Snew (если я пересылаю объявление до определения Snew), у меня есть:
...
Gnew *g;
Ошибка:
error: ISO C++ forbids declaration of ‘Gnew’ with no type
Если я поменяю Snew на:
...
class Gnew *g;
Gnew *g;
Ошибка:
error: invalid use of undefined type ‘struct Snew::Gnew’
Примечание:
Я пытался абстрагироваться от проблемы, поэтому я закрываю это и снова открываю лучшую формулировку вопроса ...