将静态类型转换指针分配给自动完成程序时,如何使自动完成程序识别自动类型变量?

时间:2018-09-25 14:27:54

标签: c++ qt qt-creator

详细信息

最近我已经更新到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 :(得分:0)

为了使代码识别和完成正常工作,基于Qt 5.11.2的Qt Creator 4.7.1需要Clang代码模型:

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

但是,这会打开行注释。如果不希望这样做,可以通过转到

来将其关闭

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

,然后取消选中行注释