c++ - 包含模板类型的头文件

标签 c++ templates header include

假设我正在编写一个模板类

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 的定义.没有必要 MyClass什么时候知道 bla被定义为。其神奇之处被称为“两阶段名称查找”:在编译模板定义时查找所有不依赖于模板参数的名称。在第二阶段,当模板被实例化时,将在实例化的上下文中查找所有剩余的名称。

关于c++ - 包含模板类型的头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225128/

相关文章:

c++ - g_main_loop_run 阻塞 Qthread 并且不允许停止视频

c++ - 编译 c++ 代码时 xcode 上的线程

templates - Symfony1 模板默认值和回退或模块之间的模板共享

c++ - 我可以推断作为模板参数传递的函数的返回类型吗?

c - 最佳实践 : Use of stdint types in a header file

c++ - 在 C++ 中调用线程两次时变量重叠

c# - 如何检测 Firefox/IE/Chrome 中的自定义插件?

c++ - 虚拟析构函数改变 decltype 的行为

android - 如何设置 Header 、 Scrollable content 和 Footer ?在安卓系统中

angularjs - 未设置 Node.js 响应 header