私はいつもC++のテンプレートを理解できませんでしたし、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
このdoozyは、次のコードから来ている:
#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の範囲ベースのループを使用する場合には、ベクトルを反復処理問題はありません。イテレータを使ってそれを行う方法を学びたい。
誰かがエラーの意味と解決方法を説明できますか?
テンプレートをよく説明した本の推薦を得ることもできれば、素晴らしいこともあります。
。簡単なタイプミスとして閉じる投票。 – juanchopanza
テンプレートコードを書くときは、1つの具体的なケースのために最初のテンプレートではないことがよくあります(必ずしもそうとは限りません)。それをコピーして貼り付け、テンプレートにします。 – Yakk