包括模板类型的头文件

Include header file of template type

本文关键字:文件 类型 包括模      更新时间:2023-10-16

我正在编写一个模板类,比如

template <class T>
class bla {
    bla() ;
    ~bla() ;
};
template <class T>
bla<t>::bla(){}
template <class T>
b<t>::~b(){}

只要T是intchar,依此类推,它就可以工作。。。但如果它将是一个自定义类MyClass,则需要包含头文件MyClass.h,或者我错了吗?

问题:如何以模板式的方式完成,即类似的方式

#include "T.h"

干杯!

使用bla<MyClass>时,需要包含bla的定义和MyClass的定义。当定义bla时,MyClass不一定是已知的。这方面的神奇之处被称为"两阶段名称查找":在编译模板定义时,将查找所有不依赖于模板参数的名称。在第二阶段,当模板被实例化时,所有剩余的名称都会在实例化的上下文中查找。

嗯,情况正好相反。如果您有一个类MyClass,您想在其中一个模块(C++中的翻译单元)中使用它,那么您将包括模板容器(上面的源代码,让我们将其命名为container.h),然后创建数据结构。

// main.cpp
#include "container.h"
#include "myclass.h"
int main()
{
    bla<MyClass> foo;
    // lots of more things...
}

也许问题在于您不知道如何将代码划分为模块。一个简单的经验法则是将每个类放在一个模块中,每个模块都有一个.h文件(接口,所有声明都在其中)和.cpp文件(实现文件,大致在其中编写方法内部)。

希望这能有所帮助。