【问题标题】:'vector iterators incompatible''向量迭代器不兼容'
【发布时间】:2011-12-17 20:54:22
【问题描述】:
std::vector<Enemy*>::iterator it;
for(it;it!=tracked.end();it++){
    (*it)->update(timeSinceLastFrame);
}

tracked 是向量:

std::vector<Enemy*>

为什么会出现此错误? (如果我没有提供足够的细节,请说出来)

【问题讨论】:

    标签: c++ vector iterator std


    【解决方案1】:

    你从未初始化过迭代器。

    for(std::vector<Enemy*>::iterator it = tracked.begin();it!=tracked.end();it++){
        (*it)->update(timeSinceLastFrame);
    }
    

    许多实现(例如您似乎正在使用的 VC++)在调试中执行检查,以确保在比较两个迭代器时,它们属于同一个对象。默认构造的迭代器不属于任何特定实例,因此it != tracked.end() 检查将因该错误而失败。

    【讨论】:

      【解决方案2】:

      你还没有初始化it。试试这个:

      std::vector<Enemy*>::iterator it;
      for(it=tracked.begin();it!=tracked.end();it++){
          (*it)->update(timeSinceLastFrame);
      }
      

      【讨论】:

        猜你喜欢
        • 2012-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-20
        • 2012-04-17
        相关资源
        最近更新 更多