0
#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>and 。ArrayList<T>::

有什么办法可以消除这种重复(DRY),所以我可以做类似的事情

#include "ArrayList.h"
// do some magic

ArrayList(): innerArray(new T[0]), len(0) {
    // constructor stuff
}
~ArrayList() {
    // destructor stuff
}
4

1 回答 1

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)
{}
于 2013-06-10T01:56:44.523 回答