jens kammer
2006-03-24 15:28:01 UTC
Hallo,
ich möchte ein Programm schreiben, das mhrere Algorythmen berechnen kann,
die ich aber noch nicht alle kenne und auch erst noch entwickelt werden. So
dachte ich mir, mach das per Bibliotheken ( .dll , .so ) in denen jeweils
der aktuelle Algorythmus eingeladen werden soll. Soweit sogut, das nächste
Problem lies nicht lange auf sich warten, ich kenne nicht zwingend jetzt
schon die Parameter bzw rückgabewerte der Berechnungen. So habe ich eine
Abstrakte Klasse DatenContainer angelegt, die als Schnittstelle fungieren
soll:
class DatenContainer {
public: virtual ~DatenContainer() {}
};
Alle Datenklassen erben nun von dieser.
Die eingelesene Methode ist nach folgender Struktur aufgebaut:
DatenContainer* calculate(DatenContainer& dac){}
Da ich während der Programmierung der Bibliothek bereits weiss welche Daten
ich fordere und auch brauche kann ich mit einem dynamic-cast mir alles
passen zurechtlegen.
Soweit so gut. Funktionier auch alles ( unter Windows ).
Jetz mein Problem: das ganze muss auch auf Linux portabel sein, da schlägt
aber jedes mal er cast fehl ( Rückgabe 0 ) und ich bekomme
Speicherzugrifffehler.
Frage: Hat irgend jemand eine Idee an was das liegen kann und wichtiger
noch, wie kann ich es beheben, umgehen?
Zur weiteren Info wenn ich testhalber eine Methode calculate mit Paramether
einer Kopie einer Datenklasse nehme, habe ich die Daten. Also scheint das
Problem irgendwie an der Referenz zu liegen. Leider kann ich mit einer Kopie
von DatenContainer in der DLL auch nichts anfangen, weil ich dann kein
downcast mehr machen kann, oder geht das irgendwie?
Trotz des vielen Textes hoffe ich auf Hilfe,
Gruss
Jens Kammer
ich möchte ein Programm schreiben, das mhrere Algorythmen berechnen kann,
die ich aber noch nicht alle kenne und auch erst noch entwickelt werden. So
dachte ich mir, mach das per Bibliotheken ( .dll , .so ) in denen jeweils
der aktuelle Algorythmus eingeladen werden soll. Soweit sogut, das nächste
Problem lies nicht lange auf sich warten, ich kenne nicht zwingend jetzt
schon die Parameter bzw rückgabewerte der Berechnungen. So habe ich eine
Abstrakte Klasse DatenContainer angelegt, die als Schnittstelle fungieren
soll:
class DatenContainer {
public: virtual ~DatenContainer() {}
};
Alle Datenklassen erben nun von dieser.
Die eingelesene Methode ist nach folgender Struktur aufgebaut:
DatenContainer* calculate(DatenContainer& dac){}
Da ich während der Programmierung der Bibliothek bereits weiss welche Daten
ich fordere und auch brauche kann ich mit einem dynamic-cast mir alles
passen zurechtlegen.
Soweit so gut. Funktionier auch alles ( unter Windows ).
Jetz mein Problem: das ganze muss auch auf Linux portabel sein, da schlägt
aber jedes mal er cast fehl ( Rückgabe 0 ) und ich bekomme
Speicherzugrifffehler.
Frage: Hat irgend jemand eine Idee an was das liegen kann und wichtiger
noch, wie kann ich es beheben, umgehen?
Zur weiteren Info wenn ich testhalber eine Methode calculate mit Paramether
einer Kopie einer Datenklasse nehme, habe ich die Daten. Also scheint das
Problem irgendwie an der Referenz zu liegen. Leider kann ich mit einer Kopie
von DatenContainer in der DLL auch nichts anfangen, weil ich dann kein
downcast mehr machen kann, oder geht das irgendwie?
Trotz des vielen Textes hoffe ich auf Hilfe,
Gruss
Jens Kammer
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+***@bud.prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-***@bud.prima.de
de.comp.lang.iso-c++ - Moderation: mailto:voyager+***@bud.prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-***@bud.prima.de