c++ - 有没有更简洁的方法来编写模板函数定义?
问题描述
一个基本的模板类可能看起来像这样:
例子.h
template<class T>
class Example {
public:
T doSomething();
};
例子.cpp
#include "Example.h"
template<class T>
T Example<T>::doSomething() {
// ...
return 0;
}
在这么小的类中,这很好,但是当处理更大的类时,可能有更多的模板参数,必须不断地重新输入会变得很烦人template<class T, ...>
,Example<T, ...>
如果模板参数发生变化,你必须在任何地方进行更改。将上述代码放在两个预处理器定义中似乎工作正常,但看起来真的很乱:
例子.cpp
#include "Example.h"
#define Tmpl template<class T>
#define Example Example<T>
Tmpl
T Example::doSomething() {
// ...
return 0;
}
有没有更清洁的方法,或者#define 是我唯一的方法?
解决方案
听起来,最好的选择就是完整地写出所有内容。不幸的是,但我想这就是查找/替换的目的。此外,我的问题中的代码在上下文中使用时会给出链接器错误,除非在头文件中给出了函数定义,或者(我认为)如果模板实例明确写入源文件(为什么模板只能在头文件中实现)文件?)。