我知道函数可以传递template
参数,我可以像这样传递类构造函数吗?
更新:
我想这样做的全部原因是我可以在内存池中选择构造函数,并且我想要分配的类中没有任何代码更改(在这种情况下class A
)
class A
{
public:
A(){n=0;}
explicit A(int i){n=i;}
private:
int n;
};
class MemoryPool
{
public:
void* normalMalloc(size_t size);
template<class T,class Constructor>
T* classMalloc();
};
template<class T,class Constructor>
T* MemoryPool::classMalloc()
{
T* p = (T*)normalMalloc(sizeof(T));
new (p) Constructor; // choose constructor
return p;
}
MemoryPool pool;
pool.classMalloc<A,A()>(); //get default class
pool.classMalloc<A,A(1)>();