问题标签 [auto-ptr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5943 浏览

c++ - 没有构造函数的实例---匹配参数列表(可能是模板问题)

我目前正在尝试为我正在从事的项目的 cml ( http://www.cmldev.net/ ) 数学库编写一个基本包装器。我有一个包含一个私有成员的 cml 矢量类的包装器

(注意我省略了构造函数的实现以减小大小)

在另一个文件中,我使用了一些#defines 来让我的话更容易。

现在当我尝试使用 Vector3f 时出现我的问题

我得到了错误:

“没有构造函数的实例 'Math::Vector3::Vector3 [with T = float]' 匹配参数列表”

我已经尝试从更改auto_ptr为常规指针,以防模板出现问题也尝试在不使用的情况下声明变量#define并且发生同样的问题,我是否在这里遗漏了一些东西,因为我可以在我的实现中看到该构造函数。

0 投票
3 回答
489 浏览

c++ - C++ auto_ptr 和复制构造

如果我有课

如何为 C 定义复制构造函数:

它不可能是

因为我想如果我从其他人那里复制 auto_ptr,我已经通过删除所有权更改了其他人。将复制构造函数定义为是否合法

0 投票
4 回答
2499 浏览

c++ - 为什么不 auto_ptr有 operator!() 定义吗?

标题几乎总结了我的问题。为什么不能执行以下操作来检查空指针?

这必须改为:

为什么auto_ptr<T>不简单地operator!()定义?

0 投票
5 回答
638 浏览

c++ - auto_ptr 和容器 - C++

我目前正在研究一个 2D 游戏引擎,并且我已经阅读了有关 auto_ptr 以及如何永远不要将它们放入标准容器中的信息。

我的引擎有这样的结构:

StateManager -- 有很多 --> 状态的。

状态是在引擎之外的 main 中创建和分配的。我希望引擎存储所有状态的列表/向量,以便我可以根据命令在它们之间进行更改。

例如:

p>

由于状态仅在应用程序死亡时死亡,我可以使用这种方法吗?

p>

StateManager 应该只维护一个指向状态的指针向量,它不需要拥有所有权。当我想更改引擎中的状态时,我只需更改 activeState 指针以指向在 stateList 向量中找到的所需状态。

这是一个不好的方法吗?

0 投票
2 回答
2096 浏览

c++ - 关于 auto_ptr::reset 的问题

请任何人都可以从 C++ 参考站点解释此代码

0 投票
2 回答
339 浏览

c++ - 为什么`myvector.push_back(autoPtr.release())`提供强大的异常安全保障?

编辑:我应该提到,我正在查看Boost 的文档ptr_sequence_adapter,它声称他们的适配器template< class U > void push_back( ::std::auto_ptr<U> x );等同于做vec.push_back(autoPtr.release());,并且还提供了强大的异常保证。然后我意识到我混淆了他们对实施效果的描述与实施的实际情况,所以这个问题是半荒谬的。我只是把它留在这里留给后代。

对我来说,似乎调用std::auto_ptr<t>会成功,然后调用std::vector<t*>::push_back可能会引发异常,并且指针会被泄露。

看来您必须这样做:

0 投票
4 回答
343 浏览

c++ - 代码审查问题 - 我应该允许将 auto_ptr 作为参数传递吗?

考虑一下我最近在我们的代码库中看到的以下示例代码:

我不喜欢这样 - 宁愿这样写:

但这真的有问题吗?

0 投票
4 回答
65870 浏览

c++ - std::auto_ptr 到 std::unique_ptr

随着新标准的到来(某些编译器中已经有部分可用),新类型std::unique_ptr应该是std::auto_ptr.

它们的用法是否完全重叠(所以我可以对我的代码进行全局查找/替换(不是我会这样做,但如果我这样做了))还是我应该知道阅读文档中不明显的一些差异?

此外,如果它是直接替换,为什么要给它一个新名称而不仅仅是改进std::auto_ptr

0 投票
1 回答
833 浏览

c++ - auto_ptr 陷阱和陷阱

除了使用 auto_ptr 的所有已知好处之外,什么是 auto_ptr “最坏的做法”?

  1. 创建 auto_ptrs 的 STL 约束器。auto_ptrs 不满足“CopyConstructable”要求。另见 Scott Meyer 的“Effective STL”,第 8 项。

  2. 创建数组的auto_ptrs 在销毁时,auto_ptr 的析构函数使用'delete'(而不是'delete[]')来销毁拥有的对象,因此此代码产生未定义的行为:auto_ptr api(new int[42]);

  3. 在使用 auto_ptr 成员的类中不处理 copy-ctor 和 op=。有人可能会天真地认为通过使用 auto_ptr 成员不需要为类实现复制构造函数/赋值运算符。然而,即使是单个 auto_ptr 成员也会“毒害”一个类(即违反“CopyConstructable”和“Assignable”要求)。在复制/分配操作期间,此类对象将部分损坏。

还有更多的 auto_ptr 陷阱吗?

0 投票
5 回答
47519 浏览

c++ - 为什么不推荐使用 auto_ptr?

我听说auto_ptr在 C++11 中被弃用了。这是什么原因?

我也想知道 和 之间的auto_ptr区别shared_ptr