如何初始化作为构造函数中的类成员的共享指针

时间:2017-05-25 19:20:53

标签: c++ pointers shared-ptr

我有一个共享指针,但无法将其初始化为0。

这是我的代码:

class ROSThreadObjTest
{
private:
    std::shared_ptr<int> var;
    std::vector<ROSThreadObj> threads;
    std::vector<void *(*)(void *)> functions;

public:

    ROSThreadObjTest():(new int(0))
    {
    }

如何在调用构造函数时修改构造函数以将var的值设置为0?

1 个答案:

答案 0 :(得分:2)

如果您想分配新指针并将int设置为0,那么您可以使用std::make_shared

ROSThreadObjTest() : var(std::make_shared<int>(0)) {}

如果您想将指针设置为nullptr(如果这是0的意思),那么您不必在构造函数中做任何特殊操作,因为shared_ptr将默认初始化为。