有没有办法在派生类中重载基本模板类函数,并且仍然可以调用基类函数,如下所述?
template <class A>
class testBase {
public:
void insert() {
// Whatever
}
};
class testDerived : public testBase<double> {
private:
void insert(int a) {
// something
}
};
int main() {
testDerived B;
// Compiler doesn't recognize overloaded insert,
// How do you do this?
B.insert();
}
答案 0 :(得分:3)
您遇到的问题称为名称隐藏。
您可以通过按名称限定来调用基类函数:
B.testBase<double>::insert();
或通过“取消隐藏”它,通过使用声明在派生类中声明它:
class testDerived : public testBase<double> {
public:
using testBase<double>::insert;
private:
void insert(int a) {
// something
}
};
答案 1 :(得分:2)
添加
public:
using testBase<double>::insert;
到testDerived
的定义。这将使派生类中的隐藏成员可用