Probleme bei der Dereferenzierung von Pointern
-
hi, ich packs irgendwie nicht den Inhalt von Pointern, in meiner Übung ein Objekt auf dem Heap, in einen anderen Pointer zu kopieren. Der = Operator wird dabei anscheinend nicht ausgeführt bzw ich dereferenziere sicher völlig falsch.
Ich hoffe mir kann da jemand weiterhelfen:class Sub; class Basis { public: virtual void result() const = 0; virtual const Sub& operator=(const Sub&) = 0; virtual ~Basis() {} }; class Sub:public Basis { int j; public: Sub(int jj = 0) : j(jj) {} friend const Sub operator+(const Sub& left, const Sub& right) { return Sub(left.j+right.j); } const Sub& operator=(const Sub& right) { if(this!=&right) j = right.j; return *this; } void result() const { std::cout << j << std::endl; } }; /* MAIN */ int main() { Basis* sub = new Sub; Basis* subarray[2] = { new Sub(5), new Sub(20) }; //funzt nicht, kein Aufruf des = Operators *sub = *subarray[1]; sub->result(); // *sub = *subarray[1] + *subarray[1]; //funzt, = operator wird aufgerufen Sub b(10); *sub = b; sub->result(); //*sub = b+b return 0; }
-
Hier
*sub = *subarray[1];wird der am besten passende operator= aufgerufen, und das ist der deafultmäßig erstellte deiner Basisklasse, da du einem Objekt vom Typ Basis eins vom Typ Basis zuweisen willst. Polymorphismus funktioniert halt nur mit Pointern oder Referenzen.