我遇到了一些麻煩,試圖實施一些方法。 這就是我所做的。類SISTEMA的評估繼承方法的錯誤
1)1對象與1個對象類轉子和類IModeloDinamico 1個對象物的內部產生。這個Rotor和IModeloDinamico擁有自己的所有變量的接口。
sistema::sistema() {
new Rotor();
new IModeloDinamico();
};
2)然後我實現解決差分ecuations的系統中,需要從轉子和IModeloDinamico對象的所有值的方法。
凡GetFunctionParseri()是IModeloDinamico的方法,該方法通過引用返回值:
const FunctionParser& GetFunctionParser1(){return fp1;};
該目的是FP1類FunctionParse的。
解決ODE系統,該方法是:
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)在該線
多個標記 - 無效參數「候選人有:雙的eval(const的雙)' - 傳遞 'const的FunctionParser' 作爲 '這種雙重FunctionParser' 的參數 '::的eval(const的雙)' 丟棄 限定符[-fpermissive]
和eval方法是:
double Eval(const double* Vars);
這是我的第二個消息。在第一個我做了一些格式錯誤,我嘗試修復。但可能還有其他一些錯誤。 如果我的信息難以閱讀,我很抱歉。 告訴我什麼是錯誤的格式,我會解決它。
非常感謝您的幫助!!!!!
我建議您將編程語言添加爲標記。 – 2013-05-07 12:26:50
對不起!我忘了! – user2357667 2013-05-08 07:57:50