У меня есть ссылка ref
:Как вызвать виртуальный метод без полиморфного эффекта?
Foo &ref = ..
Я хотел бы вызвать метод ref.say()
, который определяется как виртуальный в Foo
, и я знаю, что он переписан в дочерних классах (потому что я их писал, а).
Однако я бы хотел позвонить say
, как если бы он был не полиморфный, поэтому версия, которая определена в Foo, а не в дочерних классах.
Как это сделать?
Одна вещь, которая приходит мне на ум - взять указатель ref
, чем разыгрывать ее, и этот трюк должен убить полиморфизм, но я не уверен, что это гарантированно принесет желаемый эффект.
Обратите внимание: я не сижу внутри Foo или любого его дочернего элемента, дерево Foo - это внешняя структура из моего текущего POV.
Отлично, я совершенно не знал о таком синтаксисе. – greenoldman
@greenoldman Вы, вероятно, видели использование, как 'Base :: foo()' before, для вызова реализации базы. Это просто означает 'this-> Base :: foo()', потому что 'this' неявно. – Simple
@ Простой, спасибо. Я думал об этом синтаксисе как о настройке области. – greenoldman