当分配静态指针时,如何使自动完成器识别自动类型变量?
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
然而,这会打开线条注释。如果不需要,可以转到
将其关闭
工具 -> 选项 -> 文本编辑器 -> 显示
并取消选中 行注释。
详情
最近更新到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
然而,这会打开线条注释。如果不需要,可以转到
将其关闭工具 -> 选项 -> 文本编辑器 -> 显示
并取消选中 行注释。