首页 > 解决方案 > 有没有更简洁的方法来编写模板函数定义?

问题描述

一个基本的模板类可能看起来像这样:

例子.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 是我唯一的方法?

标签: c++

解决方案


听起来,最好的选择就是完整地写出所有内容。不幸的是,但我想这就是查找/替换的目的。此外,我的问题中的代码在上下文中使用时会给出链接器错误,除非在头文件中给出了函数定义,或者(我认为)如果模板实例明确写入源文件(为什么模板只能在头文件中实现)文件?)。


推荐阅读