1
我有一對夫婦在我的內存管理器類中聲明模板方法:模板函數和安置新的構造函數的參數
template <class T>
inline T* AllocateObject() { return new (Allocate(sizeof(T))) T(); }
template <class T, class arg0>
inline T* AllocateObject(arg0 a0) { return new (Allocate(sizeof(T))) T(a0); }
template <class T, class arg0, class arg1>
inline T* AllocateObject(arg0 a0, arg1 a1) { return new (Allocate(sizeof(T))) T(a0,a1); }
template <class T, class arg0, class arg1, class arg2>
inline T* AllocateObject(arg0 a0, arg1 a1, arg2 a2) { return new (Allocate(sizeof(T))) T(a0,a1,a2); }
的想法是,該方法將分配內存和調用任何類構造函數給出。
問題是,如果你想提供構造函數的參數..我唯一的解決方案是上面你重載每個變體的函數。我不覺得它非常可行。
有沒有更好的解決方案?
在C++ 11,只有是不是?也許我應該補充一點,如果可能的話,我的目標是C++ 03:p – KaiserJohaan 2012-04-11 16:42:07