Wie kann ich das kompilieren? Der Fehler ist, wenn ich boost :: ref() benutze. Ich dachte boost :: ref wird verwendet, um Verweis auf C++ - Algorithmus-Klassen zu übergeben?Verwendung von Boost :: ref korrekt ..?
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 Hier ist der Compiler-Fehler als Menschen vorgeschlagen:
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> ]
Ok. Es sollte auf der for_each() Zeile sein. Aber was ist das Problem? Sie müssen uns entweder den Fehler oder genügend Code geben, damit wir den Fehler reproduzieren können. –
das Problem ist, dass es nicht kompiliert. Ich habe eine Antwort angenommen, danke für Ihre Teilnahme! – sivabudh
Was Martin meinte, ist "Kopiere den Text der Fehlermeldung und füge ihn in deine Frage ein". Auf diese Weise können wir Ihnen erklären, was der Compiler sagt. Es gab Ihnen wahrscheinlich alle Informationen, die Sie benötigen, um den Fehler zu finden.Zumindest sollten Sie dies tun, damit andere Leute, die nach dem Text des Compilerfehlers suchen, die Frage und ihre Antwort finden können. –