Hallo,
ich programmiere ein Qt-Programm auf dem 9.1er SuSE. Generell versuche
ich, includes in Headern zu vermeiden und arbeite deshalb gern mit
Vorausdeklaration und dem entsprechenden include dann im cpp-File.
Folgendes funktioniert:
.h-Datei:
class QString;
class X
{
public:
void funcA(QString str);
};
.cpp-Datei:
#include
void X::funcA(QString str)
{
...
}
Jenes aber nicht:
.h-Datei:
class QString;
class Y
{
public:
QString funcB();
private:
QString m_str;
};
.cpp-Datei analog zu oben, MIT #include
Der Fehler ist: "return type of function funcB is of incomplete type."
bzw. "struct QString is of incomplete type."
Es wird anstandslos kompiliert, wenn ich im zweiten Fall statt der
QString-Vorausdeklaration sofort den #include mache. Habe
ich da was übersehen? Gibt es ein generelles Problem mit
Vorausdeklarationen? Eigentlich habe ich bisher gute Erfahrungen damit.
An anderen Stellen hat es mit QString und verschiedenen anderen
Qt-Klassen funktioniert.
Gruß
Volker Sturm