編輯:這只是另一種情況「愚蠢&無趣的錯誤」。你已被警告:)C++繼承與模板
這是一直讓我在晚上的東西。也許有人以更高的C++知識,可以找到如何得到這個工作:
template<class T>
class Base
{
virtual void Method (T* arg) = 0;
};
class Child : public Base<MyType>
{
void Method (MyType* arg) { /*blah*/ };
};
這並不編譯(至少在VS2008並不),因爲它無法企及的兩種方法一起。
目前,我們通過在Method聲明中使用BaseType而不是MyType來解決此問題,然後在Method的Child實現中將MyType的BaseType轉換爲MyType(我們仍然需要MyType作爲基類內其他東西的模板) 。
仍然可以直接使用模板類型。
編輯: 感謝傢伙似乎修復其他錯誤(後來列出)使這一切工作。 我確實有template<class T>
而不是template<T>
在我原來的代碼以及公開的方法。這表明我應該在發帖前等待更長的時間。我爲此道歉。
你會有非常不同的錯誤這段代碼。請張貼您的實際代碼,或者至少編譯您遇到的同樣錯誤。 – Gorpik