2014-09-30 106 views
-1

我不知道如何把一個正確的標題。對不起,我的問題對我來說很難。派生的方法在基類不叫

我有一個類myCal.h:

class myCal 
{ 
public: 
    myCal(); 
    int add(int a, int b); 
    int sub(int a, int b); 
    int expresstion(int a, int b, int c); 
}; 

和myCal.cpp:

myCal::myCal() 
{ 
} 

int myCal::add(int a, int b) 
{ 
    return a+b; 
} 

int myCal::sub(int a, int b) 
{ 
    return a-b; 
} 

int myCal::expresstion(int a, int b, int c) 
{ 
    return add(sub(a, b), c); 
} 
在main.cpp中

,我有類mockcal這樣的:

class mockcal : public myCal 
{ 
public: 
    int sub(int a, int b) 
    { 
     return 100; 
    } 
    int expresstion(int a, int b, int c) 
    { 
     return myCal::expresstion(a,b,c); 
    } 
}; 

如果我運行myCal.expresstion(3,2,1),返回值是2,沒關係, ,但是當我運行mockCal.expresstion(3,2,1)時,ret urn值仍然是2,我希望它返回101.

請幫我做到這一點,但不要改變mockCal :: expresstion中的任何內容。 非常感謝。

+0

如果你寫的:INT expresstion(INT一個, int b,int c) { return myCal :: expresstion(a,b,c); }你將永遠有2 – 2014-09-30 08:28:47

+0

所以我現在需要做的,在myCal :: expresstion中調用myCal :: add和myCal :: sub,我希望myCal :: sub總是返回100,請幫助 – 2014-09-30 08:33:17

+0

寫在表達式中mockCal類如果關於你的實例對象,那麼如果實例是myCal(高級),你將調用myCal :: expresstion,否則你會調用mockCal override – 2014-09-30 08:46:38

回答

1

你需要做的方法int sub(int a, int b)在基類的虛(在你的代碼myCal類),如果你想覆蓋它在mockcal

class myCal 
{ 
    public: 
    //... 
    virtual int sub(int a, int b); 
    //.. 
}; 
+0

我無法編輯class myCal,只能修改mockCal,可以給我建議...... :( – 2014-09-30 08:39:00

+1

在_mokcal中執行計算:: expresstion_,不返回_myCal :: expresstion(a,b,c)_。 – Zlatomir 2014-09-30 08:45:46

+0

我知道,但我必須這樣做,我不能從myCal :: expresstion複製代碼,但如果您有任何想法,請發佈它,有任何方法來調用expresstion方法和此方法cal mockcal :: sub而不是myCal :: sub ... :( – 2014-09-30 08:51:04

相關問題