如何调用基类&x27;是函数的输入参数的虚拟函数 使用C++,我有< /P> struct Base { virtual void stuff(/*base stuff*/); }; struct Derived : public Base { void stuff(/*derived stuff*/); }; void function1(Derived& obj){ obj.stuff(); }
在这个场景中,function1将使用派生的do()函数。如果在function1中,我想调用基类的do()函数呢?如果我将function1调用为如何调用基类&x27;是函数的输入参数的虚拟函数 使用C++,我有< /P> struct Base { virtual void stuff(/*base stuff*/); }; struct Derived : public Base { void stuff(/*derived stuff*/); }; void function1(Derived& obj){ obj.stuff(); },c++,inheritance,virtual-functions,C++,Inheritance,Virtual Functions,在这个场景中,function1将使用派生的do()函数。如果在function1中,我想调用基类的do()函数呢?如果我将function1调用为 function1(动态强制转换(派生对象))?在更正代码中的大量错误后,这确实是可以实现的: #include <iostream> class Base { public: virtual void foo() { std::cout << "Base\n"; } }; class Derived : pub
function1(动态强制转换(派生对象))
?在更正代码中的大量错误后,这确实是可以实现的:
#include <iostream>
class Base {
public:
virtual void foo() { std::cout << "Base\n"; }
};
class Derived : public Base {
public:
void foo() { std::cout << "Derived\n"; }
};
void function1(Derived *p) {
p->Base::foo(); // <<<<< Here is the magic >>>>>
}
int main() {
Derived d;
function1(&d);
}
(请参阅)
这个
和do
对于标识符来说是非常不幸的名称……好问题,但我认为这是不可能的。
Base