2017-03-22 14 views
1

我跑cppcheck,我得到這個消息: 「成員變量 ' i_refvec :: data_中'不 ' i_refvec ::運算符= '分配一個值。」cppcheck錯誤不符合我所看到的

該代碼來自模板數值工具包(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; 
} 

回答

0

我是一個Cppcheck開發商。

它看起來對我來說也是一個誤判。我想知道你是否可以將它簡化爲一個簡短的示例代碼來重現問題..然後在這裏報告一張票:http://trac.cppcheck.net

誤報往往是由一些微小的細節造成的。可能在別的地方。因此很難說爲什麼這可能會失敗。

如果您想創建一個重現誤報的示例代碼,最好減少原始代碼(刪除包含,類,方法等)。

+0

TNT和cppcheck似乎並沒有很好地配合,可能是因爲TNT在模板上太重了? (TNT是所有標題,沒有cpp代碼)。它還聲稱成員對象沒有被初始化。我會盡力爲你們一起舉一些例子。 –