我正在使用一些生产代码,其中一些生产代码我无法安全地修改(不会破坏事物)。我的问题是,我想使用一个特定的方法,其中的一个参数是指向一个类的指针。然而,类作为参数不会做我想要的。继承:使用父指针的继承方法
所以我写了这个类的一个子类,试图调用上面的函数,但它仍然使用父类的方法。
我有以下MWE:
#include <iostream>
class Parent
{
public:
Parent() {};
void method() {std::cout<<"in Parent\n";}
};
class Child : public Parent
{
public:
Child() {};
void method() {std::cout<<"in Child\n";}
};
void secondMethod(Parent* Pptr)
{
Pptr->method();
}
int main()
{
Child c = Child();
Parent* parentPtr = &c;
c.method();
parentPtr->method();
secondMethod(parentPtr);
secondMethod(&c);
return 0;
}
在上面的例子中运行这个输出是当然的:
in Child
in Parent
in Parent
in Parent
我相信问题是切?基本上我是投射到父类的指针,所以它被认为是父类。
我已经看到了通过在父类中创建虚拟方法的方法,但是我没有这个选项。
有没有什么办法让secondMethod实际使用孩子的方法?具体而言,无需更改父类或第二个方法。