![](/img/trans.png)
[英]c++ How do you call a templated base-class function from derived class instance
[英]c++ How do you call a template class function that is overloaded in the derived class, from the derived class?
是否有一种方法可以在派生类中重载基模板类函数,并且仍然能够调用基类函数,如下所述?
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();
}
您遇到的问题称为“ 隐藏名称” 。
您可以通过按名称限定基类功能来调用它:
B.testBase<double>::insert();
或通过“取消隐藏”它,通过使用using声明在派生类中声明它:
class testDerived : public testBase<double> {
public:
using testBase<double>::insert;
private:
void insert(int a) {
// something
}
};
加
public:
using testBase<double>::insert;
到testDerived
的定义。 这将使基础的隐藏成员在派生类中可用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.