我有一個使用放置新的自定義內存分配器。然後我有一個具有私有構造函數的類,當我嘗試使用我的內存分配器時,它抱怨構造函數是私有的。放置新的和私人的構造
這裏是我的功能分配內存,並採用放置新的要求構造:
template <class T, typename arg0>
inline T* AllocateObject(arg0& a0) { return new (InternalAllocate(sizeof(T))) T(a0); }
這是我要分配類:
/* MeshPtr definition */
typedef boost::shared_ptr<Mesh> MeshPtr;
/* Mesh defintion */
class Mesh
{
public:
static MeshPtr CreateMesh(IVertexBuffer* vertexBuffer);
~Mesh();
IVertexBuffer* GetVertexBuffer();
private:
Mesh(IVertexBuffer* vertexBuffer);
IVertexBuffer* mVertexBuffer;
};
MeshPtr Mesh::CreateMesh(IVertexBuffer* vertexBuffer)
{
return MeshPtr(HeapAllocator::GetDefaultHeapAllocator().AllocateObject<Mesh>(vertexBuffer), boost::bind(&HeapAllocator::DeallocateObject<Mesh>, &HeapAllocator::GetDefaultHeapAllocator(), _1));
}
如前所述,錯誤的是error C2248: 'Mesh::Mesh' : cannot access private member declared in class 'Mesh'
有沒有很好的解決方法?
正在申報分配器爲朋友的選擇嗎? – jogojapan
如果沒有其他選擇是的 – KaiserJohaan