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 标准中不可用。
我正在学习智能指针,在尝试编译以下 "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 标准中不可用。