Ошибка компиляции unique_ptr - PullRequest
19 голосов
/ 19 марта 2012

Полагаю, это неловко, если я скажу, что не могу заставить это скомпилироваться.не могли бы вы помочь мне:

#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

Ответы [ 2 ]

32 голосов
/ 19 марта 2012

Это всего лишь предположение.

Скорее всего, вы скомпилировали свою программу следующим образом (или аналогично):

g++ main.cpp

Если вы это сделали, то проблема в том, что g ++ использует c ++03 по умолчанию.Чтобы использовать функции c ++ 11 (и std::unique_ptr), вам необходимо использовать более новую версию c ++:

g++ -std=c++11

или

g++ -std=c++14

, и я бы рекомендовал использовать также -Wall -Wextra -pedantic.

4 голосов
/ 21 августа 2015

Если вы используете Code :: Blocks , перейдите на Настройки> Компилятор> Глобальные настройки компилятора> Настройки компилятора и найдите Пусть g ++ следует C ++11 Стандарт языка ISO C ++ [-std=c++11] и отметьте его!

( Code :: Blocks добавит -std=c++11 для вас при компиляции)

...