Я не понимаю, почему я получаю ошибки компилятора при попытке скомпилировать это:
void* MemoryManagedObject::operator new(size_t size, bool UseMemPool)
{
Engine* engine = Engine::GetEngine();
void* alloc;
alloc = engine->GetMemoryManager()->Allocate(size, UseMemPool);
if (alloc && UseMemPool)
mAllocatedWithMemPool = true;
return alloc;
}
В нем говорится «недопустимое использование члена MemoryManagedObject :: mAllocatedWithMemPool в статической функции-члене».
По сути, у меня есть флаг, который указывает, использовал ли я свой пул памяти или просто malloc () при выделении экземпляра класса, и я хочу установить его, когда переопределяю 'new'.
Я предполагаю, что 'новый метод должен вернуть, прежде чем вы можете использовать экземпляр класса?Есть ли способ обойти это?
РЕДАКТИРОВАТЬ: Просто любопытно, ss этот код также является правильным решением?
void* MemoryManagedObject::operator new(size_t size, bool UseMemPool)
{
Engine* engine = Engine::GetEngine();
MemoryManagedObject* alloc;
alloc = (MemoryManagedObject*)engine->GetMemoryManager()->Allocate(size, UseMemPool);
if (alloc && UseMemPool)
alloc->mAllocatedWithMemPool = true;
return alloc;
}