Salve a tutti, ho un problema...

Ho una classe chiamata Trave che al suo interno è costituita da oggetti quale il Materiale e alcune proprietà ad esempio un double RH..

Io dovrei attraverso una funzione di Materiale risalire al valore RH appartenente a Trave e usarlo per alcuni calcoli..

Ho cercato di fare in questo modo ma non ne sono uscito vivo:

file trave.h
codice:
#ifndef trave_h
#define trave_h

#include "materiale.h"

class Trave {
   public:
   double RH;
   Materiale m;

   ...
};
#endif
file materiale.h:
codice:
#ifndef materiale_h
#define materiale_h

#include "trave.h"

namespace CA {
   class Materiale {
       ....
       double f(double par1, double par2, Trave &t) {
           return par1*par2*t.RH;
       }
    };
}
#endif
Allora, inizialmente non riuscivo a compilare perchè c'era una ricorsione di file, in pratica il file trave.h mi richiama materiale.h che richiama trave.h.
Questo spero di averlo risolto con i comandi #ifndef #define #endif
A questo punto però ho il problema che quando vado a compilare il compilatore mi restituisce questo errore:
Materiale has not been declared
Ho provato a mettere CA::Materiale con lo stesso risultato...
Idee?