如何解决"' shared_ptr'未在此范围内宣布"错误?

时间:2015-03-26 10:36:09

标签: c++11 compiler-errors shared-ptr

我正在尝试在Raspberry Pi上编译代码w / shared_ptrs:

#include <iostream>
using namespace std;
int main(int argc, char* argv[]){
   shared_ptr<string> message1(new string("Hello Raspberry Pi C++11"));
   cout << *message1 <<endl;
   return 0;
}

我收到以下错误:

test.cpp: In function 'int main(int, char**)': test.cpp:4:4: error: 'shared_ptr' was not declared in this scope
    shared_ptr<string> message1(new string("Hello Raspberry Pi C++11"));
    ^ test.cpp:4:21: error: expected primary-expression before '>' token
    shared_ptr<string> message1(new string("Hello Raspberry Pi C++11"));
                     ^ test.cpp:4:70: error: 'message1' was not declared in this scope
    shared_ptr<string> message1(new string("Hello Raspberry Pi C++11"));

我正在使用此命令进行编译:{{1​​}} G ++版本是g ++(Raspbian 4.8.2-21~rpi3rpi1)4.8.2

请帮忙。

2 个答案:

答案 0 :(得分:8)

您需要在文件开头添加内存标题。

#include <memory>

答案 1 :(得分:1)

如果上面的解决方案即使在包含标题之后也不起作用,请确保编译器传递参数--std = c ++ 11

如果用gcc编译它,你应该包括头部tr1头部,即#include而不是和std :: tr1 :: shared_ptr。