In my C++ project when do I have to use inclusion (#include \"myclass.h\") of header files? And when do I have to use forward declaration of the class (cl
As a beginner, you should always #include header files when you need to use the types or functions they contain - do not try to "optimise" your build by forward declaring things - this is hardly ever necessary, even on large projects, provided the project is well architected.
The only time you absolutely need a forward declaration is in situations like this:
struct A {
void f( B b );
};
struct B {
void f( A a );
};
where each struct (or class) refers to the type of the other. In this case, you need a forward declaration of B to resolve the issue:
struct B; // forward declaration
struct A {
void f( B b );
};
struct B {
void f( A a );
};