LINUX.ORG.RU

История изменений

Исправление m0rph, (текущая версия) :

Используй агрегацию по указателю/ссылке, а не по значению и неполные определения типов. Что-то вроде:

aclass.h

#ifndef ACLASS_H
#define ACLASS_H


class B;

class A {
public:
private:
    B* parent_;
};

#endif

bclass.h

#ifndef BCLASS_H
#define BCLASS_H


class A;

class B {
public:
private:
    std::vector<A*> children_;
};

#endif

Ну а в cpp-файлах просто сделаешь #include «aclass.h» и #include «bclass.h» соответственно.

Исходная версия m0rph, :

Используй агрегацию по указателю/ссылке, а не по значению и неполные определения типов. Что-то вроде:

aclass.h

#ifndef ACLASS_H
#define ACLASS_H


class B;

class A {
public:
private:
    B* parent_;
};

bclass.h

#ifndef BCLASS_H
#define BCLASS_H


class A;

class B {
public:
private:
    std::vector<A*> children_;
};

Ну а в cpp-файлах просто сделаешь #include «aclass.h» и #include «bclass.h» соответственно.