web-dev-qa-db-ja.com

unique_ptrコンパイルエラー

これをコンパイルできないと言ったら恥ずかしいことだと思います。私を助けてください:

#include<memory>
using namespace std;

int  main()
{
    std::unique_ptr<int> p1(new int(5));
    return 0;
}
$ gcc main.cpp 
main.cpp: In function ‘int main()’:
main.cpp:6:2: error: ‘unique_ptr’ was not declared in this scope
main.cpp:6:13: error: expected primary-expression before ‘int’
main.cpp:6:13: error: expected ‘;’ before ‘int’

$ gcc --version
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
19
rahman

これは推測です。

おそらくあなたはあなたのプログラムをこのように(または同様に)コンパイルしました:

g++ main.cpp

もしそうなら、問題はg ++がデフォルトとしてc ++ 03を使用することです。 c ++ 11機能を使用するには(およびstd::unique_ptr)、新しいバージョンのc ++を使用する必要があります:

g++ -std=c++11

または

g++ -std=c++14

と私はまた使用することをお勧めします-Wall -Wextra -pedantic

32
BЈовић

Code :: Blocksを使用している場合は、設定>コンパイラ>グローバルコンパイラ設定>コンパイラ設定に移動し、 g ++がC++ 11 ISO C++言語標準[-std=c++11]に従って、それを確認してください!

Code :: Blocksは、コンパイル時に-std=c++11を追加します)

4
Sevener