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 に答える