PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : abstrakte Klasse / Vererbungsproblem in C++


nobody
23.09.2003, 11:02
Hallo.

Ich habe eine abstrakte Klasse, von der 3 weitere Klassen abgeleitet werden. Jetzt möchte ich den ++Variable-Operator überladen. Und da alle drei abgeleiteten Klassen auch mit diesem Operator aufgerufen werden können, wäre es ja am besten, dies in der Oberklasse zu machen, da ich dann den Prafixinkrementoperator nur einmal überladen muss. Soweit so gut.
In dieser Funktion zur Überladung des Operators muss ich aber eine Kopie des Objektes, mit dem der Operator aufgerufen wurde, erzeugen, um das richtige Verhalten des Präfixinkrementoperators zu imitieren.
Da es sich aber um 3 verschiedene Objekte handeln kann, kann ich keine neue Variable eines bestimmten Typs erzeugen, da ich ja nicht weiss, welche das sein wird. Und ich kann auch nicht den Typ der abstrakten Klasse nehmen, da von einer abstrakten Klasse kein Objekt erzeugt werden kann....
Gibt es vielleicht eine Möglichkeit, dem Compiler zu sagen, dass man eine Variable von dem Typ braucht, von dem auch der this-Zeiger ist?

Ich hoffe, ich habe mein Problem einigermassen verständlich niedergeschrieben.

Vielen Dank für jeden Hinweis schon mal im Vorraus.

Gruß, Ralf.

MaSTaH
24.09.2003, 18:03
Also beim Präfixinkrement braucht man keine Kopie. Hast dich sicher vertippt ;) .

Zu deiner Frage: Wenn ich richtig liege dann dürfte man dein Problem so lösen können... Ob das allerdings guter Stil ist, ist fraglich.


template< typename T >
class Base
{
// ...

T operator++(int)
{
T copy(*this);
*this += 1;
return copy;
}
};

class Derived : public Base< Derived >
{
// ...
};