如何解决如何使 cppcheck 2.5 在构造函数中调用虚函数时显示错误旧版本显示此错误
在 cppcheck 规则列表中有
我在我的解决方案中的几个类中编写了对虚拟函数的调用并运行 cppcheck o 它们,但它没有显示此错误。
我使用过 GUI 并从命令行使用 --enable=style 和 --enable=all 运行 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 举报,一经查实,本站将立刻删除。