Abstrakten Typen verwenden
Von: VuuRWerK (vuurwerk@gmx.de) [Profil]
Datum: 22.04.2009 00:15
Message-ID: <734c315b-330d-4a8b-bff6-2f695a933481@k38g2000yqh.googlegroups.com>
Newsgroup: de.comp.lang.iso-c++
Datum: 22.04.2009 00:15
Message-ID: <734c315b-330d-4a8b-bff6-2f695a933481@k38g2000yqh.googlegroups.com>
Newsgroup: de.comp.lang.iso-c++
Hallo ich muss doch nochmal stören,
diesmal wieder mit einem Problem welches ich lösen kann in dem ich
Pointer verwende :) Aber auch hier möchte ich erst alles ausschließen
können bevor ich zum Pointer greife. Nein ich habe keine Angst vor
Pointern aber meine Intensionen warum ich weitesgehend auf Pointer
verzichten möchte hatte ich ja schon in meinem Post bzgl "nullptr für
Objekte" geschrieben.
Problem diesmal: Ich habe diverse Abstrakte Typen definiert. Diese
bilden ein Interface zu meiner API. Diese Typen benutze ich demnach
auch in meinen eigenen Implementierungen. Aber kurz wieder etwas Code
an welcher Stelle bei mir der Schuh drückt:
=========================
===================
struct A {
virtual void f() const = 0;
};
struct C : public A {
virtual void f() const {
// do anything ...
}
};
struct B {
A a; // geht ohne pointer nicht :(
C c; // geht da konkreter Typ
A* pA; // würde auch gehen aber wäre ja ungern benutzer Pointer
};
=========================
===================
Problem wie man sieht, ich kann A nicht in B verwenden. Ich habe
natürlich schon die Suchmaschine strapaziert und einige Workarounds
gefunden allerdings bereitet mir dies wieder Bauchschmerzen und ich
wollte mir gern vorher noch eine Meinung von Euch einholen ob es denn
vllt. einen "benutzbaren" Ansatz gibt? Sehr gern auch wieder eine
Lösung ala "fallible" (siehe nullptr für Objekte).
Danke Euch schonmal für Eure Bemühungen
Grüße
Christian
[ Auf dieses Posting antworten ]Antworten
- Christian Seifert (22.04.2009 18:15)
- Michael Karcher (23.04.2009 11:41)
- James (24.04.2009 10:24)
- Michael Karcher (24.04.2009 14:34)
- James (26.04.2009 11:54)
- Christian Seifert (29.04.2009 19:13)
- Markus Donath (04.05.2009 16:41)
- Christian Seifert (06.05.2009 13:35)
- James (24.04.2009 09:52)
- André Schreiter (24.04.2009 12:13)
