의 집합 클래스의 회원 액세스 나는 다음과 같은 클래스의 객체에 대한 포인터의 집합이C의 ++의 STL 포인터
void print_by_rank(set<name_id *> &nameIdSet, map<int, int> &votesMap)
{
vector<string> names;
vector<string>::iterator names_it;
set<name_id *>::iterator nameIdSet_it;
for(nameIdSet_it = nameIdSet.begin(); nameIdSet_it != nameIdSet.end(); ++nameIdSet_it)
//names.push_back(nameIdSet_it->name);
cout << nameIdSet_it->name << endl;
}
그러나 하단 두 줄 중 어느 것도 컴파일되지 않습니다.
g++ -o bobwinner bobwinner.cpp
bobwinner.cpp: In function 'void print_by_rank(std::set<name_id*, std::less<name_id*>, std::allocator<name_id*> >&, std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >&)':
bobwinner.cpp:68: error: request for member 'name' in '* nameIdSet_it.std::_Rb_tree_const_iterator<_Tp>::operator-> [with _Tp = name_id*]()', which is of non-class type 'name_id* const'
내가 개체에 설정된 요소 포인트의 이름 필드에 액세스 할 수 반복자의 화살표 연산자를 사용할 수없는 이유를 이해가 안 : 나는 다음과 같은 메시지가 나타납니다.
어떤 도움이된다면'(* (* nameIdSet_it))와 동일합니다. 'name –
이런, 그게 내가 시도하지 않은 유일한 것일뿐입니다. 감사! – user434462
Downvoter : 관심있는 댓글? –