当分配静态指针时,如何使自动完成器识别自动类型变量?

How to make the autocompleter recognize an auto type variable when a statically cast pointer is assigned to it?

详情

最近更新到Qt 5.11.2。作为发布的一部分,安装了 Qt Creator 4.7.1。

它带有实时代码检查,我发现它没有用,并通过取消选中 Help -> Plugins[= 下的 ClangCodeModel 将其删除45=]。这是我对 Qt Creator 所做的唯一定制。

问题

使用这个版本的 Qt Creator 我遇到了以下问题:

将静态指针分配给声明为 auto 的变量时,自动代码完成无法识别它,我必须手动键入代码。手动输入的代码也没有突出显示语法:

图片仅用于语法高亮显示。代码与提供的示例中的代码相同。

注意:项目编译时没有errors/warnings,当代码是手动输入时。

这在我使用的以前版本的 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;
}

如何使 autocompleter/syntax 荧光笔工作?

为了代码识别和补全能够正常工作,基于 Qt 5.11.2 的 Qt Creator 4.7.1 需要 Clang 代码模型:

帮助 -> 已安装的插件 -> ClangCodeModel

然而,这会打开线条注释。如果不需要,可以转到

将其关闭

工具 -> 选项 -> 文本编辑器 -> 显示

并取消选中 行注释