저는 항상 C++ 템플릿을 inscrutable하고 C++ 오류 메시지를 발견했습니다. 항상 혼란스러운 느낌보다는 이해하고 싶습니다. 여기에 최신 기괴한 경험이다 :일반 벡터를 반복하는 방법
error: conversion from ‘<unresolved overloaded function type>’ to non-scalar type ‘std::vector<int>::iterator {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >}’ requested
이 볼만 다음 코드에서 유래 :
#include <iostream>
#include <vector>
using namespace std;
template <typename T>
void printVector(const vector<T>& v) {
for (typename vector<T>::iterator iter = v.begin; iter != v.end; iter++) {
cout << *iter << endl;
}
}
int main() {
vector<int> v{1, 2, 3};
printVector(v);
return 0;
}
그것은 내가 C++ 11 범위 기반 루프를 사용하는 경우 벡터 반복 아무 문제가 없습니다. 나는 iterators를 사용하여 그것을하는 법을 배우고 싶다.
누군가가 오류의 의미와 해결 방법을 설명 할 수 있습니까?
템플릿을 잘 설명하는 책을 추천받을 수 있다면 좋을 것입니다.
을()'와'종료()'. 사소한 오타로 끝내기 위해 투표. – juanchopanza
템플릿 코드를 작성할 때, 하나의 구체적인 경우에 템플릿이 아닌 첫 번째 템플릿을 작성하는 것이 좋습니다 (항상 그런 것은 아닙니다). 그런 다음 복사하여 붙여넣고 템플릿으로 만듭니다. – Yakk