까다로운 코드가있어 조각에 붙어 있습니다.해당 함수 내에서 구조체에 함수 참조를 전달하십시오.
저는 가상 기본 클래스의 자손입니다.
그 기능은 functor입니다. 펑터는이 함수와 그 부모 클래스 내부의 모든 객체에 액세스 할 수 있어야합니다. 그러나 "this"또는 함수 이름에 대한 참조를 전달할 때 오류가 발생합니다.
이 모든 복잡한 이유는 코드 속도를 높이는 데 있습니다. 내가 코딩하는 알고리즘은 정말 비싼 부분이 하나뿐입니다. 제 의도는 그 부분을 병렬 처리하는 것입니다. 그러나이 단계는 두 개의 값을 여러 단계를 거쳐 동시에 누적합니다. 따라서 일부 연산자를 재정의해야합니다. functor는 이것을 구현하는 가장 쉬운 방법처럼 보였다.
누구든지이 문제를 해결할 수있는 방법을 제안 할 수 있습니까? 아래
대표 코드 :
myClassA Glm{
public:
virtual int functionA(int a, int b)=0;
}
class myClassB : public myClassA {
public:
virtual int functionA(int a, int b);
}
int functionA(int a, int b){
// do some stuff
struct MyFunctor : public binary_function<Fraction, DoubleIterator, Fraction> {
MyFunctor(myClassA& in_class, int A) : myClassA(in_class), column(iColumn) {
}
myClassA& myClassA;
int A;
Fraction operator()(double B, int A,) {
double C = doFancyStuff(A,B);
return C;
}
}
//use stl to accumulate
accumulate(data.begin(), data.end(), temp, MyFunctor(*this, column));
}
당신이 얻을 오류가 무엇입니까? – crazyjul