繁体   English   中英

如何从派生类中调用在派生类中重载的模板类函数?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM