2014-08-14 5 views
0

Я пытаюсь скомпилировать небольшой код на C++, который invluses unique_ptr, как показано ниже.Почему компилятор g ++ не может найти unique_ptr?

#include <iostream> 
#include <memory> 

using namespace std; 

int main() 
{ 
    unique_ptr<int> p1(new int); 
} 

, когда я пытался скомпилировать код, используя г ++, он вырвет «unique_ptr» не был объявлен в этой области. Я пытался скомпилировать в ящике Linux. даже я попробовал вариант '-std = C++ 11'. Он говорил «непризнанная опция командной строки -std = C++ 11». Может кто-нибудь, пожалуйста, дайте мне знать, как это исправить?

+0

Вы * говорите * вы пробовали '-std = C++ 11', но сообщение об ошибке, которое вы цитируете, говорит, что вы использовали' -std = C++ 11'. Как вы знаете, параметры командной строки, как правило, чувствительны к регистру. Вот почему вам всегда рекомендуется копировать и вставлять, а не повторно вводить то, что, по вашему мнению, у вас есть. –

+0

Какова версия gcc, которую вы используете? Попробуйте из командной строки '$ g ++ --version' и отчитаться. – 101010

+0

Было сказано g ++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7.3) – kadina

ответ

3

Согласно GCC 4.4 release notes, unique_ptr не был в GCC в стандартной C++ библиотеки перед тем 4.4.

Так что вы можете сначала проверить свою версию GCC, используя g++ --version как @ 40two.

+0

г ++ версии: 4.4.7.3 – kadina

+0

+1 для проверки информации о выпуске – 101010

+0

Вы можете попробовать использовать 'станд = C++ 0x' вместо 'std = C++ 11', так как 4.4.7 не поддерживает C++ 11. –

1

Вы должны включить его, он выходит из <memory> library

#include <memory> 
+0

Также '-std = C++ 11' может помочь впоследствии. – Xarn

+0

Извините. Я включил заголовочный файл и попытался с -std = C++ 11, но не использовать – kadina

+2

Надеюсь, вы включили , не CoryKramer

Смежные вопросы