이 문제를 해결하는 방법을 알아낼 수 없습니다. 내 반복자 생성자는 private이어야하므로 컨테이너를 사용하여 반복자를 반환하지만 컴파일을 거부합니다.C++ - 개인 중첩 반복기에 액세스
for(A::iterator i = a.begin(); i != a.end(); i++)
std::cout << *i;
을하지만 마지막 블록은 :: 반복자가 내 개인이다 "라고 말한다 :
아
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);
}
나는 다음과 같이 호출 이 문맥 ". iterator 생성자가 begin() 밖에서 만 호출된다는 느낌이 들지만 해결 방법을 모른다. 나는 C++에 상당히 익숙하다. 그래서 어떤 도움을 주시면 감사하겠습니다!
우선 클래스 생성자는 클래스 메서드 및 함수 외에 다른 곳에서 사용하고 싶다면 private 일 수 없습니다. – Blood