-1

我不断收到“向量迭代器不兼容”以执行以下代码:

Tag Som::UpdateAfterTagMessageExciter(string detectedTagID, unsigned char ReaderID, unsigned char antData, SSensors Sensors,bool staff, int BatLevel, int RSSI, int temperature)
{

        tagsIT = search (m_DetectedTags.begin(), m_DetectedTags.end(), searchTag,              
                             searchTag+1,TagCollection::SearchTagsCollByTagIDPredicate);

        if (tagsIT<m_DetectedTags.end())
        {
                 //do something
        }

SearchTagsCollByTagIDPredicate 如下:

static bool SearchTagsCollByTagIDPredicate (Tag i, string tagID) 
     {
        string secondTag=  i.GetTagID();
        return (tagID==secondTag);
      }

其中 m_DetectedTags 向量不在此块之外使用。每次 LF 天线检测到标签时,都会重复调用该函数。它发生在搜索调用中。我尝试调试但无济于事。

我尝试用一​​个简单的 for 循环替换搜索,但它仍然不起作用。

任何想法为什么搜索导致错误?谢谢!

4

2 回答 2

0

您的 SearchTagsCollByTagIDPredicate 函数是您在 TagCollection 类头文件中定义的 TagCollection 类的方法还是只是一个静态函数?从上下文中不清楚。可能这就是导致问题的原因。

于 2013-08-29T15:11:06.460 回答
-1

没有太多代码可以使用,所以我能看到的唯一不寻常的是以下内容:

  • 您正在使用<比较迭代器。不知道这对于向量迭代器是否合法。但通常人们会写:

    if (tagsIT != _DetectedTags.end())

  • 您通过值而不是通过引用将参数传递给比较器函数。如果你的复制构造函数或析构函数Tag有问题,你的问题可能就在那里。

于 2013-08-29T15:13:49.503 回答