如何在构造函数中初始化作为 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
将默认初始化为什么。
我有一个共享指针,但无法将其初始化为 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
将默认初始化为什么。