首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ vector 迭代器編譯錯誤:成員函數調用缺少括號導致 C2064

     編輯:程式設計綜合問答

錯誤代碼

for (iterAcceItem j = objAccelerator.p_accle_items().begin(); ...)

原因

p_accle_items 是 **公有成員變量** (`vector p_accle_items;`),**不是函數**,調用時**不需要括號**。編譯器嘗試將 `p_accle_items` 作為函數調用,導致 C2064: term does not evaluate to a function taking 0 arguments。

修正

for (iterAcceItem j = objAccelerator.p_accle_items.begin(); j != objAccelerator.p_accle_items.end(); ++j) {
    CAcceleratorItem* pobjAcceleratorItem = *j;
    // ...
}

補充建議

  • 成員變量命名建議加前綴 `m_` 或 `_`,如 `m_accleItems`,避免與函數混淆。
  • 使用範圍 for (C++11) 更簡潔:`for (auto* item : objAccelerator.p_accle_items) { ... }`。
  • 檢查 `AUTO_PROPERTY` 宏展開是否產生同名函數導致遮蓋。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved