Groups | Search | Server Info | Login | Register
Groups > de.comp.lang.iso-c++ > #2154
| From | Stefan Reuther <stefan.news@arcor.de> |
|---|---|
| Newsgroups | de.comp.lang.iso-c++ |
| Subject | Re: Eigenartiges Verhalten von überschriebenen virtuellen Methoden |
| Date | 2022-09-09 17:47 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <tffu7g.4vc.1@stefan.msgid.phost.de> (permalink) |
| References | <tfdr4a$123lk$1@tota-refugium.de> |
Am 09.09.2022 um 00:42 schrieb Michael Landenberger:
> Wie kann ich es erreichen, dass beim Aufruf des
> Konstruktors von CBase über den Konstruktor eines Objekts der Klasse CDerived
> *nicht* CBase::getName(), sondern CDerived::getName() aufgerufen wird?
Gar nicht, da das CBase-Objekt zu dem Zeitpunkt noch nicht weiß, dass es
mal ein CDerived werden wird.
Eine Möglichkeit wäre, die Klassenstruktur derart zu gestalten, dass
CBase ein pur virtuelles Interface ohne Logik ist, und die Logik in
einer weiteren Klasse liegt:
class CBase {
public:
virtual string getName() = 0;
};
class CDerived : public CBase {
public:
string getName() override { return "abgeleitete Klasse"; }
};
class CLogic {
public:
CLogic(std::unique_ptr<CBase> pImpl)
: m_pImpl(std::move(pImpl))
{ m_name = m_pImpl->getName(); }
private:
std::unique_ptr<CBase> m_pImpl;
string m_name;
};
Dann ist das CDerived garantiert schon fertig, wenn die Konstruktion des
CLogic beginnt.
Stefan
Back to de.comp.lang.iso-c++ | Previous | Next — Previous in thread | Next in thread | Find similar
Eigenartiges Verhalten von überschriebenen virtuellen Methoden "Michael Landenberger" <spamwirdgefiltert@web.de> - 2022-09-09 00:42 +0200
Re: Eigenartiges Verhalten von überschriebenen virtuellen Methoden Stefan Reuther <stefan.news@arcor.de> - 2022-09-09 17:47 +0200
Re: Eigenartiges Verhalten von überschriebenen virtuellen Methoden "Michael Landenberger" <spamwirdgefiltert@web.de> - 2022-09-09 22:46 +0200
Re: Eigenartiges Verhalten von überschriebenen virtuellen Methoden paule32 <paule32.jk@gmail.com> - 2022-09-10 09:09 +0200
Re: Eigenartiges Verhalten von überschriebenen virtuellen Methoden Stefan Reuther <stefan.news@arcor.de> - 2022-09-10 09:03 +0200
Re: Eigenartiges Verhalten von überschriebenen virtuellen Methoden Markus Schaaf <mschaaf@elaboris.de> - 2022-09-10 13:08 +0200
csiph-web