在构造函数中使用 shared_ptr 对象有效但在析构函数中无效
using a shared_ptr object in constructor works but not in destructor
我有一个 class 结构如下:
class CLSS
{
public:
CLSS(const std::shared_ptr<someType>& pobj)
{
std::shared_ptr<someType> obj = pobj;
obj->somefunc("DDDD")
}
~CLSS()
{
}
};
这适用于现在的问题。但是,当我将 obj->info("DDDD")
的相同功能放入双构造函数时,它会出现 returns 错误,即:
...
~CLSS()
{
obj->info("DDDD")
}
....
----------------编辑
我试过了
class CLSS
{
public:
std::shared_ptr<someType> obj;
CLSS(const std::shared_ptr<someType>& pobj)
{
obj = pobj;
obj->somefunc("DDDD")
}
~CLSS()
{
}
};
但仍然无法编译,错误不是很可读。
obj
是构造函数中的局部变量。它在构造函数结束时被销毁。
您需要将其声明为您的 class.
的成员
我有一个 class 结构如下:
class CLSS
{
public:
CLSS(const std::shared_ptr<someType>& pobj)
{
std::shared_ptr<someType> obj = pobj;
obj->somefunc("DDDD")
}
~CLSS()
{
}
};
这适用于现在的问题。但是,当我将 obj->info("DDDD")
的相同功能放入双构造函数时,它会出现 returns 错误,即:
...
~CLSS()
{
obj->info("DDDD")
}
....
----------------编辑
我试过了
class CLSS
{
public:
std::shared_ptr<someType> obj;
CLSS(const std::shared_ptr<someType>& pobj)
{
obj = pobj;
obj->somefunc("DDDD")
}
~CLSS()
{
}
};
但仍然无法编译,错误不是很可读。
obj
是构造函数中的局部变量。它在构造函数结束时被销毁。
您需要将其声明为您的 class.