可以在构造函数中使用shared_ptr对象,但不能在析构函数中使用



我有一个类,它的结构是这样的:

class CLSS
{
public:
CLSS(const std::shared_ptr<someType>& pobj) 
{
std::shared_ptr<someType> obj = pobj;
obj->somefunc("DDDD")
}
~CLSS()
{
}
};

可以解决现在的问题。然而,当我将obj->info("DDDD")的相同函数放入析构函数中时,它返回错误,即:

...
~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是构造函数中的局部变量。它在构造函数结束时被销毁。你需要将它声明为类的成员。

相关内容

  • 没有找到相关文章

最新更新