Hallo,
In meinem Projekt trat in etwa die Folgende Situation auf:
main.cpp
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
#include "A.hpp"
int main()
{
A c;
B d;
d.foo(&c);
return 0;
};
|
A.hpp
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
#include "B.hpp"
#pragma once
class A
{
public:
void bar(B* p){};
};
|
B.hpp
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
|
#pragma once
class A; // <- Forward-deklaration!
class B
{
public:
void foo(A* p){p->bar(this);};
};
|
Trotz dieser Forward-Deklaration trat dieser Fehler auf:
[Pfad...]\circularinclusion\b.hpp(7) : error C2027: Verwendung des undefinierten Typs "A"
[Pfad...]\circularinclusion\b.hpp(3): Siehe Deklaration von 'A'
[Pfad...]\circularinclusion\b.hpp(7) : error C2227: Links von "->bar" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
Es scheint daran zu liegen, dass ich A nicht nur Deklariere, sondern auch eine Funktion dieser verwende...
Wie löse ich das auf?
mfg CBenni::O