Gor*_*ley 2 c++ templates build include
在我正在进行的项目中,我有一个相当大的模板类,我已经实现了这样:
我有我的头文件
// MyBigClass.h
#ifndef MYBIGCLASS_H
#define MYBIGCLASS_H
template <typename T>
class MyBigClass {
/* -- snip -- */
};
#include "MyBigClass.cpp"
#include "MyBigClass_iterator.cpp"
#include "MyBigClass_complicatedFunctionality_1.cpp"
#include "MyBigClass_complicatedFunctionality_2.cpp"
#endif
Run Code Online (Sandbox Code Playgroud)
然后我的所有实现文件基本上都是这样的:
// MyBigClass_foobar.cpp
template <typename T>
void MyBigClass<T>::member_1(){
/* -- snip -- */
}
template <typename T>
int MyBigClass<T>::member_2(int foo, T & bar){
/* -- snip -- */
}
// etc, etc
Run Code Online (Sandbox Code Playgroud)
在main.cpp,我只是包括MyBigClass.h,一切正常,编译得很好.我将实现分成多个文件的原因是因为我更喜欢处理三个或四个200-400行文件,而不是一个1200行文件.文件本身在逻辑上是相当有条理的,仅包含嵌套类的实现或一组相互关联的成员函数.
我的问题是,这是完成了吗?前几天我向别人展示时,我得到了一个奇怪的反应,所以我想知道这是不是一种不好的做法,或者是否有更好,更常用的方式来完成这样的事情.
这是公约通常不包括cpp文件(有些时候这样做是有限的和异国情调的情况下),这可能是你得到了长相怪异的原因.
通常这种分离是通过移动执行到完成.impl,甚至一个.h文件,而不是一个cpp文件.
不,分离模板的实现并在头文件中包含文件没有任何问题.
| 归档时间: |
|
| 查看次数: |
1884 次 |
| 最近记录: |