将构造函数传递给共享指针
Passing constructor to shared pointer
感谢任何愿意提供帮助的人:
我正在尝试用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());
相关文章:
- 如何从具有移动语义的类对象中生成共享指针
- 使用共享指针的函数调用,其对象应为 const
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 如何访问由共享指针保存的类方法?
- 从矢量或地图中删除共享指针
- 使用共享指针时,从共享指针本身释放内存的机制是什么
- 使用共享指针实现复制 c'tor?
- 共享指针继承,而不先显式强制转换
- 如何检查类中共享指针的有效性?
- std::排序在共享指针的向量上
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- 嵌套类、继承和C++中的共享指针
- 制作一对共享指针并推送一个向量
- 如何将共享指针用作函数参数
- 是否可以/希望创建不可复制的共享指针模拟(以启用weak_ptr跟踪/借用类型语义)?
- 尝试通过共享指针使用变量时读取访问冲突
- 如何将元素插入到标准::地图的共享指针中?
- 共享指针生存期
- 初始化可变数据结构中的共享指针向量
- 阻止在返回时复制共享指针