IntelliSense не находит определенные методы в исходном файле - PullRequest
0 голосов
/ 18 января 2019

У меня есть проект c ++ в visual studio, который только в ОДНОМ классе IntelliSense не может разрешить пару объявленных методов в заголовочном файле. Поэтому, когда я пытаюсь нажать «перейти к определению», IntelliSense не открывает исходный файл, потому что он не может найти определение метода.

Я уже пытался добавить файл cpp.hint с объявлением макросов, используемых в этих методах. В других классах это помогло решить проблему, но не для этого класса. Я также каждый раз удалял папку ipch и файл *.db.

Я уже обнаружил, что IntelliSense может разрешить первый метод, объявленный после общего / защищенного / частного спецификатора:
methods found by intelliSense

Таким образом, переключение порядка помогает IntelliSense найти его ... methods found by intelliSense

Одним из решений BAD было бы добавление общего / защищенного / частного спецификатора для каждого метода, но вы можете себе представить, что я не хочу этого делать. Я также работаю с Qt5, но я не думаю, что это проблема здесь. Я также не думаю, что проблема заключается в коде определений, потому что не имеет значения, какой метод стоит первым после спецификатора.
Кто-то уже сталкивался с такой проблемой и знает, как ее решить?

Спасибо за все ваши пожелания.

EDIT: Это определенно проблема Qt, когда я закомментирую определение Q_OBJECT в классе, IntelliSense может найти все методы. К сожалению, я не могу скомпилировать свой код без него.

1 Ответ

0 голосов
/ 18 января 2019

Итак, я смог «решить» проблему.
Я не знаю, почему это произошло, или почему мое «решение» решило это.
Я временно добавил метод для отладки, который был определен как первый метод перед конструктором. Определение этого метода также было в заголовочном файле.
Когда я переключил этот метод ниже конструктора, IntelliSense начал работать (снова) в этом классе. Кажется, это ошибка в Qt и IntelliSense, работающих вместе.

Старый:
enter image description here

Новое:
enter image description here

...