[英]Overriding a template argument in grandchild class in C++?
我有以下層次結構
template<class SettingsType>
class TemplatedBase;
class A : public TemplatedBase<SettingsTypeA>;
class B : public A;
class SettingsTypeA;
class SettingsTypeB : public SettingsTypeA;
有沒有辦法覆蓋B
的模板特化,以便它從A
繼承,同時將模板特化SettingsType
設置為SettingsTypeB
不。模板不是一個類。 這是一個模板。
TemplatedBase<SettingsTypeA>
是TemplatedBase<SettingsTypeA>
的特定實例 - 它只是常規的Foo
類。 除此之外沒有什么特別之處。
因此,您的問題相當於詢問您是否可以在以下示例中將C
更改為D
:
class A : public C;
class B : public A;
一個簡單的更改是模板A
同時給它一個默認值:
template<typename T = SettingsTypeA>
class A : public TemplatedBase<T> {};
然后您可以在B
從A
繼承時使用所需的類型:
class B : public A<SettingsTypeB> {};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.