unique_ptr 错误无法应用 ->

unique_ptr error cant apply ->

我正在学习智能指针,在尝试编译以下 "stupid" 代码时出现错误。

#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;
}

我只是想看看这是否有效,但我得到:"Applying -> to std::unique_ptr instead of a pointer",这看起来很奇怪。

我正在使用 C++ 11

Eit: 错误现已修复,我可以编译上面的代码了。然而,CLion 仍然给我 "Cant apply -> to std::uniq_ptr"-东西,这似乎是 IDE

的错误

class the default visibility is 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 标准中不可用。