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