gpt4 book ai didi

c++ - 如何使用派生类的 auto_ptr 返回基类的 auto_ptr?

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

我正在处理一些必须返回 std::auto_ptr 的旧代码,我的经验相对较少。我遇到过这样的情况:

// I need to populate this function
std::auto_ptr<Base> Func()
{
std::auto_ptr<Derived> derivedPtr = new Derived;

// now I want to return

return derivedPtr; // error: conversion from std::auto_ptr<Derived> to std::auto_ptr<Base> is ambiguous
}

我需要先释放 auto_ptr 吗?真正过于明确的方式类似于 return static_cast<Base>(derivedPtr.release())。但我怀疑这不是必需的。

最佳答案

你可以使用...

return std::auto_ptr<Base>(derivedPtr);   // explicitly use constructor

……或者……

return derivedPtr.operator std::auto_ptr<Base>();  // use cast/conversion operator

(您不能只返回 derivedPtr 的原因是以上是模棱两可的候选者)。

关于c++ - 如何使用派生类的 auto_ptr 返回基类的 auto_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23691185/

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