0
これはMSVCで正常にコンパイルされますが、gccは文句を言います。 The code on ideone。イテレータを参照渡しすることで、何が間違っているのか分かりません。gcc vector :: iteratorを関数に渡すとどうなりますか?
エラー
prog.cpp: In function ‘void FindType()’:
prog.cpp:8: error: no matching function for call to ‘FindType(__gnu_cxx::__normal_iterator<Var**, std::vector<Var*, std::allocator<Var*> > >, __gnu_cxx::__normal_iterator<Var**, std::vector<Var*, std::allocator<Var*> > >)’
prog.cpp:4: note: candidates are: void FindType(__gnu_cxx::__normal_iterator<Var**, std::vector<Var*, std::allocator<Var*> > >&, __gnu_cxx::__normal_iterator<Var**, std::vector<Var*, std::allocator<Var*> > >&)
prog.cpp:5: note: void FindType()
prog.cpp:8: error: return-statement with a value, in function returning 'void'
コード
#include <vector>
using namespace std;
class Var {};
void FindType(vector<Var*>::iterator&b, vector<Var*>::iterator&e){}
void FindType()
{
vector<Var*> ls;
return FindType(ls.begin(), ls.end());
}
私はまだconst参照では不正な+ bをする必要があります。だから私はbyvalueを渡す必要があると思いますか? –
ああ、そうだ。あなたが正しいと思います。価値によって。 – thb