3 votes

Obtenir le type d'objet alloué dans l'opérateur new

Existe-t-il un moyen d'obtenir le type d'objet alloué dans l'opérateur new ?

Ce que je veux dire, c'est que

void* BaseClass::operator new(size_t size)
{
    void* result = ::operator new(size);

    //Get type of object that's being allocated

    return result;
}

2voto

Mark B Points 60200

Il n'existe aucun mécanisme permettant d'obtenir ces données. operator new alloue simplement de la mémoire brute en fonction d'une taille donnée, et seule la fonction new connaît le type pour construire l'objet dans la mémoire allouée.

1voto

user93353 Points 6910

Non, vous ne pouvez pas faire cela. L'opérateur new est implicitement une fonction statique, même si vous ne l'avez pas définie comme telle. Comme il s'agit d'une fonction statique, vous ne pouvez pas faire des choses comme utiliser le typeid sur la fonction this pour obtenir le type de l'objet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X