Ich versuche, std :: bind () zu verwenden, um eine Funktion zu erstellen, die die Basisklassenversion einer virtuellen Funktion aufruft, anstatt die Version der abgeleiteten Klasse aufzurufen.
%Vor%Ich verstehe woanders dass man eine Basisfunktion normalerweise nicht "anti-virtuell" wie diese aufrufen kann. Die offensichtliche Ausnahme ist das allgemeine Paradigma:
%Vor% Da der Ausdruck Base::bar()
innerhalb der Methoden von Derived als "anti-virtual" (in dem Sinne, auf den ich anspiele) erkannt wird, ist es möglich, von innerhalb
Wenn ja, wie lautet die Syntax?
Nun, &Base::foo
ist ein Mitgliedsfunktionszeiger. Und es gibt keine Möglichkeit, einen Memberfunktionszeiger zu verwenden, der keine virtuelle Überschreibung aufruft. Die einzige Syntax, die virtuelle Überschreibungen vermeidet, ist diejenige, bei der Klassenname, Funktionsname und Argumentliste alle denselben Ausdruck haben.
Aber wenn Sie std::bind
haben, haben Sie wahrscheinlich auch Lambdas, also könnten Sie vielleicht verwenden:
Tags und Links c++ c++11 virtual-functions bind member-function-pointers