簡體   English   中英

在 C++ 中覆蓋孫子類中的模板參數?

[英]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> {};

然后您可以在BA繼承時使用所需的類型:

class B : public A<SettingsTypeB> {};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM