簡體   English   中英

如何避免重新定義模板<class T>包含標題時出錯

[英]How to avoid redefinition of template<class T> error when including headers

我創建了我的第一個模板類,A 類和 B 類都從該模板類繼承而來。 現在,在 Chi 中,我同時包含 Ah 和 Bh

正如解釋在這里你只能使用同一個模板每翻譯單元一次。 我明白 - 但我如何防止上述錯誤? 由於 A 和 B 在它們的類定義行中使用相同的模板,它們都將被拉入同一個 Ch 文件。 我不知道如何將其拆分為多個文件。

我需要在模板 .h 文件中放置一個包含保護嗎? (但是模板的第二次使用如何知道類中的 T 是不同的呢?

這是否意味着模板只需要包含一次,每次使用時編譯器都會用 T 替換該特定用法?

是的,這就是類模板的全部意義; 您只需定義一次(加上任何特化),編譯器就會為模板的每個不同實例生成一個單獨的類。

例如,這個:

template<class T>
class Foo {
};

允許您然后編寫Foo<int>Foo<long>Foo<std::string>Foo<Foo<int> *>等,編譯器將為每個生成必需的類。

暫無
暫無

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

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