0
我有一個將void指針作爲參數的函數。所以我傳遞給這個函數一個結構體,但是在那個函數內部,我調用了另一個函數(f_pD),它將一個結構體(struct)作爲參數。 函數f_mD1內部,我重置我的結構,然後我調用f_pD函數作爲參數結構。一旦我在主函數中完成,我不想重置我的結構。誰能幫我?代碼草圖如下。 enter code here
將void指針和結構傳遞給函數-C++
#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;
}