[solved] Error: multiple types ....
-
Moin Moin,
ich habe da ein kleines Problem und bin recht ratlos.
Ich habe eine Checks Klasse, aber beim Kompilieren bekomme ich immer folgende Fehlermeldung:mingw32-g++.exe -Wall -pipe -mthreads -Winvalid-pch -D__GNUWIN32__ -D__WXMSW__ -DUSE_PCH -Wall -IE:\wxWidgets-2.6.2\include -IE:\wxWidgets-2.6.2\lib\gcc_lib\mswu -IE:\wxWidgets-2.6.2\contrib\include -IE:\wxWidgets-2.6.2\sqlite3\include -IE:\wxWidgets-2.6.2\lib\gcc_lib\mswu -IE:\wxWidgets-2.6.2\include -c src\server\checks.cpp -o .\obj\src\server\checks.o
In file included from src\server\checks.cpp:1:
src\server\/checks.h:31: error: multiple types in one declarationDer betroffene Code sieht folgendermassen aus:
#ifndef __CHECKS_H__ #define __CHECKS_H__ #include "database.h" #include "thread.h" #include "client.h" #include "log.h" class Checks : public wxThread { public: Checks(Database* dbase); ~Checks(); void checkForTimeout(); void checkForNewOnlineClient(); void checkForNewOfflineClient(); protected: void connect(char* ip, unsigned int port); void sendMessage(char* msg); void disconnect(); virtual void* Entry (); Database* database; Client *client; private: }; #endifDas tolle ist, Zeile 31 ist diese Stelle "};"
Das lustige ist, wenn ich die Anordnung der Includes verdrehe, dann bekomme ich eine ganz andere, und noch absurdere Fehlermeldung.
Da behauptet der minGW sogar, dass die wxLibs Fehler enthalten
Welchen Grund kann mein Problem haben?
Ich weiss nicht so recht an welcher Stelle ich suchen soll...MfG
Vic
-
Kann es sein, dass wxThread nicht da ist? Wie sehen denn die anderen Header aus?
-
Doch wxThread ist da. Ich habe das nur in der Thread.h inkludiert
Die Header sehen folgendermassen aus:
#ifndef __DATABASE_H__ #define __DATABASE_H__ #include "CppSQLite3.h" #include "log.h" class Database { public: Database(); Database(char* dbpath); ~Database(); void open(char* dbpath); void close(); bool exists(char* table); CppSQLite3Table query (char* command); void exec (char* command); bool is_locked(); protected: CppSQLite3DB db; bool locked; private: }; #endif#ifndef __THREAD_H__ #define __THREAD_H__ #include <wx/thread.h> static wxMutex *mutex; #endif#ifndef __CLIENT_H__ #define __CLIENT_H__ #include <wx/wx.h> #include <wx/socket.h> #include "log.h" class Client : public wxEvtHandler { public: Client(); ~Client(); void connect(char* ip, unsigned int port); void sendMessage(char* msg); void disconnect(); protected: void OnSocketEvent(wxSocketEvent &event); wxSocketClient *client; private: DECLARE_EVENT_TABLE() }; enum { CLIENT_SOCKET_ID = 300 } #endif#ifndef __LOG_H__ #define __LOG_H__ #include <fstream> #include "wx/wx.h" #include "wx/datetime.h" using namespace std; class Log { public: Log(); Log (wxString path); ~Log(); int writefile (wxString message); protected: int openfile (); int closefile (); private: wxString get_logpath (); void set_logpath (wxString value); private: wxString logpath; ofstream logfile; }; inline wxString Log::get_logpath () { return logpath; } inline void Log::set_logpath (wxString value) { logpath = value; } void addLog(wxString message); void addLog(char* klasse, char* methode, char* message); #endif [code] MfG Vic
-
Hmm,
bin ein bisschen weiter.Wenn ich alle Verbindungen zur client.h kappe, dann wird die checks.h richtig kompiliert...
-
Schau mal in der Clients.h, hinter dem enum {...} fehlt ein Semikolon. Enums sind auch Typen, für die gilt dasselbe wie für Klassen.
(Und benutz bitte cpp statt code Tags)
-
ARGH!
Danke das wars
Und dieses Ding hat mich jetzt 3 h gekostet...MfG
Vic
-
Was benutzt du auch globale Enums :p. Ich wette, wenn das in nem Namespace gewesen wäre, hätte der Compiler an "richtigerer" Stelle gemeckert.