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

How to initialise a shared pointer that is a class member in the constructor

我有一个共享指针,但无法将其初始化为 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?

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

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

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