重载有错吗 ?
//抛物型方程(第三类边界条件)混合问题隐格式(向后差分)
int PartialDiffEguation::ParabolaEqBack3(double t_low,//横坐标左边界
double t_up,//横坐标右边界
double x_low,//纵坐标下边界
double x_up,//纵坐标上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double t),// 左边界条件
double (*pro2)(double t),// 右边界条件
double k,//边界条件的k值
double a,//参数a
double at,//时间剖分的精度
double h,//空间剖分的精度
CMatrix &rlt//计算结果
)
{
int N,M;
M=(int) ((t_up-t_low)/at);
N=(int) ((x_up-x_low)/h);
rlt.Resize(M+1,N+1);
int i;
//根据初始条件进行初始化
for(i=0;i <=N;i++)
rlt[0][i]=(*pre)(x_low+h*i);
//网格比
double r=a*at/(h*h);
。。。。。
类的声明如下:
class PartialDiffEguation
{
public:
//椭圆型方程 (第一类边界条件)五点差分格式,矩形区域
static int EllipseEq1(double x_low,//横坐标左边界
double x_up,//横坐标右边界
double y_low,//纵坐标下边界
double y_up,//纵坐标上边界
double (*pro)(double x,double y),
double(*prox1)(double x0),//左边界条件
double (*prox2)(double xu),// 右边界条件
double (*proy1)(double y0),//下边界条件
double (*proy2)(double yu),//上边界条件
double h1,//水平剖分的精度
double h2,//纵向剖分的精度
CMatrix &rlt//计算结果
);
//椭圆型方程(第二类边界条件)五点差分格式,矩形区域
static int EllipseEq2(double x_low,//横坐标左边界
double x_up,//横坐标右边界
double y_low,//纵坐标下边界
double y_up,//纵坐标上边界
double (*pro)(double x,double y),
double(*prox1)(double x0),//左边界条件
double (*prox2)(double xu),// 右边界条件
double (*proy1)(double y0),//下边界条件
double (*proy2)(double yu),//上边界条件
double h1,//水平剖分的精度
double h2,//纵向剖分的精度
CMatrix &rlt//计算结果
);
//椭圆型方程(第三类边界条件)五点差分格式,矩形区域
static int EllipseEq3(double x_low,//横坐标左边界
double x_up,//横坐标右边界
double y_low,//纵坐标下边界
double y_up,//纵坐标上边界
double (*pro)(double x,double y),
double(*prox1)(double x0),//左边界条件
double (*prox2)(double xu),// 右边界条件
double (*proy1)(double y0),//下边界条件
double (*proy2)(double yu),//上边界条件
double kv,
double h1,//水平剖分的精度
double h2,//纵向剖分的精度
CMatrix &rlt//计算结果
);
//抛物型方程(第一类边界条件)混合问题显格式(向前差分)
static int ParabolaEqFront(double t_low,//横坐标左边界
double t_up,//横坐标右边界
double x_low,//纵坐标下边界
double x_up,//纵坐标上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double t),// 左边界条件
double (*pro2)(double t),// 右边界条件
double a,//参数a
double at,//水平剖分的精度
double h,//纵向剖分的精度
CMatrix &rlt//计算结果
);
//抛物型方程(第二类边界条件)混合问题显格式(向前差分)
static int ParabolaEqFront2(double t_low,//横坐标左边界
double t_up,//横坐标右边界
double x_low,//纵坐标下边界
double x_up,//纵坐标上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double t),// 左边界条件
double (*pro2)(double t),// 右边界条件
double a,//参数a
double at,//水平剖分的精度
double h,//纵向剖分的精度
CMatrix &rlt//计算结果
);
//抛物型方程(第一类边界条件)混合问题隐格式(向后差分)
static int ParabolaEqBack(double t_low,//横坐标左边界
double t_up,//横坐标右边界
double x_low,//纵坐标下边界
double x_up,//纵坐标上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double t),// 左边界条件
double (*pro2)(double t),// 右边界条件
double a,//参数a
double at,//时间剖分的精度
double h,//空间剖分的精度
CMatrix &rlt//计算结果
);
//抛物型方程(第二类边界条件)混合问题隐格式(向后差分)
static int ParabolaEqBack2(double t_low,//横坐标左边界
double t_up,//横坐标右边界
double x_low,//纵坐标下边界
double x_up,//纵坐标上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double t),// 左边界条件
double (*pro2)(double t),// 右边界条件
double a,//参数a
double at,//水平剖分的精度
double h,//纵向剖分的精度
CMatrix &rlt//计算结果
);
//抛物型方程(第三类边界条件)混合问题显格式(向前差分)
static int ParabolaEqFront3(double t_low,//横坐标左边界
double t_up,//横坐标右边界
double x_low,//纵坐标下边界
double x_up,//纵坐标上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double t),// 左边界条件
double (*pro2)(double t),// 右边界条件
double k,//边界条件的k值
double a,//参数a
double at,//时间剖分的精度
double h,//空间剖分的精度
CMatrix &rlt//计算结果
);
//抛物型方程(第三类边界条件)混合问题隐格式(向后差分)
static int ParabolaEqBack3(double t_low,//横坐标左边界
double t_up,//横坐标右边界
double x_low,//纵坐标下边界
double x_up,//纵坐标上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double t),// 左边界条件
double (*pro2)(double t),// 右边界条件
double a,//参数a
double at,//时间剖分的精度
double h,//空间剖分的精度
CMatrix &rlt//计算结果
);
//双曲型方程(显格式)
static int hyperbolaEq(double t_low,//时间下边界
double t_up,//时间上边界
double x_low,//空间下边界
double x_up,//空间上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double x),// 第一初始条件
double (*pro2)(double x),// 第二初始条件
double (*pro3)(double t),// 下边界条件
double (*pro4)(double t),// 上边界条件
double a,//参数a
double at,//时间剖分的精度
double h,//空间剖分的精度
CMatrix &rlt//计算结果
);
};
出现的错误如下:
error C2511: 'ParabolaEqBack3 ' : overloaded member function 'int (double,double,double,double,double (__cdecl *)(double,double),double (__cdecl *)(double),double (__cdecl *)(doub
le),double (__cdecl *)(double),double,double,double,double,class CMatrix &) ' not found in 'PartialDiffEguation '
c:\euler.h(36) : see declaration of 'PartialDiffEguation '
Error executing cl.exe.
------解决方案--------------------
static int ParabolaEqBack3(double t_low,//横坐标左边界
double t_up,//横坐标右边界
double x_low,//纵坐标下边界
double x_up,//纵坐标上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double t),// 左边界条件
double (*pro2)(double t),// 右边界条件
double a,//参数a
double at,//时间剖分的精度
double h,//空间剖分的精度
CMatrix &rlt//计算结果
}
=======> 函数声明有12个参数,
但是:
int PartialDiffEguation::ParabolaEqBack3(double t_low,//横坐标左边界
double t_up,//横坐标右边界
double x_low,//纵坐标下边界
double x_up,//纵坐标上边界
double (*pro)(double t,double x),
double(*pre)(double x),//初始条件
double (*pro1)(double t),// 左边界条件
double (*pro2)(double t),// 右边界条件
double k,//边界条件的k值
double a,//参数a
double at,//时间剖分的精度
double h,//空间剖分的精度
CMatrix &rlt//计算结果
)
======> 函数实现却有13个参数!