将函数引用传递给该函数内的结构

问题描述 投票:0回答:1

有一些棘手的代码,但我被困在一块上了。

我有一个从虚拟基类派生的函数。

该函数内部是一个函子。 函子需要能够访问该函数及其父类内部的所有对象。 但是,当传递对“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) ); }

	
c++ stl functor accumulate
1个回答
1
投票
过早优化

从技术上讲,取代当前的……

int functionA(int a, int b){

与……

int myClassB::functionA(int a, int b){

至少你的 
this

问题应该消失了。

然后,不是将引用放置为数据成员,就像您的......

myClassA& myClassA;

使实例不可分配。函子对象“应该”是可分配的。因此,如果您决定继续这样做,也许最好将其替换为……

myClassA* pMyClassA_;

并相应地更改初始化。

© www.soinside.com 2019 - 2024. All rights reserved.