首页 > 解决方案 > red-squiggle 不存在的依赖名称(例如 C::nonMember ) 作为错误

问题描述

如何使 Resharper 语法高亮不存在的依赖名称(例如成员字段)为错误?

在下面的代码中,我希望a.nonMember有红色曲线。

template<class T>class Test1{
    public: int member;
};
template<class T>void f(){
    Test1<T> a;
    a.member=5;
    a.nonMember=8;    //<-- expect red squiggle here
}

但是,没有这样的红色曲线。

我相信一定有这样的功能,
因为 Resharper 已经可以Test1<>正确识别所有字段(如下图所示)。

在此处输入图像描述

标签: c++visual-studiotemplatesresharper

解决方案


Resharper 没有错。它无法知道这样的成员不存在,因为该成员是依赖的,因此可能存在。

template<>
class Test1<int> {
    public: int nonMember;
};

当我们可以调用时,现在应该突出显示什么f<int>()?专业化的可能性意味着对从属名称进行此类诊断是难以处理的。


推荐阅读