c++将unique_ptr作为对另一个函数的引用传递

标签 c++ unique-ptr

这看起来很基础,但我需要一些帮助。

我有一个示例类:

class myClass {
   int a;
   int b;

}

然后是一个工厂:

class myFactory {
    std::unique_ptr<myClass> getInstance()
    {
        return std::unique_ptr<myClass>(new myClass);
    }
}

然后我有几个函数将通过引用接收 myClass:

doSomething (myClass& instance)
{
    instance.a = 1;
    instance.b = 2;
}

还有 main 代码,我卡在那里:

main()
{
    myFactory factory;
    std::unique_ptr<myClass> instance = factory.getInstance();

    doSomething(instance.get()) <--- This is not compiling
}

如何正确调用 doSomething() 函数,按预期将实例作为引用传递?

注意 doSomething() 会修改实例数据...

最佳答案

std::unique_ptr<T>::get返回底层原始指针,而不是指针对象。 unique_ptr提供 operator*用于直接获取实例。

doSomething(*instance);

关于c++将unique_ptr作为对另一个函数的引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30324431/

相关文章:

C++:映射结构中的结构指针

C++ Unresolved token 问题

c++ - 返回值优化不适用于 const unique_ptr 成员?

c++ - 将 unique_ptr 移入 lambda 时,为什么不能调用 reset?

c++ - 如何在取消引用另一种类型后获得你得到的类型?

c++ - opencv 使用 cvFindStereoCorrespondenceBM 给出异常

python - 你如何将 Python cv2.cv.LoadImage 编码到 C IplImage->imageData 结构中

c++ - clang 和 gcc 在使用智能指针时不会警告多态性的非虚基析构函数?

c++ - 如何一次将多个 unique_ptr 插入 vector

C++ smart_ptr 不会导致堆栈溢出?