簡體   English   中英

創建指向模板化類的指針

[英]Creating a pointer to a templated class

我知道如果使用基類,則可以有效地創建指向模板化類的指針。 有更容易的方法嗎?

所以。 這是使用基類的示例

class A {}
template <class T>
class B : public A {}

現在,我可以創建B<T>的實例,並使用基類A指向它。 有更容易的方法嗎? 更直接的方法? 一個不涉及創建“虛擬”基類的類。

模板的不同實例(例如B<int>B<char> )是完全獨立的類型,就像intchar是獨立的類型一樣。 除非您從同一基類派生這兩個對象,否則就不能有一個指向任何一種對象的指針,如您的示例所示。 就像您無法擁有一個指向intchar指針變量一樣。

但是,如果只希望指針指向單個特定類型,則只需聲明B<int> *B<char> *類型的指針。 您不需要為此的基類A

當然,可以將單個特定類型指定為其他模板的參數。 例如,您可能有一個模板類C<T> ,它包含類型B<T> *的指針,因此C<int>將具有B<int> *成員,而C<char>將具有一個B B<char> *成員。 再一次,您不需要A基類。

暫無
暫無

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

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