#include "ArrayList.h"
template <typename T>
ArrayList<T>::ArrayList(): innerArray(new T[0]), len(0) {
// constructor stuff
}
template <typename T>
ArrayList<T>::~ArrayList() {
// destructor stuff
}
... on and on and on ...
在此代码中,我必须在整个班级的每个成员函数之前编写template <typename T>
和ArrayList<T>::
。
有没有办法消除这种重复(DRY),所以我可以做类似的事情
#include "ArrayList.h"
// do some magic
ArrayList(): innerArray(new T[0]), len(0) {
// constructor stuff
}
~ArrayList() {
// destructor stuff
}
答案 0 :(得分:0)
我想你可以使用宏:
#define DEFINE_ARRAYLIST_TEMPLATE(F, ...) template <typename T> \
A<T>::F(__VA_ARGS__)
用它来做到这一点:
DEFINE_ARRAYLIST_TEMPLATE(ArrayList) : innerArray(nullptr), len(0)
// ^^^^^^^ < my earlier suggestion
{}
DEFINE_ARRAYLIST_TEMPLATE(ArrayList, int n) : innerArray(new T[n]), len(n)
{}
DEFINE_ARRAYLIST_TEMPLATE(~ARRAYLIST)
{}