gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:16:17 25 4
gpt4 key购买 nike

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

我正在尝试用 C++ 创建一个 Singleton 类,我是该语言的新手。我的 scrum 团队方法说我们应该只使用共享指针。但是,当我尝试将构造函数传递到我的 Singleton 对象(共享指针)时,出现错误,例如“二进制‘=’:没有找到需要右手操作数的运算符……”。基本上不兼容的类型转换。在下面提供必要的代码:

//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 master 担心我的进度。

最佳答案

您没有传递构造函数。事实上,目前在 C++ 中没有办法传递构造函数。您正在将临时 DeviceHandle 对象分配给 device。然而,some documentation很明显没有赋值运算符采用 T。就此而言,它也没有一个赋值运算符可以接受类似函数的东西(比如构造函数)。

相反,智能指针具有重置:

device.reset(new DeviceHandle());

关于c++ - 将构造函数传递给共享指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33928465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com