c ++将unique_ptr作为对另一个函数

时间:2015-05-19 11:32:13

标签: 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()将修改实例数据...

1 个答案:

答案 0 :(得分:3)

std::unique_ptr<T>::get返回基础原始指针,而不是指针。 unique_ptr提供operator*直接获取实例。

doSomething(*instance);