C++ 错误:‘;独特的ptr&x2019;不是‘;标准&x2019;
我想这是不言自明的——我似乎不能使用C++11的特性,尽管我认为我已经正确地设置了一切——这可能意味着我没有 这是我的密码:C++ 错误:‘;独特的ptr&x2019;不是‘;标准&x2019;,c++,c++11,g++,unique-ptr,C++,C++11,G++,Unique Ptr,我想这是不言自明的——我似乎不能使用C++11的特性,尽管我认为我已经正确地设置了一切——这可能意味着我没有 这是我的密码: #include <cstdlib> #include <iostream> class Object { private: int value; public: Object(int val) { value = val; } int g
#include <cstdlib>
#include <iostream>
class Object {
private:
int value;
public:
Object(int val) {
value = val;
}
int get_val() {
return value;
}
void set_val(int val) {
value = val;
}
};
int main() {
Object *obj = new Object(3);
std::unique_ptr<Object> smart_obj(new Object(5));
std::cout << obj->get_val() << std::endl;
return 0;
}
下面是我编译代码的方式:
ubuntu@ubuntu:~/Desktop$g++main.cpp-o运行--std=c++11
main.cpp:在函数“int main()”中:
main.cpp:25:2:错误:“unique_ptr”不是“std”的成员
main.cpp:25:24:错误:在“>”标记之前应该有主表达式
main.cpp:25:49:错误:“smart_obj”未在此范围内声明
请注意,我尝试了-std=c++11
和-std=c++0x
,但均无效
我正在英特尔x64机器上的闪存驱动器上运行Ubuntu12.04 LTS。您需要在定义和的位置包含标题
#include <memory>
因此,我在2020年学到的-memory.h位于/usr/include和/usr/include/c++/4.8.5中,您需要在第一个之前找到第二个。
在Eclipse中,使用项目->属性->路径和符号->包含->添加来设置顺序。。。如果需要,设置第一个 ,你需要包含包含解决问题的“包含”,至少在我的UBTO to Linux机器告诉你需要包括的标题。对不起,我是C++新手。如果它是在中定义的,为什么要用作std::unique_ptr?@AoI:“std”是名称空间。“memory”仅表示定义它的头文件。这是一个非常好的学习资源
g++ main.cpp -o run -std=c++11
// ^