Groups | Search | Server Info | Login | Register


Groups > de.comp.lang.iso-c++ > #2154

Re: Eigenartiges Verhalten von überschriebenen virtuellen Methoden

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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