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

时间:2015-11-25 23:54:04

标签: c++ shared-ptr

感谢愿意提供帮助的人:

我正在尝试用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主人担心我的进展。

1 个答案:

答案 0 :(得分:2)

您没有传递构造函数。实际上,目前无法在C ++中传递构造函数。您正在为DeviceHandle分配一个临时device对象。但是,some documentation表明没有赋值运算符使用T。就此而言,它也没有一个赋值函数的赋值运算符(如构造函数)。

相反,智能指针有reset

device.reset(new DeviceHandle());