C ++指向类的类指针

时间:2014-09-09 13:48:48

标签: c++ class

这是一个开源代码片段。完整源代码可用https://github.com/gec/dnp3/blob/master/src/opendnp3/DNP3/ResponseContext.h

ObjectWriteIterator owi = arAPDU.WriteContiguous(apObject, start,stop);

  for(size_t i = start; i <= stop; ++i) {       
    if(owi.IsEnd()) { // out of  space in the fragment          
       this->mStaticWriteMap[arKey] =
              boost::bind(&ResponseContext::WriteStaticObjects<T>, this, apObject,
         arStart, arStop, arKey, _1);                       return false;       
     }

    apObject->Write(*owi, arStart->mValue);         
    ++arStart; //increment the iterators
    ++owi;     
   }

ObjectWriteIterator::ObjectWriteIterator() :  
  mpPos(NULL),  
  mIndex(1), 
  mStart(0),   
  mStop(0),  
  mObjectSize(0)   
{}

我的问题是:我不明白*owi在这个背景下的含义。

2 个答案:

答案 0 :(得分:0)

owiiterator,它是迭代某些集合的“标准”C ++接口。

接口让它们使用指针 - 语义,因此*运算符'取消引用'迭代器并返回对它当前“指向”的值的引用,并通过++递增它移动它到迭代的集合中的下一个项目。

在这种情况下,它看起来像ObjectWriteapObject之间由start指定的集合中的stop个对象的集合(开始和停止通常也由iterators设置为集合中的某个位置。

答案 1 :(得分:0)

抱歉,我之前不确定是否可以构建一个自包含的'Mock up'迭代器类,其中使用hidden是头文件

  

内联boost :: uint8_t * ObjectWriteIterator :: operator *()const   {     if(this-&gt; IsEnd())抛出InvalidStateException(LOCATION,“End of   迭代“);
  返回mpPos;   }

头文件中的

。抱歉野鹅跑。感谢您的快速回复,我也学到了关于迭代器核心实现的新知识。