새로운 배치를 사용하는 사용자 정의 메모리 할당자가 있습니다. 그런 다음 개인 생성자가있는 클래스가 있고 내 메모리 할당자를 사용하려고하면 private 인 생성자에 대해 불만이 제기됩니다.배치 새롭고 개인적인 생성자
언급 한 바와 같이/* 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'
입니다 : 여기
template <class T, typename arg0>
inline T* AllocateObject(arg0& a0) { return new (InternalAllocate(sizeof(T))) T(a0); }
내가 할당하려는 클래스입니다 : 여기
는 메모리를 할당하고 새로운 배치를 사용하여 생성자를 호출 내 기능입니다 이 주위에 좋은 방법이 있습니까?
할당자를 친구로 선택하는 옵션이 있습니까? – jogojapan
다른 옵션이없는 경우 예 – KaiserJohaan