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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top