Classes C ++ com membros que fazem referência entre si

Estou tentando escrever duas aulas com membros que se referem uns aos outros. Não tenho certeza se estou fazendo algo errado ou simplesmente não é possível. Alguém pode me ajudar aqui ...

Source.cpp

#include "Headers.h"
using namespace std;

void main()
{
    Network* network = new Network();

    system("pause");
    return;
}

Headers.h

#ifndef Headers_h
#define Headers_h

#include <iostream>
#include <vector>
#include "Network.h"
#include "Router.h"

#endif

Network.h

#include "Headers.h"

class Network
{
protected:
    vector<Router> Routers;
};

Router.h

#include "Headers.h"

class Router
{
protected:
    Network* network;
public:
};

Os erros que estou recebendo são:

erro C2143: erro de sintaxe: ausente ';' antes de '<'
error C2238: token (s) inesperado (s) anterior ';'
erro C4430: especificador de tipo ausente - int assumid

Tenho certeza de que não estou perdendo ponto e vírgula ou coisas assim. O programa funciona para descobrir se eu tiro um dos membros. Tentei encontrar perguntas semelhantes e a solução foi usar ponteiros, mas é isso que estou fazendo e parece que não está funcionando!

questionAnswers(4)

yourAnswerToTheQuestion