【问题标题】:Default value for boost::shared_ptr on class constructor类构造函数中 boost::shared_ptr 的默认值
【发布时间】:2010-12-20 02:22:58
【问题描述】:

假设我有类似的课程

class A{
    public:
    A(int a, boost::shared_ptr<int> ptr){
        // whatever!
    }
};

我的问题是,该 ptr 的默认值是多少?我希望能够使用

创建该类的实例
A myA(5);

当然我知道我可以只用一个参数创建另一个构造函数,但我正在寻找类似的东西

A(int a, boost::shared_ptr<int> ptr = WAT?)

有可能吗?目前我正在使用两个构造函数的方式,但是这样做会很棒。

【问题讨论】:

    标签: c++ boost smart-pointers multiple-constructors


    【解决方案1】:
    #include <boost/make_shared.hpp>
    
    A(int a, boost::shared_ptr<int> ptr = boost::make_shared<int>())
    

    查看http://www.boost.org/doc/libs/1_43_0/libs/smart_ptr/make_shared.html

    【讨论】:

    • 感谢您的回答。我没有尝试以这种方式使用 make_shared,即使我在从其他地方调用该构造函数时正在使用它。但是,最好将“ptr”作为其默认值而不是给它一个虚拟值,因为我使用的不是整数,而是一个成熟的类。
    • 不带虚拟值也可以调用,我只是举个例子。
    【解决方案2】:

    我终于找到了here,我可以像这样使用共享指针的默认构造函数:

    A(int a, boost::shared_ptr<int> ptr = boost::shared_ptr<int>())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-18
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多