问题标签 [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.
c++ - 没有构造函数的实例---匹配参数列表(可能是模板问题)
我目前正在尝试为我正在从事的项目的 cml ( http://www.cmldev.net/ ) 数学库编写一个基本包装器。我有一个包含一个私有成员的 cml 矢量类的包装器
(注意我省略了构造函数的实现以减小大小)
在另一个文件中,我使用了一些#defines 来让我的话更容易。
现在当我尝试使用 Vector3f 时出现我的问题
我得到了错误:
“没有构造函数的实例 'Math::Vector3::Vector3 [with T = float]' 匹配参数列表”
我已经尝试从更改auto_ptr
为常规指针,以防模板出现问题也尝试在不使用的情况下声明变量#define
并且发生同样的问题,我是否在这里遗漏了一些东西,因为我可以在我的实现中看到该构造函数。
c++ - C++ auto_ptr 和复制构造
如果我有课
如何为 C 定义复制构造函数:
它不可能是
因为我想如果我从其他人那里复制 auto_ptr,我已经通过删除所有权更改了其他人。将复制构造函数定义为是否合法
c++ - 为什么不 auto_ptr有 operator!() 定义吗?
标题几乎总结了我的问题。为什么不能执行以下操作来检查空指针?
这必须改为:
为什么auto_ptr<T>
不简单地operator!()
定义?
c++ - auto_ptr 和容器 - C++
我目前正在研究一个 2D 游戏引擎,并且我已经阅读了有关 auto_ptr 以及如何永远不要将它们放入标准容器中的信息。
我的引擎有这样的结构:
StateManager -- 有很多 --> 状态的。
状态是在引擎之外的 main 中创建和分配的。我希望引擎存储所有状态的列表/向量,以便我可以根据命令在它们之间进行更改。
例如:
由于状态仅在应用程序死亡时死亡,我可以使用这种方法吗?
StateManager 应该只维护一个指向状态的指针向量,它不需要拥有所有权。当我想更改引擎中的状态时,我只需更改 activeState 指针以指向在 stateList 向量中找到的所需状态。
这是一个不好的方法吗?
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
可能会引发异常,并且指针会被泄露。
看来您必须这样做:
c++ - 代码审查问题 - 我应该允许将 auto_ptr 作为参数传递吗?
考虑一下我最近在我们的代码库中看到的以下示例代码:
我不喜欢这样 - 宁愿这样写:
但这真的有问题吗?
c++ - std::auto_ptr 到 std::unique_ptr
随着新标准的到来(某些编译器中已经有部分可用),新类型std::unique_ptr
应该是std::auto_ptr
.
它们的用法是否完全重叠(所以我可以对我的代码进行全局查找/替换(不是我会这样做,但如果我这样做了))还是我应该知道阅读文档中不明显的一些差异?
此外,如果它是直接替换,为什么要给它一个新名称而不仅仅是改进std::auto_ptr
?
c++ - auto_ptr 陷阱和陷阱
除了使用 auto_ptr 的所有已知好处之外,什么是 auto_ptr “最坏的做法”?
创建 auto_ptrs 的 STL 约束器。auto_ptrs 不满足“CopyConstructable”要求。另见 Scott Meyer 的“Effective STL”,第 8 项。
创建数组的auto_ptrs 在销毁时,auto_ptr 的析构函数使用'delete'(而不是'delete[]')来销毁拥有的对象,因此此代码产生未定义的行为:auto_ptr api(new int[42]);
在使用 auto_ptr 成员的类中不处理 copy-ctor 和 op=。有人可能会天真地认为通过使用 auto_ptr 成员不需要为类实现复制构造函数/赋值运算符。然而,即使是单个 auto_ptr 成员也会“毒害”一个类(即违反“CopyConstructable”和“Assignable”要求)。在复制/分配操作期间,此类对象将部分损坏。
还有更多的 auto_ptr 陷阱吗?
c++ - 为什么不推荐使用 auto_ptr?
我听说auto_ptr
在 C++11 中被弃用了。这是什么原因?
我也想知道 和 之间的auto_ptr
区别shared_ptr
。