私の現在の割り当ては、イテレータでリストを書いています。イテレータクラスを作成するほどリストに問題はありません。リスト内の - >演算子の意味(と一般的にはC++)
私は、イテレータクラスで定義する2つの演算子、つまりoperator*
とoperator->
があります。
これまでのところ素晴らしいです!私のイテレータ構造を想定することは、私はこの二重の間接参照は、&(* pCurr _->データにつながるとして、私は(大規模な何か間違ったことをやって見ることができるので、
// Nested class of List
class _Iter
{
private:
ListElem *pCurr;
const List *pList;
public:
_Iter(ListElem *pCurr, const List *list)
: pCurr_(pCurr), pList(list)
{}
T& operator*() { return pCurr_->data; }
T* operator->() { return &**this; }
};
ListElemが
// Nested struct of List
struct ListElem
{
T data;
ListElem *next;
ListElem *prev;
};
ことです)、これは逆参照ではありません。
私の主な問題は、この場合実際に何が行われることになっているのか理解できないことです。ユーザーにListElemクラスへのアクセスを許可する必要がありますか?書くだけで
ListElem *operator->() { return pCurr_; }
ポインタを返すのではなく、
operator*() // Return data pointed to by iterator; pCurr_->data;
operator->() // Grant access to data-holding structure; pCurr;
はこの正しいですか、私は何を得ていないのです。私のリスト(そして、できればSTLリスト)で使用されるように、これらの2つの演算子の私の理解では、ということでしょうか? (そして->
は、適切な名前を持っていない?)
実際、 'this'は実際にはポインタであることをしばしば忘れています。非常に迷惑な:D – IAE