在 C++ 中从子 class 调用重载的父方法

Calling an overloaded parent's method from a child class in C++

我正在尝试了解是否可以从子项中调用父项的函数成员 class。

基本上我有以下代码:

struct Parent
   {
   template<class... Args>
   void doFoo(Args&&... args)
     {
     std::cout << "parent doFoo";
     }

   template<class... Args>
   void foo(Args&&... args)
     {
     doFoo(args...);
     }
   };

 struct Child : Parent
   {
     template<class... Args>
     void doFoo(Args&&... args)
       {
       std::cout << "child doFoo";
       }
   };

   Child c;
   c.foo(); // This should invoke Child::doFoo()

有没有一种简单的方法可以在不引入开销的情况下获得 "child doFoo" 作为输出?

我不知道它是否是一个选项,但如果你能负担得起模板化 class 而不是方法,你可以将 "doFoo" 设为虚拟然后它会像你一样工作预计。

#include <iostream>

template <typename ... Args>
struct Parent
   {
   virtual void doFoo(Args&&... args)
     {
     std::cout << "parent doFoo";
     }

   void foo(Args&&... args)
     {
     doFoo(args...);
     }
   };

template <typename ... Args>
 struct Child : Parent <Args...>
   {
     void doFoo(Args&&... args) override
       {
       std::cout << "child doFoo";
       }
   };

int main()
{
   Child<> c;
   c.foo(); // This should invoke Child::doFoo()
}