Iterator Klasse Postincrement
-
Wenn dem so waere, hatte man es vermutlich schon desoefteren so gemacht. Natuerlich gibts Faelle, wo sowas vlt praktisch waere, aber ich glaube nicht, dass der TE schon in der Lage ist, zu entscheiden.
-
Kellerautomat schrieb:
Wenn dem so waere, hatte man es vermutlich schon desoefteren so gemacht. Natuerlich gibts Faelle, wo sowas vlt praktisch waere, aber ich glaube nicht, dass der TE schon in der Lage ist, zu entscheiden.
Aber Du natürlich schon, besonders, da Du ja das Problem des TE so genau kennst.
-
Ich lehne mich mal so weit aus dem Fenster, um zu sagen, dass die Standard-Methode mit grosser Wahrscheinlichkeit "gut genug" ist, ja.

-
Kellerautomat schrieb:
Ich lehne mich mal so weit aus dem Fenster, um zu sagen, dass die Standard-Methode mit grosser Wahrscheinlichkeit "gut genug" ist, ja.

Ja dann ist ja
gutbestens.
-
Mal ein anderer Vorschlag: Wie wärs mit CRTP?

Dein Problem als solches ist schon die Idee. Da wirst du nicht weiter kommen. Das Problem ist mehr oder weniger, dass du eine Instanz einer abstrakten Klasse zurückgeben musst. Das geht aber nicht. Die kann nicht existieren. Also entweder Referenz/Zeiger (was du aus gutem Grund nicht willst), oder etwas anderes zurückgeben, was nicht abstrakt ist.
-
Ein Wunder, dass noch niemand geschrieben hat, der gezeigte Code sei kein C++. Ich bin zuversichtlich, dass das bald erwähnt wird...
-
Das Problem lässt sich auf folgende Klasse minimieren:
template<typename der> struct A { virtual der foo() = 0; };Mein Vorschlag:
template<typename der> struct A { virtual der foo() = 0; }; struct B : public A<B> { B foo() { return B(); } ///Wenn C++11-kompatibel, override dazu };Damit wäre das Konzept erhalten (oder?), und die Semantik korrekt.
theta schrieb:
Ein Wunder, dass noch niemand geschrieben hat, der gezeigte Code sei kein C++. Ich bin zuversichtlich, dass das bald erwähnt wird...
Na klar, wo ist denn der Konstruktor deklariert/definiert, der in Zeile 24 genutzt wird?

-
CRTP mit virtual. Ahja.
-
Edit: Näh, das ist Blödsinn.
Schließlich wird eine dynamische Bindung damit unmöglich...
-
Na theta haste zuviel Java programmiert in letzter Zeit? Deine Lösung ist absurd in C++.
-
ich bin ja gespannt, wie Kellerautomat seine templatisierten Iteratoren verwendet, wenn er late binding braucht
.Die Lösung ist, wie bereits angesprochen, ein Proxy-Objekt das von Iterator abgeleitet ist und eine temporäre Kopie des Iterators enthält, die zum Schluss zerstört wird.