gpt4 book ai didi

c++ - 将函数引用传递给该函数内部的结构

转载 作者:行者123 更新时间:2023-11-28 08:15:07 25 4
gpt4 key购买 nike

有一些棘手的代码,卡在了一 block 上。

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

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

}

最佳答案

这里的主要问题是过早优化

从技术上讲,替换当前的……

int functionA(int a, int b){

与……

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

至少你的this问题应该消失了。

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

myClassA& myClassA;

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

myClassA* pMyClassA_;

并相应地更改初始化。

干杯,

关于c++ - 将函数引用传递给该函数内部的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7927818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com