如何覆盖子类中的基本模板化类方法(即具有非模板方法的模板类)?
#include <Windows.h>
#include <iostream>
struct S{};
template <typename T>
class Base
{
public:
Base()
{
Init(); // Needs to call child
}
virtual void Init() = 0; // Does not work - tried everything
// - Pure virtual
// - Method/function template
// - Base class '_Base' which Base extends that has
// pure virtual 'Init()'
// - Empty method body
};
class Child : public virtual Base<S>
{
public:
virtual void Init()
{
printf("test"); // Never gets called
}
};
int main()
{
Child foo; // Should print "test"
system("pause");
return 0;
}
我知道将子类类型作为模板参数传递给基类然后使用 a 的技术static_cast
,但它对我来说太不干净了,因为它应该非常容易。
我确信模板背后有一些我只是没有掌握的基本思想,因为我已经搜索了几个小时,但找不到任何代码或解决方案来解决这个特定的场景。