Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在模板类的头文件中包含.cpp文件_C++_Templates - Fatal编程技术网

C++ 在模板类的头文件中包含.cpp文件

C++ 在模板类的头文件中包含.cpp文件,c++,templates,C++,Templates,我知道模板类的定义和实现应该在同一个头文件上。但我在学校的学习方式有点不同 我将在头文件中包含模板类的定义,在头文件的末尾,我将包含“MyFile.cpp”,其中包含模板类的实现 这是一种糟糕的编程实践吗 “这是一种糟糕的编程实践吗?” 一般来说不是,这是一种非常常见的技术。但是问题是 .CPP文件扩展名,这将影响许多IDE和构建系统,将其视为常规源文件。更常用的扩展是.tcc,.tpc不,实现这样做是很常见的,尽管它们倾向于给出不同的后缀,以明确它不意味着像GCC中的“tcc”那样单独编译。这

我知道模板类的定义和实现应该在同一个头文件上。但我在学校的学习方式有点不同

我将在头文件中包含模板类的定义,在头文件的末尾,我将包含“MyFile.cpp”,其中包含模板类的实现

这是一种糟糕的编程实践吗

“这是一种糟糕的编程实践吗?”


一般来说不是,这是一种非常常见的技术。但是问题是<代码> .CPP文件扩展名,这将影响许多IDE和构建系统,将其视为常规源文件。更常用的扩展是
.tcc
.tpc

不,实现这样做是很常见的,尽管它们倾向于给出不同的后缀,以明确它不意味着像GCC中的“tcc”那样单独编译。这只是一个约定问题。感谢各位的回复!您只需确保所使用的任何构建系统不会自动尝试编译.cpp文件。把它包括在防护栏里,在我看来这是徒劳的。标题中包含的cpp(或tcc)文件是所有意图和目的的标题。不妨做一件简单的事情,将所有代码放在一个文件中。+1
.tcc
;软件已经有很多方法可以搞乱,当
.tcc
很普遍时,使用
.cpp
来混淆构建系统是毫无意义的。我也见过
.tpp
.inl
,后者被使用,因为
内联
函数应该得到同样的处理。@Morwenn实际上没有一个共同的惯例,我见过很多不同的风格。重要的一点是要使它与构建系统所使用的规则不同,以找到规则的C++源文件。