Ich habe mal versucht, an den Konstruktor den aufruf des Basis-Klassen Konstruktors dran zu hängen:
C++:
tNPMHTTP(tLogger *logger) : tNPMBase(logger);
Aber dann bekomme ich ganz wirre Fehler beim kompilieren. Geht das denn überhaupt irgendwie!? -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
In file included from npm/http.cpp:17: npm/http.h: In constructor ‘tNPMHTTP::tNPMHTTP(tLogger*)’: npm/http.h:34: error: expected `{' before ‘~’ token npm/http.cpp: At global scope: npm/http.cpp:26: error: redefinition of ‘tNPMHTTP::tNPMHTTP(tLogger*)’ npm/http.h:32: error: ‘tNPMHTTP::tNPMHTTP(tLogger*)’ previously defined here npm/http.cpp: In constructor ‘tNPMHTTP::tNPMHTTP(tLogger*)’: npm/http.cpp:26: error: no matching function for call to ‘tNPMBase::tNPMBase()’ npm/../core/network.npm.base.h:26: note: candidates are: tNPMBase::tNPMBase(tLogger*) npm/../core/network.npm.base.h:21: note: tNPMBase::tNPMBase(const tNPMBase&) npm/http.cpp: At global scope: npm/http.cpp:86: error: definition of implicitly-declared ‘virtual tNPMHTTP::~tNPMHTTP()’ make: *** [npm/http.so] Error 1
-- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
npm/http.cpp:26: error: redefinition of ‘tNPMHTTP::tNPMHTTP(tLogger*)’ npm/http.h:32: error: ‘tNPMHTTP::tNPMHTTP(tLogger*)’ previously defined here npm/http.cpp: In constructor ‘tNPMHTTP::tNPMHTTP(tLogger*)’: npm/http.cpp:26: error: no matching function for call to ‘tNPMBase::tNPMBase()’ npm/../core/network.npm.base.h:26: note: candidates are: tNPMBase::tNPMBase(tLogger*) npm/../core/network.npm.base.h:21: note: tNPMBase::tNPMBase(const tNPMBase&) make: *** [npm/http.so] Error 1
Oder ist an der Definition des tNPMHTTP-Konstruktor was falsch (http.cpp:26)?
C++:
tNPMHTTP::tNPMHTTP(tLogger *logger) { ... }
Eigentlich nicht, oder? -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
Meine Website: http://www.funnydingo.deDieser Post wurde am 09.12.2007 um 18:13 Uhr von FunnyDingo editiert.
OK, jetzt verstehe ich es. Hab zwei Definitionen. Der Konstruktor in der CPP beinhaltet viel Code um das Objekt zu intialisieren. Das möchte ich nur ungern in der HeaderDatei verschieben. Ich habe den Aufruf der Basis-Klasse mit dem Parameter nun in die CPP gepackt und er kompiliert.
Sollte ja auch OK sein, oder? -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
Ironie-Modus { Vielleicht liegt es ja auch an den Klassennamen wie tNPMHTTP", da kriegt man ja Augenkrebs } -- Reden ist Schweigen und Silber ist Gold.
Hm, vielleicht wäre tnpmHTTP doch etwas angenehmer? oder tNpmHttp? Hm, mal drüber nachdenken... -- "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)
vorschlagen, denn du hast scheinbar viele Klassen mit diesem Präfix - das macht es in meinen Augen zu einem Namensraum.
Ansonsten würde ich noch anmerken, dass die extern "C"-Deklaration da ziemlich wenig bringen dürfte, weil du einen C++-Typ zurückgibst. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe DijkstraDieser Post wurde am 11.12.2007 um 19:34 Uhr von 0xdeadbeef editiert.