感谢愿意提供帮助的人:
我正在尝试用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主人担心我的进展。
答案 0 :(得分:2)
您没有传递构造函数。实际上,目前无法在C ++中传递构造函数。您正在为DeviceHandle
分配一个临时device
对象。但是,some documentation表明没有赋值运算符使用T
。就此而言,它也没有一个赋值函数的赋值运算符(如构造函数)。
相反,智能指针有reset
:
device.reset(new DeviceHandle());