将 void 指针和结构传递给函数 -c++
Passing void pointer and structures to functions -c++
我有一个函数,它将指向 void 的指针作为参数。所以我向这个函数传递了一个结构,但在该函数中,我调用另一个函数 (f_pD),该函数将结构 (struct) 作为参数。在函数f_mD1内部,我重置了结构,然后调用f_pD函数,该函数将结构作为参数。一旦我在主函数中完成,我就不想重置我的结构。谁能帮我? 下面是代码的草图。enter code here
#include <fstream>
#include <map>
using namespace std;
struct pr_pD {
int last; double xD; map <double, double> tab_w;
} geral;
double f_pD (double, double, double, double, struct pr_pD geral);
double f_mD1 (double, double, double, double, struct pr_pD geral);
static int Integrand_pD(const int *ndim, const double k[], const int *ncomp, double FG[], void *parametros)
{
struct pr_pD * fp = (struct pr_pD *)parametros;
FG[0] = fp->last*fp->xD;
}
static int Integrand_mD1(const int *ndim, const double k[], const int *ncomp, double F[], void *parametros)
{
struct pr_pD * fp = (struct pr_pD *)parametros;
// -------------------------------------------
// I want to eliminate this part of the code
struct pr_pD geral;
geral.tab_w = fp->tab_w;
geral.last = fp->last;
geral.xD = fp->xD;
//----------------------------------------------
double pD;
pD = f_pD( fp->xD*k[1], fp->last*k[2], k[3], k[0], geral );
F[0] = 2*pD;
}
int main()
{
tab_w.insert(pair<double, double>( 1 , 2 ) );
geral.tab_w = tab_w;
geral.last = 1;
geral.xD = 2.5;
double mD1
mD1 = f_mD1(1, 1, 1, 0.1, geral );
return 0;
}
double f_pD(double xD, double yD, double zD, double tD, struct pr_pD geral)
{
double val_int;
val_int = Cuhre(Integrand_pD, xD, yD, zD, tD);
return geral.last*val_int;
}
double f_mD1(double xD, double yD, double zD, double tD, struct pr_pD geral)
{
double val_int;
val_int=Vegas(Integrnd_mD1, xD, yD, zD, tD);
return geral.last*val_int;
}
您可以使用 *fp 代替 geral 参数,只需省略您说要删除的代码即可。
pD = f_pD( fp->xD*k[1], fp->last*k[2], k[3], k[0], *fp );
顺便说一下,这些函数不会修改它们的 geral 参数,因此可以通过引用接受该参数,从而避免潜在的昂贵副本:
double f_pD(double xD, double yD, double zD, double tD, const pr_pD& geral)
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗