【发布时间】:2019-03-19 14:25:17
【问题描述】:
我试图了解是否可以从子类调用父函数成员。
基本上我有以下代码:
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”作为输出?
【问题讨论】:
-
不清楚您所说的“类似技术”是什么意思。您可以使用 [静态 |动态]_cast,例如。
-
好的,我会摆脱这个要求。除了引入开销的选项之外,每个选项都可以。实际上,它并不是很清楚。
-
您已经在使用 CRTP 关键字。您在实施时遇到困难吗?
-
我想知道是否有其他方法可以做到这一点,或者 CRTP 是否是唯一的解决方案。我认为也有不同的实现方式
-
我认为还有其他解决方案。但是 CRTP 有什么问题呢?
标签: c++ templates inheritance crtp overload-resolution