есть ли способ объявить это не только для указателей? Напр.//A.h
#include "B.h"
class A {
private: B* ptr;
public: void func () { ptr = new B(); }
};//B.h
#include "A.h"
class B {
private: A* ptr;
public: void func () { ptr = new A(); }
};
Forward declaration позволяет работать только с указателями, а операция new (или объявление экземпляра класса) недоступна.Есть ли решение?
Всё в одном файле:
class B;class A {
private:
const B& b;public:
A();
B* func();
};class B {
private:
A* pa;public:
B();
void func();
};inline A::A()
: b(B())
{}inline B* A::func()
{
return new B();
}inline B::B()
: pa(0)
{}inline void B::func()
{
if ( pa==0 )
pa = new A();
}
int main()
{
A a;
B b;
return 0;
}
Решение оказалось простое - надо вынести определения функций из хедеров в cpp.Never mind
> надо вынести определения функций из хедеров в cpp.Либо оставить в заголовке, но вынести за пределы класса, если хочется inline