¿En qué orden incluyo los archivos de encabezado?

Soy nuevo en programación y el tema de los archivos de encabezado me está empantanando después de que comencé a usar muchos de ellos. Además de eso, estoy tratando de usar encabezados precompilados. También estoy usando la biblioteca SFML, así que tengo esos encabezados que también deben incluirse.

Ahora tengo stdafx.h, main.cpp, luego las clases A, B, C y D contenidas en Ah, A.cpp, Bh, B.cpp, Ch, C.cpp, Dh y D.cpp. @

¿En qué orden debería incluir los encabezados en todos los archivos si

todas las clases contienen una instancia de una clase SFMLclase D contiene una instancia de clase A y clase Cclase C contiene una instancia de clase B Mi código: (nota: todos los encabezados tienen protectores de encabezado)

stdafx.h:

#include <SFML/Graphics.hpp>
#include <iostream>

A.h

#include "stdafx.h"
class A
{
    //sfml class
};

A.cpp

#include "stdafx.h"
#include "A.h"

B.h

#include "stdafx.h"
class B
{
    //sfml class
};

B.cpp

#include "stdafx.h"
#include "B.h"

C.h

#include "B.h"
class C: public B
{

};

C.cpp

#include "stdafx.h"
#include "C.h"

D.h

#include "A.h"
#include "C.h"
class D
{
    A a;
    C C; // if left uncommented I recieve a '1 unresolved externals' error
    //sfml class
}

D.cpp

#include "stdafx.h"
#include "D.h"

main.cpp

#include "stdafx.h"
#include "D.h"

Respuestas a la pregunta(5)

Su respuesta a la pregunta