gpt4 book ai didi

c++ - 从转换为基对象的 Void 指针调用派生类方法

转载 作者:搜寻专家 更新时间:2023-10-31 01:45:15 26 4
gpt4 key购买 nike

我想从空指针调用派生类中的重写方法。这在运行时失败,因为调用了虚拟 Base::foo() 方法,而不是 Derived::foo()。这是相关代码的工作原理:

Class Base  
{
public:
Base();
virtual void foo() = 0;
}

Class Derived: public Base
{
public:
Derived();
void foo();
}

int main()
{
Derived* dv = new Derived();
void* ptr = dv;

static_cast<Base*>(ptr)->foo();
}

最佳答案

除了运气,这不可能成功。由于这是一个 static_cast,因此必须在编译时知道转换。但是因为指针是 void *,所以编译器无法知道指针需要如何转换以指向派生内部的基实例。

关于c++ - 从转换为基对象的 Void 指针调用派生类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22397203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com