Riferimenti o dichiarazioni in avanti in C ++
-
06-07-2019 - |
Domanda
Come posso inoltrare riferimenti / dichiarazioni in C ++ per evitare riferimenti circolari ai file di intestazione?
Ho la protezione #ifndef nel file header, ma la memoria mi dice che ho bisogno di questa cosa di riferimento in avanti - che ho usato prima di > < ma non ricordo come.
Soluzione
Si dichiara la classe senza includerla. Ad esempio:
//#include "Foo.h" // including Foo.h causes circular reference
class Foo;
class Bar
{
...
};
Altri suggerimenti
Credo che il termine corretto per ciò di cui stai parlando sia " forward forward " ;. " Riferimento in avanti " sarebbe un po 'confuso.
Non otterrai riferimenti circolari ai file di intestazione se hai protezioni #ifndef. Questo è il punto.
Il riferimento in avanti viene usato per evitare i file di intestazione #include (ing) per gli oggetti che usi solo per puntatore o riferimento. Tuttavia, in questo caso non stai risolvendo un problema di riferimento circolare, stai solo esercitando una buona progettazione e disaccoppiando il file .h dai dettagli che non è necessario conoscere.