Как заставить автозаполнитель распознавать переменную автоматического типа, когда ей назначен статически приведенный указатель? - PullRequest
0 голосов
/ 25 сентября 2018

Подробности

Недавно я обновился до Qt 5.11.2.В рамках выпуска был установлен Qt Creator 4.7.1.

Он поставляется с проверкой кода в режиме реального времени, которую я не нахожу полезной, и удалил, сняв отметку ClangCodeModel в разделе Помощь -> Плагины .Это единственная настройка, которую я сделал для Qt Creator.

Проблема

В этой версии Qt Creator у меня возникает следующая проблема:

При назначении статически приведенного указателядля переменной, объявленной как auto, автоматическое завершение кода не распознает ее, и мне приходится вводить код вручную.Код, введенный вручную, также не подсвечивается синтаксисом:

enter image description here

На рисунке показано только выделение синтаксиса.Код такой же, как в приведенном примере.

Примечание: проект компилируется без ошибок / предупреждений, когда код вводится вручную.

Этоработал как и ожидалось в предыдущих версиях Qt Creator, который я использовал.

Пример

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

main.cpp

class A {
public:
    A::A() {
    }
};

class B : public A {
public:
    void foo() {
    }
};

int main(int /*argc*/, char * /*argv[]*/)
{
    A *a = new B();
    auto *b = static_cast<B *>(a);

    static_cast<B *>(a)->foo(); // "->foo();" is autocompleted
    b->foo();                   // Need to type "->foo();" manually

    return 0;
}

Как заставить работать автозаполнение / подсветку синтаксиса?

1 Ответ

0 голосов
/ 04 ноября 2018

Для правильного распознавания и завершения кода Qt Creator 4.7.1 на основе Qt 5.11.2 требуется модель кода Clang:

Справка -> УстановленоПлагины -> ClangCodeModel

Это, однако, включает аннотации линий.Если это нежелательно, их можно отключить, перейдя в

Инструменты -> Параметры -> Текстовый редактор -> Отображение

и снятие отметки Строка аннотаций .

...