微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使 cppcheck 2.5 在构造函数中调用虚函数时显示错误旧版本显示此错误

如何解决如何使 cppcheck 2.5 在构造函数中调用虚函数时显示错误旧版本显示此错误

在 cppcheck 规则列表中有

我在我的解决方案中的几个类中编写了对虚拟函数调用并运行 cppcheck o 它们,但它没有显示错误

我使用过 GUI 并从命令行使用 --enable=style 和 --enable=all 运行 cppcheck

我怎样才能让 cppcheck 显示这个问题? 我正在使用最新的 cppcheck

我在其上运行 cppcheck 的另一个虚拟代码

class A
{
public:
    A() { }
    virtual void fin() = 0;
};

class B : public A
{
public:
    B() { fin(); }
    void fin() { std::cout << "l"; }
};

class C : public B
{
public:
    C() {}
    void fin() { std::cout << "c"; }
};

更新:我检查了 cppcheck 1.8,它显示了这个错误。尽管在 2.5 的一组规则中声明它应该找到这样的内容,但 2.5 发生了什么,它没有显示它们?

解决方法

我找到了这条评论 https://sourceforge.net/p/cppcheck/discussion/general/thread/b18f7aaf/#d726

它将在下一个版本中修复。现在我已经禁用了 查看。但是如果我们正确编写此类警告,它可以再次启用。 检查者必须确保该类是基类!

该帖子与 1.84 相关

看代码还是禁用了: https://github.com/danmar/cppcheck/blob/6397e29f84de53655904326ef1ca892a509275c5/lib/checkclass.h

// FIXME: Only report warnings for inherited classes
// checkClass.checkVirtualFunctionCallInConstructor();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。