• # questions sur les constructeurs et les vecteurs

    Posté par (site web personnel) . En réponse à la dépêche C++ se court-circuite le constructeur de copie. Évalué à 3.

    Bonjour,

    J’en profite parce que je suis tombé deux trois fois sur des soucis bizarres en ajoutant l’utilisation d’objets et de vecteurs de ceux-ci dans le code de Lugaru (dépêche en cours de rédaction).
    En gros ya des classes d’objet mal foutues et donc pas copiables, genre parce que ça alloue des trucs dans le constructeur et les libère dans le destructeurs, et copie = double destruction.
    En faisant un vecteur de ça et un push_back(Object(args)), j’obtiens un crash car ça crée un objet, le copie puis détruit l’original.
    Je me dis qu’il suffit de remplacer par emplace_back(args), mais non, crash quand même, emplace_back appelle un destructeur je comprends pas pourquoi.
    La solution que j’ai trouvé est de faire un vecteur de unique_ptr à la place.

    En gros mes questions :
    - Comment fonction emplace_back, pourquoi il appelle le destructeur
    - Comment expliciter qu’une classe n’est pas copiable ?
    - Peut-on faire des vecteurs de classe non-copiable ?

    Note : le code en question est en c++11 pour l’instant.