Code kompiliert nicht
-
Hallo Zusammen!
Ich habe ein paar Zeilen C++ Code die einfach nicht übersetzen wollen. Hier der Code (bzw. die wesentlichen Ausschnitte):
cl.hpp
template <typename classtype> struct object_factory { static classtype* new_instance() { return new classtype; } static void destroy_instance(classtype* ptr) { delete ptr; } }; #include <map> class instantiator { public: static void addClass(const char* className, void* object_factory_ptr) { std::cout << "Registriere Klasse '" << className << "'..." << std::endl; object_factory_map.insert(std::pair<const char*, void*>(className, object_factory_ptr)); } private: static std::map<const char*, void*> object_factory_map; };Child.hpp
class Child : public AbPar { public: Child(); ~Child(); void Who(); void Where(); }; #include "cl.hpp" namespace { object_factory<Child> *objFac = new object_factory<Child>; instantiator::addClass("Child", objFac); }Dann gibt es eine Datei Child.cpp die die Child.hpp einbindet. Beim übersetzen kommt dann folgende Ausgabe (die Zeile 22 in der Ausgabe entspricht Zeile 16 im Code hier):
g++ -shared -o Child.so child.cpp In file included from child.cpp:1: child.hpp:22: error: expected constructor, destructor, or type conversion before '(' token child.hpp:22: error: expected `,' or `;' before '(' tokenIch versteh nicht so recht woran das liegt. Ein Konstruktor braucht es hier doch nirgends geben. In der Klasse instatiator ist doch alles als statisch deklariert.
Seht ihr worans liegt?
Vielen Dank und Grüße,
Maik
-
nach dem namespace fehlt der ;
-
Ich hab das ; hingesetzt, wobei es laut Referenz scheinbar nicht nötig ist. Der Fehler ist aber noch immer der gleiche.
-
wenn die Zeilen der Fehlermeldungen mit deinem Code übereinstimmen würden?!?! 22 gibts ja bei dir ned...
-
Ich hab ja geschrieben, dass Zeile 22 in der Fehlerausgabe Zeile 16 in meinem Auszug entspricht.
-
Hi,
was wäre wenn du es so mal versuchen würdest und evtl. static weg nimmst
(tut mir leid wenns falsch ist, bin selbst noch am lernen
instantiator CInst; // Objekt erzeugen object_factory<Child> *objFac = new object_factory<Child>; CInst.addClass("Child", objFac);lg c4f
-
Der Fehler bleibt der gleiche:
g++ -shared -o Child.so child.cpp In file included from child.cpp:1: child.hpp:23: error: expected constructor, destructor, or type conversion before '.' token child.hpp:23: error: expected `,' or `;' before '.' token
-
Weil du eine funktion (statisch oder nicht) ausserhalb einer Funktion aufrufst?
