我正在嘗試製作可用於模板其他類的類。也許我在尋找錯誤的關鍵詞。基本上我想PrimaryClass
和類A
是純虛擬的。 DerivedClass
和C
是從它們各自的類派生的。 問題是,通過調用繼承的類:C
在DerivedClass
我不重寫純虛擬PrimaryClass
。我知道這一點,但我不知道如何解決它。嵌套抽象基類的通用模板
我的印象是,由於C
是從A
派生出來的,它會起作用。 如果我在
virtual void DoFunThings (C<T>* d) {}
改變C
到A
它的工作原理,但這樣做的關鍵是允許使用不同的衍生版本A
。
template <class T>
class A
{
public:
virtual void FunThings (const A<T> &orig, A<T>* new_one) = 0;
T thing{};
};
template <class T>
class C: public A <T>
{
public:
virtual void FunThings (const C<T> &orig, C<T>* new_one) {}
};
template <class T>
class PrimaryClass
{
public:
virtual void DoFunThings (A<T>* d) = 0;
};
template<class T>
class DerivedClass: public PrimaryClass<T>
{
public:
virtual void DoFunThings (C<T>* d) {}
};
int main()
{
DerivedClass<int> derived;
return 0;
}
如果這是不可能做到這一點這樣怎麼能着手對通用的面向對象的代碼與我期望的功能?
我說我知道覆蓋問題,需要一個解決方案來利用派生A. – MacAttack