我创建了我的第一个模板类,A类和B类都从中降级。现在,在C.h中,我同时包括A.h和B.h
如here所述,每个翻译单元只能使用一次相同的模板。我了解这一点-但如何防止出现上述错误?由于A和B在其类定义行中使用相同的模板,因此它们都将被拉入同一C.h文件中。我看不到如何将其拆分为多个文件。
我是否需要在模板.h文件中添加包含防护? (但是,模板的第二种用法如何知道类中的T是不同的?
答案 0 :(得分:0)
这是否意味着模板只需要包含一次,并且每次使用模板时,编译器都会用T代替该特定用法?
是的,这就是类模板的重点;您只需定义一次(加上任何专业化知识),编译器就会为模板的每个不同的 instantiation 生成一个单独的类。
例如,此:
template<class T>
class Foo {
};
然后允许您编写Foo<int>
,Foo<long>
,Foo<std::string>
,Foo<Foo<int> *>
等,然后编译器将为每个生成必需的类。 / p>