将构造函数传递给共享指针

Passing constructor to shared pointer

本文关键字:共享 指针 构造函数      更新时间:2023-10-16

感谢任何愿意提供帮助的人:

我正在尝试用C++创建一个Singleton类,而且我是该语言的新手。我的scrum团队方法说我们应该只使用共享指针。然而,当我试图将构造函数传递到Singleton对象(共享指针)时,我会遇到错误,例如"binary'=':找不到占用右手操作数的运算符…"。基本上是不兼容的类型转换。提供以下必要代码:

//Singleton getter class
std::shared_ptr<LibMouse3d::LibCoreMouse3d::DeviceHandle> LibMouse3d::LibCoreMouse3d::DeviceHandle::getInstance(){
    if(device == NULL){
        //trying pass constructor into shared pointer object
        device = LibMouse3d::LibCoreMouse3d::DeviceHandle();
    }
    return device;
}

这是我的构造函数:

LibMouse3d::LibCoreMouse3d::DeviceHandle::DeviceHandle() {
    this->InitDevice();
}

头文件中的对象

//singleton object - device
std::shared_ptr<DeviceHandle> device;

谢谢你的努力,如果我忘记了什么或添加了不相关的信息,我很抱歉。这是我在这里的第一个问题,我有一段时间无法用谷歌搜索自己的答案,我不想让我的scrum大师担心我的进步。

您没有传递构造函数。事实上,目前还没有办法在C++中传递构造函数。您正在将临时DeviceHandle对象分配给device。然而,一些文档清楚地表明,不存在接受T的赋值运算符。就这一点而言,它也没有一个赋值运算符来接受类似函数的东西(比如构造函数)。

相反,智能指针具有reset:

device.reset(new DeviceHandle());