Se il tipo Trave compare solo nel costruttore della classe Materiale, devi spostare la sua implementazione dal corpo della classe in un file Cpp separato, che includerà entrambi i file header. Fatto questo, puoi semplicemente effettuare una forward declaration del tipo Trave nel file Materiale.h.
codice:// File Trave.h #ifndef trave_h #define trave_h #include "materiale.h" class Trave { public: double RH; Materiale m; ... }; #endif // File Materiale.h #ifndef materiale_h #define materiale_h class Trave; namespace CA { class Materiale { .... double f(double par1, double par2, Trave &t); }; } #endif // File Materiale.cpp #include trave.h #include materiale.h double CA::Materiale::f(double par1, double par2, Trave &t) { // implementazione. }