벡터에 저장된 객체의 메서드를 어떻게 호출합니까? 다음 코드는벡터를 통해 메서드를 호출하는 방법은 무엇입니까?
ClassA* class_derived_a = new ClassDerivedA;
ClassA* class_another_a = new ClassAnotherDerivedA;
vector<ClassA*> test_vector;
test_vector.push_back(class_derived_a);
test_vector.push_back(class_another_a);
for (vector<ClassA*>::iterator it = test_vector.begin(); it != test_vector.end(); it++)
it->printOutput();
코드는 다음과 같은 오류 검색 ... 실패
test3.cpp:47: error: request for member ‘printOutput’ in ‘* it.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator-> with _Iterator = ClassA**, _Container = std::vector >’, which is of non-class type ‘ClassA*’
문제는 it->printOutput();
것 같다을하지만 순간에 나는 어떻게 제대로 메소드를 호출하는 방법을 알고하지 않습니다, 아는 사람 있나요?
관련 사항 mikey
작품 당신이 원하는대로 스트림에 지시 할 수 있도록
보기의 의존성 주입 지점에서, 당신이
printOutput
을 기꺼이 수는std::ostream&
매개 변수를 고맙습니다! –루프에 대한 수치가 더 쉬운 해결책이었을 것입니다. 반복자는 알고리즘의 경우에만 대다수의 경우 실제 반복을 위해 존재할 필요는 없습니다. – Puppy
@DeadMG 흥미 롭습니다 - 반복자를 사용하지 않고 어떻게 목록이나지도를 반복합니까 (예 :)? –