000
22.04.2004, 05:05 Uhr
DerSchwarzeSchlumpf
|
Hi
So es is jetzt etwas kompliziert zu erklären aber ich hoffe ich bekomm das jetzt um die zeit noch einigermaßen hin *g*
Ich habe eine Basisklasse und leite von diesen 2 weitere Klassen ab (den Code poste ich etwas weiter unten). Das Problem ist: Anscheinend legt er mir nur ein einzelnes Objekt für beide Klasse an. Ich habe folgendes getestet: -> Wenn ich in den beiden abgeleiteten Klassen jeweils individuell eine Variable mit dem gleichen Namen anlege und denen 2 verschiedene Werte zuweise, funktioniert es problemlos (nur würde das meiner Meinung nach den Sinn einer "Basis-Klasse" ja ad surdum führen ,oder?) -> Wenn ich jedoch einen int in der "Basis-Klasse" definiere, und dann in den abgeleiteten Klassen darauf zugreife, so überschreiben diese diesen Wert. Entweder ich habe da bei der "Ableitung" einiges nicht verstanden so dass man keine variablen in der Basisklasse definieren kann und diese dann automatisch jeweils individuell in die abgeleiteten Klassen angelegt werden und jede unabhängige werte annehmen kann... . *g*
der code der "basis-klasse":
C++: |
class Point { public: Point(); ~Point();
void setPointDefine(unsigned row_counter, unsigned column_counter); void setPointChange(unsigned row_counter, unsigned column_counter); void setPointCounterToNull() {point_counter_ = 0;} void setPointSetFalse() {point_set_ = false;} bool getPointSet() {return point_set_;} unsigned getPointRow() {return row_;} unsigned getPointColumn() {return column_;} unsigned getPointCounter() {return point_counter_;} void countPoint() {point_counter_++;}
private: static unsigned point_counter_; static unsigned row_; static unsigned column_; static bool point_set_; };
|
und eine abgeleitete Klasse (sind beide 1:1 gleich, nur die eine trägt den Namen "StartPoint", die andere den Namen "FinishPoint").
C++: |
class StartPoint : public Point { public:
~StartPoint(); static StartPoint* getInstance();
protected: static StartPoint* instance_;
private: StartPoint(); };
//---------------------------------- StartPoint* StartPoint::getInstance() { if(instance_ == NULL) instance_ = new StartPoint();
return(instance_); }
|
laut meinem verständnis müsste damit ja ein Objekt vom Typ "StartPoint" angelegt werden und dieser Pointer wird mir geliefert, StartPoint ist ein von "FinishPoint" komplett unabhängiges Objekt und auch die Variablen (point_counter_;row_; column_, point_set_) müssten verfügbar sein und unabhängig belegt werden können.
lieg ich hier komplett falsch oder hat jemand eine idee warum das nicht funktioniert?
btw: wenn das so nicht möglich ist, was wäre dann möglich? *g* *derzeit total auf der leitung steh*
danke jedenfalls schon einmal für die hilfe |