std :: transform을 사용하여 루프를 단순화하려고합니다. 여기에 몇 가지 코드가 있습니다 :참조로 전달 된 추상 클래스로 bind를 사용하는 방법
class ITest
{
public:
virtual CPrueba Prueba(double p, double d = 0)const = 0;
};
void foo(const ITest& test)
{
std::vector<double> v;
std::vector<CPrueba> vRes;
// ...
// ...
std::transform(v.begin(), v.end(), back_inserter(vRes),
bind(&ITest::Prueba, test, _1, 0));
//...
}
이것은 컴파일되지 않습니다.
저는 VS2008 SP1을 사용하고 있으며 이해할 수없는 많은 템플릿 오류가 발생했습니다. 따라서 I've tried in ideone (gcc 4.7.2)입니다. 거기에 좀 더 읽을 수있는 오류가있어 ITest와 추상적 인 관계가 있다고 결론을 내 렸습니다.
하지만 테스트 개체를 전달하는 방법을 변경하여 시도한 결과, 내가 수행하면 by pointer, it works입니다.
함수 서명을 유지하고 루프 대신 바인드 변환을 사용하는 데 사용할 수있는 것이 있습니까?
감사합니다. 내 컴파일러는 ref 버전을 좋아하지 않는 것 같습니다. – MikMik