0

のときに g++ でエラーが発生しますList.cc:19:1: error: âIteratorâ does not name a type 。ヘッダーは以下

class List {
private:
class Element {
 public:
  char data;
  Element *next;
  Element *prev;
  Element(Element *n,Element *p, char d);
};
Element *first;

public:
class Iterator {
 public:
  Iterator();
  void operator++();
  void operator--();
  char& operator*();
  const char& operator*() const;
  bool operator==(const Iterator& itr);
  bool operator!=(const Iterator& itr);
 private:
  Iterator(const Element& ele);
  Iterator *it;
};
List();
~List();
Iterator& begin() const;
Iterator& end() const;
void insert(Iterator itr, char c);
void erase(Iterator itr);

};

19 行目は次のとおりです。

Iterator& List::begin() const

これは継承の問題ですか?List::Iterator を介して std::list のようにメイン関数でイテレータを呼び出そうとしています

4

1 に答える 1

0

これは、g++ 4.7.2 を使用する MinGW で問題なくコンパイルできるようです。List::Iterator を正しく修飾していることを確認してください。

#include <iostream>

class List {
private:
class Element {
 public:
  char data;
  Element *next;
  Element *prev;
  Element(Element *n,Element *p, char d) : next(n), prev(p), data(d){}
};
Element *first;

public:
class Iterator {
 public:
  Iterator(){}
  void operator++(){}
  void operator--(){}
  char& operator*(){return data;}
  const char& operator*() const{return data;}
  bool operator==(const Iterator& itr){return false;}
  bool operator!=(const Iterator& itr){return false;}
 private:
  Iterator(const Element& ele){}
  Iterator *it;
  char data;
};

Iterator it;

List(){}
~List(){}
const Iterator& begin() const{return it;}
const Iterator& end() const{return it;}
void insert(Iterator itr, char c){}
void erase(Iterator itr){}

};

int main(int argc, char**argv)
{
    List blah;
    List::Iterator it = blah.begin();

    return 0;
}
于 2013-11-11T04:19:10.320 に答える