어떻게 이것을 컴파일 할 수 있습니까? 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");
편집 다음은 컴파일러 오류입니다 :
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이 의미하는 바는 "오류 메시지의 텍스트를 복사하여 질문에 붙여 넣기"입니다. 그렇게하면 컴파일러가 말하는 것을 여러분에게 설명 할 수 있습니다. 아마도 오류를 찾는 데 필요한 모든 정보를 제공했을 것입니다.적어도 컴파일러 오류 텍스트를 검색하는 다른 사람들이 질문과 대답을 찾을 수 있도록이 작업을 수행해야합니다. –