【发布时间】:2015-05-18 10:25:51
【问题描述】:
这个问题延伸到Customising std::shared_ptr or boost::shared_ptr to throw an exception on NULL dereference。
我想要一个行为类似于 shared_ptr 的类,但是在取消引用 nullptr 时会引发异常。在上面的问题中,建议创建一个包含 shared_ptr 的包装器类,并让该包装器抛出异常。
不过,我还想继续使用 make_shared。有没有办法让 make_shared 与我的(或任何)包装类 shared_ptr 一起工作?符合以下原则的东西
checked_shared_ptr<MyClass> csp = make_checked_shared<MyClass>(...);
【问题讨论】:
-
我猜想继承自
shared_ptr并提供接受shared_ptr&的构造函数和赋值运算符(用于复制和移动)。 -
或者对包装器做同样的事情?并且也许将 make_shared 专门用于这种新类型?
-
@martin_pr,你不能编写函数模板的部分特化,你需要重载它(在你自己的命名空间中)。
-
@JonathanWakely 是的,很公平,我的错...
标签: c++ c++11 shared-ptr