0
如何在子類中覆蓋基類模板化類方法(即帶有非模板方法的模板類)?覆蓋基類模板類方法
#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;
}
我知道通過的子類類型作爲模板參數的基類,然後用static_cast
的技術,但它只是這樣不潔給我的東西,應該是非常容易。
我敢肯定有背後,我只是沒有把握,因爲我一直在尋找了幾個小時,也找不到任何代碼或解決方案,以這種特殊的情況下模板的一些基本概念。
哦,非常有趣的是編譯器在編譯時如何捕獲它。固定/工作測試用例[此處](http://pastebin.com/hep5T5v6)。謝謝! – Qix
它也應該注意這也適用於析構函數,顯然。 – Qix