Значение по умолчанию для boost :: shared_ptr в конструкторе класса - PullRequest
10 голосов
/ 20 декабря 2010

Предположим, у меня есть класс, как

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?)

Возможно ли это? В настоящее время я использую способ двух конструкторов, но было бы здорово сделать это таким образом.

Ответы [ 2 ]

11 голосов
/ 20 декабря 2010
#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

3 голосов
/ 20 декабря 2010

Я наконец нашел его здесь , я могу использовать конструктор по умолчанию для общего указателя следующим образом:

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