访问对象unique_ptr指向

时间:2017-08-18 10:48:58

标签: c++ smart-pointers

非常简单的问题:

我对C ++中的智能指针有点新意。我认为我拥有所有权,但我不知道如何访问他们实际指向的内容。当我尝试使用对象的成员函数/变量时,我只得到unique_ptr类的函数,这不是我想要的。

1 个答案:

答案 0 :(得分:4)

我可以看到三种方法:operator->operator*get()

以下是正在运行的代码示例:ideone it

#include <iostream>
#include <memory>

struct Foo
{
    Foo(std::string v) : value(v) {}
    void Bar() { std::cout << "Hello, " << value << "!" << std::endl; }
    std::string value;
};

int main() {

    std::unique_ptr<Foo> FooPtr = std::make_unique<Foo>("World");

    FooPtr->Bar();
    FooPtr.get()->Bar();
    (*FooPtr).Bar();

    return 0;
}