如果我有这样的模板类规范,
template <typename T>
class MyClass {
public:
void fun1();
// ...
void funN();
};
template <typename T>
void MyClass<T>::fun1() {
// definition
}
// ...
template <typename T>
void MyClass<T>::funN() {
// definition
}
Run Code Online (Sandbox Code Playgroud)
如果我将类模板更改为其他模板,请说我添加了一个额外的参数:
template <typename T, typename U>
class MyClass {
// ...
};
Run Code Online (Sandbox Code Playgroud)
然后我必须更改每个函数定义(fun1,...,funN)以同意类模板规范:
template <typename T, typename U>
void MyClass<T,U>::fun1() { //... }
Run Code Online (Sandbox Code Playgroud)
有什么策略可以避免这种情况吗?我可以使用宏吗?
#define DFLT_TEMPLATE template<typename T, typename U>
#define DFLT_CLASS class<T,U>
DFLT_TEMPLATE
void DFLT_CLASS::fun1() { // ... }
Run Code Online (Sandbox Code Playgroud)
或者这被认为是不好的做法?
对我来说,使用宏的好处远远超过了缺点.是的,如果您使用宏,那么如果您需要添加其他模板参数,则只需进行一次修改即可.但阅读你代码的其他人可能会呕吐.
我的意思是,你打算为你拥有的每个模板做这个吗?你的代码会被丑陋的宏所侵扰.