2012-04-11 14 views
3

In A.hpp Datei-I eine Struktur haben, die einen Zeiger von B-Klasse hatzirkulären Abhängigkeit mit Vorwärtsfehlerdeklaration

struct state 
{ 
    B *b; 
}; 

In A.hpp Datei, I eine Vorwärts Erklärung gegeben, und I enthalten B.hpp Datei in A.cpp

//A.hpp 
class B 

in B.hpp Datei-Datei verwendet eine Funktion, um den Zustand, die auf der Funktion in A.hpp als Argument erklärt.

bool function_in_b(state *s) 

Ich habe auch eine Vorwärts-Deklaration von A in B.hpp Datei und ich die Header-Datei von A, A.hpp in B.cpp Datei hinzugefügt.

Alle Header-Dateien haben einen Header-Guard. Wenn ich versuche zu kompilieren, findet es nicht den in A.hpp deklarierten Zustand. So wird es nicht die passende Funktion finden und rügt die Kandidaten sind

bool function_in_b(int *) 

Wie kann ich dieses Problem beheben?

struct state; 
+0

Welche Datei versuchen Sie zu kompilieren, wenn Sie den Fehler? – Beta

Antwort

2

In B.hpp, Sie sagen, Sie voraus erklärt A, aber nicht state:

Vielen Dank im Voraus

+1

Danke! Es funktionierte! – codereviewanskquestions

1

In B.hpp Datei, vor der Deklaration von function_in_b(state *), sich darauf, die state Art erklären - So, wenn es zum ersten Mal function_in_b(state *s) sieht, weiß es nicht, was state ist. Wenn Sie A.hpp in B.cpp einschließen, ist es zu spät. Sie müssen weiterleiten erklären state in B.hpp, das heißt

struct state; 

bool function_in_b(state *s); 
Verwandte Themen