cppcheck 错误与我看到的不符
Posted
技术标签:
【中文标题】cppcheck 错误与我看到的不符【英文标题】:cppcheck error doesn't match what I see 【发布时间】:2017-03-22 19:14:03 【问题描述】:我运行 cppcheck 并收到以下消息: "成员变量 'i_refvec::data_' 未在 'i_refvec::operator='。”
代码来自模板数值工具包 (TNT)。我认为我看到这些变量正在初始化,但我仍然收到投诉。
帮助?
相关函数(从第 155 行开始)如下:
template <class T>
i_refvec<T> & i_refvec<T>::operator=(const i_refvec<T> &V)
// Do nothing if we're pointing at ourselves
if (this == &V)
return *this;
if (ref_count_ != NULL)
(*ref_count_) --;
if ((*ref_count_) == 0)
destroy();
data_ = V.data_;
ref_count_ = V.ref_count_;
if (V.ref_count_ != NULL)
(*(V.ref_count_))++;
return *this;
【问题讨论】:
【参考方案1】:我是一名 Cppcheck 开发人员。
这对我来说也像是误报。我想知道您是否可以将其简化为重现问题的简短示例代码..然后在此处报告票证:http://trac.cppcheck.net。
误报通常是由一些微小的细节引起的。可能在别的地方。因此很难说为什么这会失败。
如果您想创建一个重现误报的示例代码,最好减少您的原始代码(删除包含、类、方法等)。
【讨论】:
TNT 和 cppcheck 似乎不能很好地配合使用,可能是因为 TNT 的模板太重了? (TNT 是所有标题,没有 cpp 代码)。它还声称成员对象没有被初始化。我会尝试为您收集一些示例。以上是关于cppcheck 错误与我看到的不符的主要内容,如果未能解决你的问题,请参考以下文章
在声纳中使用 C++ 社区插件的问题。 Cppcheck 不起作用