0
我無法弄清楚如何解決這個問題。我的迭代器構造函數需要是私有的,所以我使用容器來返回一個迭代器,但它拒絕編譯。C++ - 訪問私有的嵌套迭代器
啊
class A {
public:
class iterator {
friend class A;
public:
virtual ~iterator();
iterator operator++(int);
iterator operator--(int);
private:
iterator(int index, A container);
};
iterator begin();
iterator end();
};
A.cpp
A::iterator A::begin(){
return iterator(0, *this);
}
A::iterator A::end(){
return iterator(length(), *this);
}
我再這樣稱呼它:
for(A::iterator i = a.begin(); i != a.end(); i++)
std::cout << *i;
但這最後一塊說,「A :: iterator是私人內這個上下文「。我有一種感覺,迭代器構造函數只在begin()之外被調用,但我不知道如何解決它。我對C++相當陌生,所以任何幫助,將不勝感激!
首先 - 構造函數不能是私人的,如果你想在除了你的類方法和函數之外的任何地方使用它。 – Blood 2013-03-23 10:12:44