C++:模板实现(代码样式)

C++: Template implementation (code style)

本文关键字:代码 样式 实现 C++      更新时间:2023-10-16

模板类的实现必须包含在定义它的头文件中。这样一个类的实现应该在类中还是常规完成(就像你对其他所有类所做的那样),但只是在头文件中完成?

我对常规方法遇到的问题是实现变得非常臃肿,因为您需要将模板定义放在前面。我想知道哪种是最常见的方式。

可能最常见的方法是编写类定义,然后将实现写入另一个文件中,然后将实现文件#include在头文件底部,并且不要将其列在要编译的文件中。这样它们在不同的文件中,但编译器感到满意,因为定义和声明在预处理后位于同一文件中。

例:

// header.h
template<typename T>
struct A {
    int dostuff();
};
#include "header.template"
<小时 />
// header.template (not header.cpp, to make it clear that this doesn't get compiled)
template<typename T>
int A::dostuff() { 
   // do stuff
}

预处理器完成后,文件如下所示

template<typename T>
struct A {
    int dostuff();
};
template<typename T>
int A::dostuff() { 
   // do stuff
}