C++:模板实现(代码风格)

Posted

技术标签:

【中文标题】C++:模板实现(代码风格)【英文标题】:C++: Template implementation (code style) 【发布时间】:2012-04-12 21:14:49 【问题描述】:

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

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

【问题讨论】:

代码风格问题不会继续。 如果您知道要为其实例化的所有类型,并且您在该 .cpp 文件中实例化它,则该实现可以在 cpp 文件中。 ***.com/questions/8662517/…的可能重复 【参考方案1】:

可能最常见的方式是写类定义,然后把实现写在另一个文件里,然后#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

【讨论】:

我经常看到后缀.inl,但它并不重要,只要它不是.h 也不是.cpp Boost 在这种情况下使用.ipp

以上是关于C++:模板实现(代码风格)的主要内容,如果未能解决你的问题,请参考以下文章

代码风格指南

C++代码风格指南总结

如何使 c++ 代码既可用于 Qt 项目(QTL 风格)也可用于 C++ 项目(STL 风格)

ROS从入门到精通系列(二十六) 标准化ROS代码风格 - . C++ 风格指南

ROS从入门到精通系列(二十六) 标准化ROS代码风格 - . C++ 风格指南

ROS从入门到精通系列(二十六) 标准化ROS代码风格 - . C++ 风格指南