我在尝试实施某些方法时遇到了一些麻烦。 这就是我做的。
1)使用1个Rotor类对象和1个IModeloDinamico类对象创建1个sistema类对象。这个Rotor和IModeloDinamico对它们的所有变量都有自己的加速器。
sistema::sistema() {
new Rotor();
new IModeloDinamico();
};
2)然后我实现了一个方法来解决差分ecuations系统,该系统从Rotor和IModeloDinamico对象中获取所有值。
其中GetFunctionParseri()是IModeloDinamico的一种方法,它通过引用返回一个值:
const FunctionParser& GetFunctionParser1(){return fp1;};
此对象fp1属于FunctionParse类。
解决颂歌系统的方法是:
int sistema::odesolver(){
cout <<"***********************************************************************"<< endl ;
cout <<"************************START ODE SOLVER FUNCTION**********************"<< endl ;
cout <<"***********************************************************************"<< endl ;
const FunctionParser& sfp1=IModeloDinamico::GetFunctionParser1();
const FunctionParser& sfp2=IModeloDinamico::GetFunctionParser2();
const FunctionParser& sfp3=IModeloDinamico::GetFunctionParser3();
const FunctionParser& sfp4=IModeloDinamico::GetFunctionParser4();
const FunctionParser& sfp5=IModeloDinamico::GetFunctionParser5();
const FunctionParser& sfp6=IModeloDinamico::GetFunctionParser6();
const FunctionParser& sfp7=IModeloDinamico::GetFunctionParser7();
const FunctionParser& sfp8=IModeloDinamico::GetFunctionParser8();
const FunctionParser& sfp9=IModeloDinamico::GetFunctionParser9();
const FunctionParser& sfp10=IModeloDinamico::GetFunctionParser10();
const FunctionParser& sfp11=IModeloDinamico::GetFunctionParser11();
const FunctionParser& sfp12=IModeloDinamico::GetFunctionParser12();
const FunctionParser& sfp13=IModeloDinamico::GetFunctionParser13();
const FunctionParser& sfp14=IModeloDinamico::GetFunctionParser14();
const FunctionParser& sfp15=IModeloDinamico::GetFunctionParser15();
const FunctionParser& sfp16=IModeloDinamico::GetFunctionParser16();
//Some code
这就是我如何将fpi的值(即IModeloDinamico的变量)分配给sfpi 这是我用于的变量:
double k1[] = {IModeloDinamico::Gettinitial() , IModeloDinamico::Getu1() , IModeloDinamico::Getu2(),
IModeloDinamico::Getu3(), IModeloDinamico::Getu4(), IModeloDinamico::Getp(),
IModeloDinamico::Getq(), IModeloDinamico::Getr(), IModeloDinamico::Getphi(),
IModeloDinamico::Gettheta(), IModeloDinamico::Getpsi(), IModeloDinamico::Getvx(),
IModeloDinamico::Getvy(), IModeloDinamico::Getvz(), IModeloDinamico::Getx(),
IModeloDinamico::Gety(), IModeloDinamico::Getz() };
double k2[] = {IModeloDinamico::Gettinitial() + IModeloDinamico::GetH()/2 ,
IModeloDinamico::Getu1() + (IModeloDinamico::GetH()/2)*sfp1.Eval(k1) ,
IModeloDinamico::Getu2() + (IModeloDinamico::GetH()/2)*sfp2.Eval(k1) ,
IModeloDinamico::Getu3() + (IModeloDinamico::GetH()/2)*sfp3.Eval(k1) ,
IModeloDinamico::Getu4() + (IModeloDinamico::GetH()/2)*sfp4.Eval(k1) ,
IModeloDinamico::Getp() + (IModeloDinamico::GetH()/2)*sfp5.Eval(k1) ,
IModeloDinamico::Getq() + (IModeloDinamico::GetH()/2)*sfp6.Eval(k1) ,
IModeloDinamico::Getr() + (IModeloDinamico::GetH()/2)*sfp7.Eval(k1) ,
IModeloDinamico::Getphi() + (IModeloDinamico::GetH()/2)*sfp8.Eval(k1) ,
IModeloDinamico::Gettheta() + (IModeloDinamico::GetH()/2)*sfp9.Eval(k1) ,
IModeloDinamico::Getpsi() + (IModeloDinamico::GetH()/2)*sfp10.Eval(k1) ,
IModeloDinamico::Getvx() + (IModeloDinamico::GetH()/2)*sfp11.Eval(k1) ,
IModeloDinamico::Getvy() + (IModeloDinamico::GetH()/2)*sfp12.Eval(k1) ,
IModeloDinamico::Getvz() + (IModeloDinamico::GetH()/2)*sfp13.Eval(k1) ,
IModeloDinamico::Getx() + (IModeloDinamico::GetH()/2)*sfp14.Eval(k1) ,
IModeloDinamico::Gety() + (IModeloDinamico::GetH()/2)*sfp15.Eval(k1) ,
IModeloDinamico::Getz() + (IModeloDinamico::GetH()/2)*sfp16.Eval(k1)};
where eval是一个FunctionParser类的公共方法。
类sistema声明为:
class sistema: public Rotor, public IModeloDinamico, public FunctionParser {
public:
sistema();
virtual ~sistema();
int odesolver();
};
错误消息在sfp1.eval(k1)
中此行有多个标记 - 无效的参数'候选者是:double Eval(const double )' - 将'const FunctionParser'作为'double FunctionParser :: Eval(const double )'丢弃的'this'参数传递 限定符[-fpermissive]
eval方法是:
double Eval(const double* Vars);
这是我的第二条消息。在第一个中,我尝试修复了一些格式错误。但可能还有其他一些错误。 如果我的信息难以阅读,我表示歉意。 告诉我格式有什么问题,我会解决它。
非常感谢你的帮助!!!!!
答案 0 :(得分:1)
由于您的FunctionParser
是const引用,因此您需要Eval
具有以下签名:double Eval(const double* Vars) const
(或删除引用中的常量)。