使用类的成员

时间:2013-11-16 11:39:28

标签: c++ arrays class

我需要使用GNU-GSL插值函数,如下所示:

double gsl_interp_eval (const gsl_interp * interp, const double xa[], const double ya[], double x, gsl_interp_accel * acc)

但是我需要的 xa [] ya [] 数组是这些对象描述的元素A.x和A.y.value:

class c_ys {
  double value;
};

struct s_points {
  double x; 
  c_ys  y;
};

class c_curves {
  vector<s_points> A;
};

如何在函数gsl_interp_eval中将这些元素用作第二个和第三个参数?

1 个答案:

答案 0 :(得分:2)

如果不制作副本,您将无法执行此操作,因为double成员之间内存中的偏移量不正确。

以下是如何做到这一点:

double *x = new double[A.size()];
double *y = new double[A.size()];
for (int i = 0 ; i != A.size() ; i++) {
    x[i] = A[i].x;
    y[i] = A[i].y.value;
}
gsl_interp_eval(...); // call your function
delete[] x;
delete[] y;