我知道函数可以通过template
参数,我可以像这样传递类构造函数。在C++中通过模板参数传递类构造函数
更新: 的全部原因,我想这样做,是我可以在存储库并没有任何代码我想的alloc类改变选择的构造函数(在这种情况下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)>();
'A()'的模板参数表示函数类型,不采取任何参数并返回'A'。 – Xeo 2012-01-07 13:11:25
你能否提供一些更多的上下文?只给出这些小信息,我会问自己:为什么不直接使用'new A()'而不是'new_func ''?换句话说,'new_func'会给你买什么?它是否将建筑抽象掉? – Andre 2012-01-07 13:25:21
@Andre原因是我想在内存池中使用它,我可以malloc一个类与选择工程 – xucheng 2012-01-08 04:41:28