Hallo nochmal,
hab hier ein kleines Problem, vielleicht hat ja jemand eine Idee. Mein Compiler meldet bei einer eigenen lib "undefined reference to <class name> virtual table". Hatte jemand sowas schon mal, dass er mir einen Tip geben koennte, wo ich suchen muss?
cu, Ulf
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Tuesday 25 June 2002 20:15, Ulf Lorenz wrote:
hab hier ein kleines Problem, vielleicht hat ja jemand eine Idee. Mein Compiler meldet bei einer eigenen lib "undefined reference to <class name> virtual table". Hatte jemand sowas schon mal, dass er mir einen Tip geben koennte, wo ich suchen muss?
Source! Gib uns Source!
Konrad
- -- BOFH excuse #409:
The vulcan-death-grip ping has been applied.
On Tue, Jun 25, 2002 at 06:54:01PM +0200, Konrad Rosenbaum wrote:
Source! Gib uns Source!
Sorry, fuer die Verspaetung, hatte etwas Aerger mit einem Mail-Relay und keine Zeit, mir was anderes auszudenken. Nun gut. Du moechtest Source, also bekommst du auch Source. Die boesen Klassen sind Action_Raze und Action_Occupy, und der Compiler meckert schon rum, ohne dass ich die Klassen verwende, also schicke ich mal keinen Kontext. data_package ist eine struct aus einem int und einem list<int>, alles gross geschriebene sind Makros (Thorsten hatte bei meiner letzten Frage darueber gemeckert).
Konrad
Ulf
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Friday 05 July 2002 20:15, Ulf Lorenz wrote:
On Tue, Jun 25, 2002 at 06:54:01PM +0200, Konrad Rosenbaum wrote:
Source! Gib uns Source!
Sorry, fuer die Verspaetung, hatte etwas Aerger mit einem Mail-Relay und keine Zeit, mir was anderes auszudenken. Nun gut. Du moechtest Source, also bekommst du auch Source. Die boesen Klassen sind Action_Raze und Action_Occupy, und der Compiler meckert schon rum, ohne dass ich die Klassen verwende, also schicke ich mal keinen Kontext. data_package ist eine struct aus einem int und einem list<int>, alles gross geschriebene sind Makros (Thorsten hatte bei meiner letzten Frage darueber gemeckert).
Versuch mal die Destruktoren dieser beiden Klassen zu implementieren. Ich nehme mal an, der Compiler baut die vtables dort zusammen, wo die Destruktoren definiert sind.
Konrad
- -- BOFH excuse #69:
knot in cables caused data stream to become twisted and kinked
Am Freitag, dem 05. Juli 2002 um 20:15:52, schrieb Ulf Lorenz:
Nun gut. Du moechtest Source, also bekommst du auch Source.
Du hast für Action_Raze und Action_Occupy Destruktoren deklariert aber nicht definiert. Da ich annehme, dass diese Desktruktoren gegenüber der Basisklasse (Action) nichts neues machen, brauchst du die Deklarationen in der *.h-Datei gar nicht. Es genügt, den leeren Destruktor
virtual ~Action() {}
zu definieren. Alle anderen Klassen erben diesen, was völlig OK ist.
BTW, mit Source ist gemeint, dass du bitte minimale Quelltexte schicken sollst, die dein Problem reproduzieren, aber auch (weitgehend) übersetzt werden können:
$ gcc -c action.cpp In file included from action.cpp:15: action.h:19: defs.h: No such file or directory In file included from action.cpp:15: action.h:21: fight.h: No such file or directory action.h:22: city.h: No such file or directory
Sowas ist einfach Mist und verdient es eigentlich nicht, sich damit zu beschäftigen.
Torsten
On Fri, Jul 05, 2002 at 11:15:07PM +0200, Torsten Werner wrote:
Du hast für Action_Raze und Action_Occupy Destruktoren deklariert aber nicht definiert.
Ahja, der Wald und die Baeume... danke euch beiden
Sowas ist einfach Mist und verdient es eigentlich nicht, sich damit zu beschäftigen.
werd es mir fuer die naechste Frage merken.
Ulf
Am Dienstag, dem 25. Juni 2002 um 20:15:54, schrieb Ulf Lorenz:
hab hier ein kleines Problem, vielleicht hat ja jemand eine Idee. Mein Compiler meldet bei einer eigenen lib "undefined reference to <class name> virtual table".
Glasauge:
Du benutzt RTTI (z. B. dynamic_cast<>) mit einer Klasse, die keine virtuellen Funktionen hat. Lösung: füge einen leeren virtuellen Destruktor hinzu (virtual ~klasse() {}).
Etwas Quelltext wäre aber wirklich SEHR sinnvoll.
Torsten
lug-dd@mailman.schlittermann.de