РЕДАКТИРОВАТЬ: Решение: повторно объявить "using namespacer std;" в файле .cpp!

Я использую Code :: Blocks, и я не могу получить векторный объект, чтобы показать мне его доступные функции вне заголовка, в котором я его объявляю!

Я не могу получить коробку, показывающую мне все функции, которые я могу выполнять с объектом.

У меня это в моем .h:

    vector<DrawObject> objects;

И в моем .cpp (файла .h) это ничего не показывает:

    objects.

Если я делаю объекты. в .cpp он покажет все, как должно. Это будет работать, и это мелочь, но было бы удобно.

0
parreirat 5 Янв 2013 в 23:17
Вы пытались предоставить полное решение для пространства имен в объявлении? std::vector<DrawObject> Я видел и более глупые вещи, связанные с функциями типа intellisense. Стоит попробовать.
 – 
WhozCraig
5 Янв 2013 в 23:20
Вы включаете файл заголовка в свой cpp?
 – 
K-ballo
5 Янв 2013 в 23:21
Да, как по вектору, так и с синтаксисом пространства имен using.
 – 
GigaBass
5 Янв 2013 в 23:21
1
Автозавершение кода для C ++ сложно, потому что IDE по существу необходимо скомпилировать весь (потенциально неполный и ошибочный) код. До libclang это было просто невозможно для обычных редакторов, и, как следствие, Code :: Blocks предлагает только очень элементарное завершение кода.
 – 
Konrad Rudolph
5 Янв 2013 в 23:24
Да, code :: blocks - моя первая IDE, которую я использовал для c ++, и я согласен, что завершение кода немного слабее ... но единственное, с чем я могу сравнить, - это завершение кода Eclipse с Java, может быть невыполнимым. сравнивать с.
 – 
GigaBass
5 Янв 2013 в 23:25

1 ответ

Лучший ответ

Это сделано намеренно, и я подозреваю, что вы ничего не можете сделать.

Автозавершение кода для C ++ сложно, потому что IDE по существу необходимо скомпилировать весь (потенциально неполный и ошибочный) код. В любом случае C ++ сложно анализировать, не говоря уже о необходимости заботиться о непрерывной фоновой компиляции неполного кода.

Как следствие, большинство IDE (включая Code :: Blocks) на самом деле не реализуют полный синтаксический анализатор, а только очень элементарное подмножество, а завершение кода довольно примитивно.

Это может измениться в будущем, поскольку сейчас существует мощное и довольно эффективное решение под названием libclang для это. Но до тех пор, пока Code :: Blocks не будет исправлен для внутреннего использования, такое поведение будет сохраняться.

1
Konrad Rudolph 5 Янв 2013 в 23:28
1
Нашел решение: переобъявление с использованием пространства имен std; на моем .cpp работал!
 – 
GigaBass
5 Янв 2013 в 23:30
Принято в связи с объяснением плюс интересная ссылка
 – 
GigaBass
5 Янв 2013 в 23:35