簡體   English   中英

使用基類的重載函數

[英]using overloaded function of the base class

我嘗試做類似的事情

class base {
public:
    virtual double operator() (double val) = 0;
    virtual double operator() (double prev, double val) {
        return prev + operator()(val);
    }
};

class derived: public base {
    virtual double operator() (double val) {
        return someting_clever;
    }
};

我想重載operator()以使用不同的算法,如std :: accumulate或std :: transform。 我對operator()(double,double)的基類定義非常滿意。 但是我無法從派生類中調用它。 我是否必須為從基礎派生的每個類重寫相同的代碼?

這里的問題是在派生類中定義一個函數會在基類中隱藏相同的函數; 這就是為什么你不能從派生類訪問operator()(double, double)的原因。

但是有一種方法可以做到:你可以在派生類中使用using指令:

class derived: public base {
    using base::operator();
    virtual double operator() (double val) {
        return someting_clever;
    }
};

你試過一個using指令嗎?

class derived: public base {
    virtual double operator() (double val) {
        return someting_clever;
    }
    using base::operator();
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM