Servus, ich wühle mich gerade in C++ (GNU Compiler in MinGW) rein. Im Moment versuche ich SQLite3 einzubinden. Ins Header habe ich mit #include "sqlite3.h" class Database { public: Database(); virtual ~Database(); private: sqlite3 sqdb; }; das Headerfile eingebunden. Der Compiler meint dazu: In file included from server.cpp:1:0: CSmtp.h:321:11: error: field 'sqdb' has incomplete type 'sqlite3' sqlite3 sqdb; ^~~~ In file included from CSmtp.h:313:0, from server.cpp:1: sqlite3.h:228:16: note: forward declaration of 'sqlite3 {aka struct sqlite3}' typedef struct sqlite3 sqlite3; ^~~~~~~ In file included from csmtp.cpp:97:0: CSmtp.h:321:11: error: field 'sqdb' has incomplete type 'sqlite3' sqlite3 sqdb; ^~~~ In file included from CSmtp.h:313:0, from csmtp.cpp:97: sqlite3.h:228:16: note: forward declaration of 'sqlite3 {aka struct sqlite3}' typedef struct sqlite3 sqlite3; ^~~~~~~ In file included from mproxy.cpp:1:0: CSmtp.h:321:11: error: field 'sqdb' has incomplete type 'sqlite3' sqlite3 sqdb; ^~~~ In file included from CSmtp.h:313:0, from mproxy.cpp:1: sqlite3.h:228:16: note: forward declaration of 'sqlite3 {aka struct sqlite3}' typedef struct sqlite3 sqlite3; ^~~~~~~ Anscheinend mag er die Zeile mit dem "typedef struct sqlite3 sqlite3;" nicht. Ich verwende SQlite jetzt schon eine Weile, mir ist dieses Statement noch nie aufgefallen. Was könnte die Bedeutung sein ? Ist das was spezielles mit C++ ?
Joachim D. schrieb: > Anscheinend mag er die Zeile mit dem "typedef struct sqlite3 sqlite3;" > nicht. Doch die mag er schon. Allerdings solltest Du die SQLite Docu lesen! Deine Memberdeklaration ist falsch, korrekt wäre "sqlite3* sqdb;"
kopfklatsch Vielen Dank ! Manchmal sieht man es ums Verrecken nicht ... ;)
Nur noch eine Frage: Was macht die Zeile "typedef struct sqlite3 sqlite3;" eigentlich ?
Joachim D. schrieb: > Was macht die Zeile "typedef struct sqlite3 sqlite3;" eigentlich ? Ist zum einen eine 'forward'-Deklaration damit der Typ überhaupt bekannt ist (struct ohne Member, deshalb auch 'incomplete') und sorgt dafür, daß man auch in C "sqlite3* sqdb;" schreiben kann und nicht nur in C++. Ohne müßte man in C "struct sqlite3* sqdb;" schreiben (dann müßte im Header "struct sqlite3;" stehen).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.