My code has 2 related classes:Class1
has pointer field to instance of Class2
;Class2
has pointer field to instance of Class1
:
class1.hpp
#ifndef __CLASS_1_HPP
#define __CLASS_1_HPP
#include "all.hpp"
class Class1
{
public:
Class1();
private:
Class2 *c2;
};
Class1::Class1()
{
c2 = new Class2();
}
#endif // __CLASS_1_HPP
class2.hpp
#ifndef __CLASS_2_HPP
#define __CLASS_2_HPP
#include "all.hpp"
class Class2
{
public:
Class2();
private:
Class1 *c1;
};
Class2::Class2()
{
c1 = new Class1();
}
#endif // __CLASS_2_HPP
all.hpp
#ifndef __ALL_HPP
#define __ALL_HPP
class Class1;
class Class2;
#include "class1.hpp"
#include "class2.hpp"
#endif // __ALL_HPP
main.cpp
#include "all.hpp"
int main() {}
When I'm trying to compile this I get Invalid use of incomplete type Class2 on line c2 = new Class2();
. Division .hpp files on .hpp and .cpp does not help!