これをどのようにしてコンパイルできますか?エラーは私がboost :: ref()を使う時です。 boost :: refはC++アルゴリズムクラスへの参照を渡すために使われていると思いますか?人々が提案されているようBoost :: refを正しく使用しています..?
list<Object> lst;
lst.push_back(Object(1,2.0f));
lst.push_back(Object(3,4.3f));
struct between_1_and_10
{
int d;
void operator() (Object& value)
{
value.a += 5; value.b -= 3.3f;
cout << d << endl;
d += value.a;
}
};
between_1_and_10 val;
val.d = 4;
for_each(lst.begin(), lst.end(), boost::ref(val)); // Problem is here
printf("rg");
EDITは、ここでコンパイラエラーです:
1>c:\program files (x86)\microsoft visual studio 9.0\vc\include\algorithm(29) : error C2064: term does not evaluate to a function taking 1 arguments
1> c:\users\swangrun\desktop\minescout work\feat-000-gettargetimages\minescouttest\maintest.cpp(102) : see reference to function template instantiation '_Fn1 std::for_each<std::list<_Ty>::_Iterator<_Secure_validation>,boost::reference_wrapper<T>>(_InIt,_InIt,_Fn1)' being compiled
1> with
1> [
1> _Fn1=boost::reference_wrapper<main::between_1_and_10>,
1> _Ty=Object,
1> _Secure_validation=true,
1> T=main::between_1_and_10,
1> _InIt=std::list<Object>::_Iterator<true>
1> ]
for_each()行にあるはずです。しかし、何が問題なのですか?エラーを再現できるだけのエラーまたは十分なコードを提供する必要があります。 –
問題はコンパイルされないということです。私は答えを受け入れました、あなたの参加に感謝! – sivabudh
Martinが意味することは、「エラーメッセージのテキストをコピーして質問に貼り付ける」ことです。そうすれば、コンパイラが何を言っているかを説明することができます。おそらく、エラーを見つけるために必要なすべての情報が得られたはずです。少なくとも、コンパイラエラーのテキストを検索する他の人が質問とその答えを見つけることができるように、これを行う必要があります。 –