none
std:vector<> et classe abstraite RRS feed

  • Question

  • Bonjour à tous

    Je voudrais utiliser une classe abstraite dans un container std:vector<>.

    Par exemple SegmentBase et les classes dérivées segmentLigne, segmentArc, segmentParabole etc.

    std::vector<segmentBase> lstSeg;
    lstSeg.pushBack(segmentLigne());

    Le problème, c'est qu'il n'y a pas de constructeur(allocator) pour cette classe abstraite.
    Faut - il passer obligatoirement par un pointeur?

    vendredi 22 janvier 2016 13:26

Réponses

  • Vous utilisez le polymorphisme.

    Pour les conteneurs de la STL, dans le cas du polymorphisme, oui, il vous faudra passer par des pointeurs, mais il vaudrait largement mieux utiliser des pointeurs intelligents comme unique_ptr<SegmentBase> que de simples pointeurs nus.


    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse GP79 dimanche 24 janvier 2016 13:22
    vendredi 22 janvier 2016 18:31
    Modérateur