C++ 有没有更干净的方法来编写模板函数定义?

C++ 有没有更干净的方法来编写模板函数定义?,c++,C++,基本模板类可能如下所示: 例h template<class T> class Example { public: T doSomething(); }; 模板 课例{ 公众: T doSomething(); }; Example.cpp #include "Example.h" template<class T> T Example<T>::doSomething() { // ... return 0

基本模板类可能如下所示:

例h

template<class T> 
class Example {
public:
    T doSomething();
};
模板
课例{
公众:
T doSomething();
};
Example.cpp

#include "Example.h"

template<class T>
T Example<T>::doSomething() {
    // ...
    return  0;
}
#include "Example.h"

#define Tmpl template<class T>
#define Example Example<T>

Tmpl 
T Example::doSomething() {
    // ...
    return 0;
}
#包括“Example.h”
模板
T示例::doSomething(){
// ...
返回0;
}
在一个如此小的类中,这是很好的,但是当处理较大的类时,可能会有更多的模板参数,必须不断地重新键入
template
Example
,这可能会变得很烦人,如果模板参数发生变化,您就必须到处更改它。将上述代码放在两个预处理器定义中似乎效果不错,但看起来非常混乱:

Example.cpp

#include "Example.h"

template<class T>
T Example<T>::doSomething() {
    // ...
    return  0;
}
#include "Example.h"

#define Tmpl template<class T>
#define Example Example<T>

Tmpl 
T Example::doSomething() {
    // ...
    return 0;
}
#包括“Example.h”
#定义Tmpl模板
#定义示例
Tmpl
T示例::doSomething(){
// ...
返回0;
}

有没有一种稍微干净一点的方法,或者“定义我唯一的方法”?

听上去,最好的选择就是把所有的东西都写下来。不幸的是,我想这就是查找/替换的目的。此外,我问题中的代码在上下文中使用时会给出链接器错误,除非函数定义在头中给出,或者(我认为)如果模板实例显式写入源文件().

在cpp文件中定义模板方法时要小心,因为如果它们不在标题中,则在其他生成单元中包含
Example.h
时会出现链接错误。最有可能的情况是不应该有Example.cpp@帕特里克·罗伯茨说得好,我忘了。话虽如此,我认为您仍然可以通过稍微修改代码来让它工作,而且我不希望在标题中定义所有函数。如果我没记错的话,将定义放在标题中可以解决我的问题,所以我会记住它。我建议不要使用#define,而是直接将它打印出来。原因是它降低了其他人阅读代码的可读性。如果你不想把代码内嵌到类本身中(我通常认为做模板代码的最麻烦的方式),那么使用一个包含“MyAuthTime.INL”的代码就如同你能做的一样好。(扩展名.inl只是一个提示,表明文件本身不应像使用.cpp那样被视为翻译单元)