C++ 在模板类的头文件中包含.cpp文件
我知道模板类的定义和实现应该在同一个头文件上。但我在学校的学习方式有点不同 我将在头文件中包含模板类的定义,在头文件的末尾,我将包含“MyFile.cpp”,其中包含模板类的实现 这是一种糟糕的编程实践吗 “这是一种糟糕的编程实践吗?”C++ 在模板类的头文件中包含.cpp文件,c++,templates,C++,Templates,我知道模板类的定义和实现应该在同一个头文件上。但我在学校的学习方式有点不同 我将在头文件中包含模板类的定义,在头文件的末尾,我将包含“MyFile.cpp”,其中包含模板类的实现 这是一种糟糕的编程实践吗 “这是一种糟糕的编程实践吗?” 一般来说不是,这是一种非常常见的技术。但是问题是 .CPP文件扩展名,这将影响许多IDE和构建系统,将其视为常规源文件。更常用的扩展是.tcc,.tpc不,实现这样做是很常见的,尽管它们倾向于给出不同的后缀,以明确它不意味着像GCC中的“tcc”那样单独编译。这
一般来说不是,这是一种非常常见的技术。但是问题是<代码> .CPP文件扩展名,这将影响许多IDE和构建系统,将其视为常规源文件。更常用的扩展是
.tcc
,.tpc
不,实现这样做是很常见的,尽管它们倾向于给出不同的后缀,以明确它不意味着像GCC中的“tcc”那样单独编译。这只是一个约定问题。感谢各位的回复!您只需确保所使用的任何构建系统不会自动尝试编译.cpp文件。把它包括在防护栏里,在我看来这是徒劳的。标题中包含的cpp(或tcc)文件是所有意图和目的的标题。不妨做一件简单的事情,将所有代码放在一个文件中。+1.tcc
;软件已经有很多方法可以搞乱,当.tcc
很普遍时,使用.cpp
来混淆构建系统是毫无意义的。我也见过.tpp
和.inl
,后者被使用,因为内联函数应该得到同样的处理。@Morwenn实际上没有一个共同的惯例,我见过很多不同的风格。重要的一点是要使它与构建系统所使用的规则不同,以找到规则的C++源文件。