20

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

#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
4

2 に答える 2

32

これは単なる推測です。

ほとんどの場合、このように(または同様に)プログラムをコンパイルしました:

g++ main.cpp

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

g++ -std=c++11

また

g++ -std=c++14

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

于 2012-03-19T07:48:54.193 に答える
4

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

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

于 2015-08-21T14:51:56.820 に答える