unique_ptr автозаполнение в затмении - PullRequest
5 голосов
/ 19 марта 2012

Я играю с unique_ptr. В моем последнем сообщении люди помогли мне скомпилировать программу, которая использовала этот указатель, указав -std = c ++ 0x во время компиляции. Теперь мне было интересно, если есть какой-либо способ, чтобы проинструктировать Eclipse рассмотреть C ++ 11 при автозаполнении?
unique_ptr не входит в список std :: namespace, и я не могу найти методы (сброс, перемещение ...), связанные с unique_ptr.

Спасибо Вахид

Ответы [ 2 ]

3 голосов
/ 18 июня 2015

Заголовок «memory» (вероятно, находится в /usr/include/c++/4.9/memory) включает только «unique_ptr.h» и «shared_ptr.h» (вероятно, находится в /usr/include/c++/4.9/bits /unique_ptr.h и /usr/include/c++/4.9/bits/shared_ptr.h), если макрос "__cplusplus" равен или больше, чем "201103L". Проверьте себя в файле memory.h, чтобы увидеть условие препроцессора "#if" в строке 69 (или найдите строку "#if __cplusplus> = 201103L").

Как уже упоминалось, компиляция по стандартам "-std = c ++ 0x" или более поздней версии c ++ (-std = c ++ 11 или -std = c ++ 14) решает ошибки компиляции, но не индексацию затмения и проблема автозаполнения.

Для решения проблемы индексации затмения я добавил макрос препроцессора «__cplusplus» в свойства сборки проекта со значением «201103L», а затем обновил индекс;

Чтобы добавить макрос препроцессора:

«щелкните правой кнопкой мыши проект в проводнике проекта» >> Свойства >> C / C ++ Общие >> Включает препроцессор >> Записи >> GNU C ++ >> Записи настроек пользователя CDT >> Добавить ... >> Макрос препроцессора;

Затем введите макрос с именем "__cplusplus" и значением "201103L";

Затем, чтобы обновить индекс, выполните:

"щелкните правой кнопкой мыши проект в проводнике проекта" >> Индекс >> Перестроить;

Ps .: Я использовал gcc 4.9.2 и Eclipse Luna (4.4.2), на Ubuntu 15.04 64bit

1 голос
/ 19 марта 2012

Полагаю, вы должны добавить определение __GXX_EXPERIMENTAL_CXX0X__ к своим "путям и символам" в Eclipse. См. Также этот вопрос GNU C ++, как проверить, когда действует -std = c ++ 0x? и тот же вопрос Индексатор Eclipse не может разрешить shared_ptr для shared_ptr.

...