【发布时间】:2015-06-16 18:43:33
【问题描述】:
我有以下代码。 让我们有函数声明和实现 分开。
#include <iostream>
class Y1 {};
class Y2 {};
template <class T1, class T2>
class A
{
public:
explicit A();
void foo() const;
int bar() const;
};
template <class T1, class T2>
A<T1, T2>::A() {}
template <class T1, class T2>
void A<T1, T2>::foo() const {}
template <class T1, class T2>
int A<T1, T2>::bar() const {}
int main() {
A<Y1, Y2> a;
a.foo();
A<Y1, Y2> *a2 = new A<Y1, Y2>();
a2->foo();
return 0;
}
每次写都很痛苦
template <class T1, class T2>
对于每个对象声明和函数声明。
有人可以帮助使用宏或 typedef 来缩短 模板参数说明。
【问题讨论】:
-
可以内联定义成员函数。
-
我明白了。但让我们将结构和实现分开。
-
正如@juanchopanza 所说......由于是模板,它们很可能必须与类定义位于同一位置。
-
我想说的是,对于模板来说,将它们分开是很常见的不,因为你从中获得的收益很少。
标签: c++ templates macros typedef