Вот такой код не получается скомпилировать, если не выносить функции в другой файл. На строку "m_v = B::GetV()" gcc ругается.
Хотя я не понимают, почему gcc не хочет в 2 этапа это сделать:
1) сначала пробежаться и составить объявления всех классов и функций
2) скомпилировать функции
class B;
class A {
public:
void DoSomething() {
m_v = B::GetV();
}
private:
int m_v;
};
class B {
public:
static int GetV() { return 1; }
void Do() {
A a; a.DoSomething();
}
};