gpt4 book ai didi

c++ - 如何将基本智能指针转换为 C++ 中的派生指针?

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:40 27 4
gpt4 key购买 nike

代码:

class Base {
...
};

class Derived : public Base {
void OnlyOwnedByDerived{
...
}
};

问题是:1. 如果我使用 Base 类的智能指针来引用 Derived 类,我这样做的原因是我想获得只适合虚函数的动态绑定(bind)的好处。但是如果我想使用只属于派生类的函数,我该怎么办?不同类的智能指针之间的 static_cast 给我一个错误...

  1. 我能想到的最直接的方法是使用原始指针而不是智能指针...

最佳答案

在 C++11 中,有 dynamic_pointer_cast

你可以使用:

void func(std::shared_ptr<Base> b){
b->VirtualBaseFunction();
if(auto d = dynamic_pointer_cast<Derived>(b)){
d->DerivedSpecificFunction():
....more code
}
}

关于c++ - 如何将基本智能指针转换为 C++ 中的派生指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38733698/

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