Is there anyway to avoid this circular reference? I cant use foward declaration, because I am accessing methods of PositionBlock inside PositionBlockIterator...
I know that i can create an interface to PositionBlock, and then use it inside PositionBlockIterator (polymorphism). But is there another way?
class PositionBlockIterator{
private:
PositionBlock *posBlock;
public:
PositionBlockIterator(PositionBlock *posBlock_){
posBlock = posBlock_;
}
/* functions to iterate over positionblock, using posBlock->... */
}
class PositionBlock
{
public:
PositionBlockIterator * createIterator(){
return PositionBlockIterator(this);
}
}