gpt4 book ai didi

c++ - 作为类成员的通用 shared_ptr

转载 作者:行者123 更新时间:2023-11-27 23:26:57 25 4
gpt4 key购买 nike

我想有一个shared_ptr作为一个类的成员,但是shared_ptr管理的类型每次都不同,而且只有在运行时才知道。有没有办法声明这样的成员并在以后初始化它?

最佳答案

是的。

使用运行时多态性,这意味着定义一个公共(public)基类,比如 Base 并将公共(public)接口(interface)声明为其中的虚函数,然后从它派生并在派生类中实现虚函数。如果你这样做,那么你可以像这样使用:

std::share_ptr<Base> ptr;
//now ptr can store an instance of any derived class from Base

或者如果无法定义公共(public)基类,您可以使用 boost::any。如果你不能使用 Boost,那么你可以自己定义 any 类。在此站点和谷歌中搜索类型删除。

以下是关于类型删除的两页文章,您可以在 second page 上找到 boost::any 的实现。 (虽然不完整):

关于c++ - 作为类成员的通用 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8592447/

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