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.