我有一个需要访问类的数据成员的静态函数。该函数可以是类的成员、非成员或友元函数,但它必须是静态的,并且不能接受任何参数。所以我不能将数据成员作为参数传递给它,也不能将对象本身传递给它。
#include "sundials.h"
#include "CVode.h"
class nBody
{
private:
double masses[];
double** paths;
static int accelerator();
//...
public:
//...
void runODE();
};
int nBody::accelerator()
{
// code that needs to know the values stored in masses[]
}
void nBody::runODE()
{
//...
ODEsetAccelerator(accelerator); //require accelerator to be static int
//with specific parameters
// run the ODE
//record trajectories in paths[][]
}
accelerator
被馈送到一个单独的 ODE 求解器,该求解器要求加速器是类型static int
并采用指定的参数,所以我不能将质量传递给加速器,因为它将被 ODE 调用而不是main
有什么办法可以让加速器功能知道质量的价值吗?我不在乎它有多间接。