Сложный код, и я застрял на кусочке.
У меня есть функция, которая произошла от виртуального базового класса.
Внутри этой функции есть функтор. Функтор должен иметь возможность доступа ко всем объектам внутри этой функции и ее родительского класса. Но при передаче ссылки на «this» или на имя функции я получаю сообщение об ошибке.
Причиной всего этого осложнения является ускорение кода. Алгоритм, который я кодирую, действительно имеет только одну дорогую часть. Мое намерение состоит в том, чтобы распараллелить эту часть. Однако этот шаг накапливает более двух значений одновременно, за несколько шагов. Итак, мне нужно переопределить некоторые операторы. Функтор казался самым простым способом реализовать это.
Может кто-нибудь подсказать, как это решить.
представительный код ниже:
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) );
}