static CBrexit * getInstance;
In der abgeleiteten Klasse implementieren. Du musst aber halt explitiz
die Methode der abgeleiteten Klasse aufrufen.
Also: CBrexitFake::getInstance()
Den Constructor implementierst du genauso wie in der Basisklasse nur
rufst du halt noch explizit den der Basisklasse mit auf wenn dort
Parameter übergeben werden sollen:
Also :
CBrexitFake():CBrexit()
{
}
Random .. schrieb:> Wird Brexit das neue Foo?> Foo Bar Brexit :-)
Du weisst ja: Programmieren ist was Kreatives :-)
AbcAbc schrieb:> static CBrexit * getInstance;>> In der abgeleiteten Klasse implementieren. Du musst aber halt explitiz> die Methode der abgeleiteten Klasse aufrufen.>> Also: CBrexitFake::getInstance()>> Den Constructor implementierst du genauso wie in der Basisklasse nur> rufst du halt noch explizit den der Basisklasse mit auf wenn dort> Parameter übergeben werden sollen:
Und nur so zur Erinnerung: Solltest du planen Multithreading zu
verwenden, dann sollte man den Zugriff noch mit einem Mutex
synchroniseren. Sonst baut man sich unschöne, schwer zudebuggende Fehler
ein
Der Fehler lautet:
Der Operand einer dynamic_cast zur Laufzeit muss einen polymorphen
Klassentyp aufweisen.
Ich habs jetzt so gemcht - das funktioniert:
Klaus schrieb:> Ich habs jetzt so gemcht - das funktioniert:
Wenn du weiterhin C++ benutzen willst, solltest du lernen, was
static_cast, dynamic_cast, const_cast und reinterpret_cast machen.
Klaus schrieb:> ich habe eine Singleton-Klasse und möchte zum Testen dieser eine> Fake-Klasse ableiten:
Mir erschliesst sich nicht ganz warum man zum Testen eine Klasse
ableiten muss.
Warum holt man sich im Testprogramm nicht einfach mit getInstance() die
einzige Instanz und testet damit?
Gerne auch vielfach multithreaded falls das eine Anforderung ist.
> Mir erschliesst sich nicht ganz warum man zum Testen eine Klasse
ableiten muss.
zB.
Wenn die definierte Klasser nur abstrakt ist, kann sie nicht instantiert
werden, sondern muss abgeleitet werden und um fehlende Funktionen
ergaemzt werden.
mh schrieb:> Klaus schrieb:>> Ich habs jetzt so gemcht - das funktioniert:>> Wenn du weiterhin C++ benutzen willst, solltest du lernen, was> static_cast, dynamic_cast, const_cast und reinterpret_cast machen.
Kannst Du das bitte in diesem Zusammenhang genau erläutern?
Was mach ich falsch ?
Wie kann ich es besser machen?
Klaus schrieb:> mh schrieb:>> Klaus schrieb:>>> Ich habs jetzt so gemcht - das funktioniert:>>>> Wenn du weiterhin C++ benutzen willst, solltest du lernen, was>> static_cast, dynamic_cast, const_cast und reinterpret_cast machen.>> Kannst Du das bitte in diesem Zusammenhang genau erläutern?> Was mach ich falsch ?> Wie kann ich es besser machen?
Du benutzt in deiner "Lösung" eine Cast. Ist das ein static_cast,
dynamic_cast, const_cast, reinterpret_cast oder etwas anderes? Wenn du
die Frage nicht beantworten kannst, kann dir jedes C++ Buch, das
ansatzweise sein Geld wert ist, helfen.
Jitterer schrieb:>> Mir erschliesst sich nicht ganz warum man zum Testen eine Klasse> ableiten muss.>> zB.> Wenn die definierte Klasser nur abstrakt ist
Eine abstrakte Singleton-Klasse?
Jetzt bin ich neugierig!
merciless
mh schrieb:> Klaus schrieb:>> mh schrieb:>>> Klaus schrieb:>>>> Ich habs jetzt so gemcht - das funktioniert:>>>>>> Wenn du weiterhin C++ benutzen willst, solltest du lernen, was>>> static_cast, dynamic_cast, const_cast und reinterpret_cast machen.>>>> Kannst Du das bitte in diesem Zusammenhang genau erläutern?>> Was mach ich falsch ?>> Wie kann ich es besser machen?>> Du benutzt in deiner "Lösung" eine Cast. Ist das ein static_cast,> dynamic_cast, const_cast, reinterpret_cast oder etwas anderes? Wenn du> die Frage nicht beantworten kannst, kann dir jedes C++ Buch, das> ansatzweise sein Geld wert ist, helfen.
Da Du offenbar keine Lust hast Dein Wissen zu teilen, und ich gerade
keine Zeit habe ein C++ Buch zu lesen, lass ich die Würfel entscheiden.
Der Gewinner ist: reinterpret_cast
Klaus schrieb:> Da Du offenbar keine Lust hast Dein Wissen zu teilen, und ich gerade> keine Zeit habe ein C++ Buch zu lesen, lass ich die Würfel entscheiden.>> Der Gewinner ist: reinterpret_cast
Du hast keine 10 Minuten Zeit, um die Antwort auf diese wichtige Frage
selbst zu finden, kannst aber hier im Forum schreiben. Ich habe keine
Zeit dein Frage zu beantworten, aber genug Zeit dich auf fehlendes
Grundlagenwissen hinzuweisen ;-)
Und nein, du benutzt keinen reinterpret_cast, sondern einen "c-style
cast". Das ist relativ einfach zu sehen, da kein reinterpret_cast in
deinem Quelltext vorkommt.
Jitterer schrieb:> Wenn die definierte Klasser nur abstrakt ist, kann sie nicht instantiert> werden, sondern muss abgeleitet werden und um fehlende Funktionen> ergaemzt werden.
Und wo bitte ist das in dem oben angegebenen Beispiel der Fall?
Dirk K. schrieb:> Eine abstrakte Singleton-Klasse?
Ich sehe den "use case" im Moment auch nicht.
Klaus schrieb:> Da Du offenbar keine Lust hast Dein Wissen zu teilen, und ich gerade> keine Zeit habe ein C++ Buch zu lesen, lass ich die Würfel entscheiden.
Da ich schon seit 15 Jahren nicht mehr C++ programmiert habe, habe ich
danach mal gegoogelt. Nach 1 Minute war es mir klar, versuch das einfach
auch mal.
:-)
mh schrieb:> Und nein, du benutzt keinen reinterpret_cast, sondern einen "c-style> cast". Das ist relativ einfach zu sehen, da kein reinterpret_cast in> deinem Quelltext vorkommt.
Doch, ich benutze einen reinterpret_cast, da ich ja Deinen folgenden
Kommentar gelesen habe
mh schrieb:> Wenn du weiterhin C++ benutzen willst, solltest du lernen, was> static_cast, dynamic_cast, const_cast und reinterpret_cast machen.
und natürlich weiterhin C++ benutzen will. Deshalb habe ich auch schon
lange vor diesem Post
AbcAbc schrieb:> Dazu braucht es auch kein Tutorial sondern man googlet halt 2 Minuten> und findet z.B. das hier:> https://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs-dynamic-cast
selber gegoogelt und mich dann für den
entschieden.
Oder hast Du tatsächlich geglaubt ich würde würfeln?
Klaus schrieb:> mh schrieb:>> Und nein, du benutzt keinen reinterpret_cast, sondern einen "c-style>> cast". Das ist relativ einfach zu sehen, da kein reinterpret_cast in>> deinem Quelltext vorkommt.>> Doch, ich benutze einen reinterpret_cast, da ich ja Deinen folgenden> Kommentar gelesen habe> ...
Ich gehe davon aus, dass das deine Art ist, danke zu sagen. Gern
geschehen!
mh schrieb:> Ich gehe davon aus, dass das deine Art ist, danke zu sagen. Gern> geschehen!
So ist das XD.
Und wer nicht weiss was das XD bedeutet, solls gefälligst googeln.