pliki wzajemnie się zawierające (includujące)

0

Mam klasę drzewo w której wykorzystuję stos i klasę stos wykorzystującą drzewo.
Żeby uniknąć problemów z rekurencyjnym dołączaniem tych plików,próbowałem użyć #pragma once oraz ifndef,define(na końcu endif).Niestety w obudwu przypadkach kompilator zgłasza błędy mówiące wprost lub nie,że nie zdefiniowane są drzewo i stos.
Pliki nagłówkowe wyglądają tak

#pragma once
#include "DrzewoWyrazenia.h"
#include <iostream>
#include <string>

using namespace std;

class Stos{

    private:
        Stos *nastepny;
        DrzewoWyrazenia *wsk;
    public:
        Stos::Stos();

        bool isEmpty();

        void push(DrzewoWyrazenia &tree); 

        DrzewoWyrazenia pop();

        ~Stos();
};
#pragma once
#include "Stos.h"
#include "TablicaSymboli.h"
#include < iostream >
#include <string>
#include <sstream>

using namespace std;

class DrzewoWyrazenia{

    private:
        string wezel;
        DrzewoWyrazenia *lewe,*prawe;
    
    public:
        DrzewoWyrazenia::DrzewoWyrazenia(string wez);

        DrzewoWyrazenia::DrzewoWyrazenia(string wez,DrzewoWyrazenia *lewe);

        DrzewoWyrazenia::DrzewoWyrazenia(string wez,DrzewoWyrazenia *lewe,DrzewoWyrazenia *prawe);

        DrzewoWyrazenia postfixToTree(string str,Stos & stos);

        double calculate(DrzewoWyrazenia tree);

        string unDefined(TablicaSymboli tab);

        int op(string txt); //0 jeśli nie jest operatorem,1-jeśli jest jednoargumentowym,2-dwuargumentowym

        ~DrzewoWyrazenia();
};

I jeszcze jedna kwestia:można zrobić plik nagłówkowy z samymi includ'ami?
We wszystkich klasach mam prawie takie same i ładniej by było nie pisać tego samego w każdej (jest ich więcej niż te 2 tutaj).
Próbowałem coś takiego zrobić, ale kompilator zgłasza,że nie może otworzyć tego pliku.

Z góry dziękuje za pomoc.

0
...
class Stos;
class DrzewoWyrazenia{
...

1 użytkowników online, w tym zalogowanych: 0, gości: 1