У меня есть два класса на тот же .cpp, как что:ошибка: доступ к члену в неполный тип: прямую декларация
//forward
class B;
class A {
void doSomething(B * _b) {
_b->add();
}
};
class B {
void add() {
...
}
};
Форвард не работает, я не могу скомпилировать.
Я получил эту ошибку:
error: member access into incomplete type 'B'
note: forward declaration of 'B'
Я использую лязг компилятор (лязг-500.2.79).
Я не хочу использовать несколько файлов (.cpp и .hh), я хотел бы закодировать только один .cpp.
Я не могу написать класс B до класса А.
У вас есть какие-либо идеи для решения моей проблемы?
С уважением.
Переместить тело функции 'A :: doSomething' после определения' class B'. – dyp
Я говорю об этом в потоке: «Я не могу написать класс B перед классом A.». Я использую пример кода для объяснения моей проблемы. В моем реальном коде у меня есть указатель на мой класс B в моем классе A. Итак, если я напишу класс B перед классом A, проблема будет такой же! – LOLKFC
Следует избегать имен, начинающихся с подчеркивания, таких как '_b'. Они могут использоваться библиотекой компилятора/стандарта в глобальном пространстве имен; кроме того, вы должны ** никогда не использовать идентификаторы, начинающиеся с символа подчеркивания, за которым следует буква в верхнем регистре, например '_B' (также зарезервировано). – dyp