-1
次のコードでは、for_each
関数のクローンを<algorithm>
で定義しました(私は信じています)。唯一の問題は、私が作成したvoid関数である3番目の引数のためです。コールに未対応のオーバーロードされた関数型の一致関数はありません。誰かがこの問題についていくつかの光を当てることができましたか?未解決のオーバーロードされた関数型、クローンfor_each
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
void fill(int& n) { //The custom made function, a simple rewrite,
if (n < 100) //which is why I passed an int reference
n = 100;
}
template <class Iterator, class Function> //Clone for_each
void clone_for_each(Iterator first, Iterator last, Function f) {
while(first != last) {
f(*first);
first++;
}
}
int main (int argc, char const* argv[])
{
//Just inputing data and printing it out
//This part is fine up until...
int n;
cout << "Unesite broj vrsta artikala: ";
cin >> n;
vector<string> names;
vector<int> quantity;
cout << "Unesite naziv artikla potom njegovu kolicinu: " << endl;
for (int i = 0; i < n; i++) {
string name;
int amount;
cout << "Unesite naziv: ";
cin >> name;
cout << endl;
cout << "Unesite kolicinu: ";
cin >> amount;
cout << endl;
names.push_back(name);
quantity.push_back(amount);
}
cout << "Raspolozivi artikli: " << endl;
vector<string>::iterator itNames = names.begin();
vector<int>::iterator itQuantity = quantity.begin();
for(itNames, itQuantity; itNames != names.end(), itQuantity != quantity.end(); itNames++, itQuantity++)
cout << *itNames << " " << *itQuantity << endl;
cout << "Artikli nakon dopune: " << endl;
//right here, which is where I called for clone_for_each
clone_for_each(quantity.begin(), quantity.end(), fill);
return 0;
}
を参照してください。そして、あなたは、なぜこれがある[std名前空間を使用して '使用しないでください;'](http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-悪い習慣)。あなたは 'std :: fill'と自分の' fill'と競合します。 – NathanOliver
**正確**エラーメッセージとはどのラインが原因ですか? –
さらに、 'std :: function'を引数として取っても何が問題になりますか? –