unique_ptr错误无法应用 - >

时间:2018-01-07 23:31:00

标签: c++ smart-pointers unique-ptr

我正在学习智能指针以及在尝试编译以下内容时#34;愚蠢"代码我收到错误。

#include <memory>
#include <iostream>

class Test
{
    std::string myString="dumm";
};

int main()
{

    std::unique_ptr<Test> test(new Test());
    std::cout<<test->myString<<std::endl;

    return 0;
}

我只想知道,这是否有效,但我得到:&#34;申请 - &gt;到std :: unique_ptr而不是指针&#34;,这看起来很奇怪。

我正在使用c ++ 11

Eit:错误现已修复,我可以编译上面的代码。然而,CLion仍然给我&#34;不适用 - &gt;到std :: uniq_ptr&#34; -stuff,这似乎是IDE的错误

1 个答案:

答案 0 :(得分:4)

class中,默认可见性为private,这使myString字段对test对象不可见。设为public

#include <iostream>
#include <memory>
#include <string>

class Test {
public:
    std::string myString = "dumm";
};

int main() {
    std::unique_ptr<Test> test(new Test());
    std::cout << test->myString;
}

如果编译C ++ 14及更高版本,则首选std::make_unique直接使用new

std::unique_ptr<Test> test = std::make_unique<Test>();

此功能在您正在使用的C ++ 11标准中不可用。