[英]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.