gpt4 book ai didi

c++ - 如何使用 std::make_shared 创建基类类型的智能指针?

转载 作者:行者123 更新时间:2023-12-01 13:51:13 25 4
gpt4 key购买 nike

我在这里做错了什么?我不敢相信下面的内容不能编译。您是否需要使用共享指针强制转换之类的?

struct Base
{
};

class Child : Base
{
};

int main()
{
std::shared_ptr<Base> p = std::make_shared<Child>();
}
我用微软编译器得到的错误是
error C2440: 'initializing': cannot convert from 'std::shared_ptr<Child>' to 'std::shared_ptr<Base>'

最佳答案

它确实有效。就是这样Baseprivate遗产。

struct Child : Base{};
或者
class Child : public Base{};
是修复。有趣的是 std::static_pointer_cast并且公司确实存在;但你在这里不需要它们。见 https://en.cppreference.com/w/cpp/memory/shared_ptr/pointer_cast

关于c++ - 如何使用 std::make_shared 创建基类类型的智能指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62595785/

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