Я пытаюсь объявить и использовать класс B внутри класса A
и определите B вне A.
Я точно знаю, что это возможно, потому что Бьярне Страуструп
использует это в своей книге "Язык программирования C ++"
(стр. 293, например, классы String и Srep).
Так что это мой минимальный кусок кода, который вызывает проблемы
class A{
struct B; // forward declaration
B* c;
A() { c->i; }
};
struct A::B {
/*
* we define struct B like this becuase it
* was first declared in the namespace A
*/
int i;
};
int main() {
}
Этот код выдает следующие ошибки компиляции в g ++:
tst.cpp: In constructor ‘A::A()’:
tst.cpp:5: error: invalid use of undefined type ‘struct A::B’
tst.cpp:3: error: forward declaration of ‘struct A::B’
Я пытался взглянуть на C ++ Faq, и у меня было закрытое окно здесь и здесь но
это не относится к моей ситуации.
Я также прочитал это отсюда, но это не решает мою проблему.
И gcc, и MSVC 2005 выдают ошибки компилятора на этом