Re: Пример кода
От: kov_serg Россия  
Дата: 25.12.21 13:07
Оценка:
Здравствуйте, 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>Может я что-то не понимаю ?

Возможно стоит вопрос сформулировать точнее. Что именно вас не устраивает?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.