Вот как определяется оператор delete.
void operator delete(void*) throw();
void operator delete[](void*) throw();
'оператор delete' принимает 'void *', поскольку указатель на любой объект может быть преобразован в 'void *'.
Обратите внимание, что пустота является неполным типом, и поэтому нельзя удалять пустоту * т.е.
char *p = new char;
void *pv = p;
delete pv; // not allowed
Сноска 78: Это означает, что объект нельзя удалить с помощьюуказатель типа void *, потому что void не является типом объекта.
В случае, когда playerarray является указателем на массив Players, вы, скорее всего, захотите сделать это по-другому.delete pplayer
не делает то, что вы хотите.