C++模板类外部成员函数定义有更简洁的编写方式吗?
C++ 模板类重复写法的简化问题
模板类的常规标准写法
基础模板类的常规写法分为头文件和实现文件两部分:
- 头文件
Example.h
template<class T> class Example { public: T doSomething(); };
- 实现文件
Example.cpp
#include "Example.h" template<class T> T Example<T>::doSomething() { // 具体实现逻辑 return 0; }
常规写法的使用痛点
这种写法在规模较小的模板类中尚可接受,但如果模板类规模较大、带有多个模板参数,每次定义成员函数都需要重复书写template<class T, ...>前缀,以及带模板参数的类名Example<T, ...>。修改模板参数时还需要同步改动多处代码,操作十分繁琐。
已尝试的宏简化方案
曾尝试将上述重复部分封装为两个预处理宏来简化写法,这种方式虽然能正常运行,但代码观感十分凌乱,对应的Example.cpp写法如下:
#include "Example.h" #define Tmpl template<class T> #define Example Example<T> Tmpl T Example::doSomething() { // 具体实现逻辑 return 0; }
核心疑问
有没有更干净的实现方式?还是说这类简化只能通过#define预处理宏来实现?
内容的提问来源于stack exchange,提问作者the4naves
相关产品推荐
相关产品推荐

