MFC CArray ma dwa parametry szablonu (z MSDN):W przypadku MFC CArray, jakie są powody używania innego domyślnego typu szablonu?
template < class TYPE, class ARG_TYPE = const TYPE& >
class CArray
...
Parametr domyślną ARG_TYPE
jest const TYPE&
i kilka pytań na SO zapytać kiedy należy użyć innego typu, niż domyślny (np Should the ARG_TYPE for a CArray be const & or not lub What's the difference between CArray and CArray ?).
Moje pytania są następujące: Czy istnieją uzasadnione przypadki użycia CArray, gdzie ARG_TYPE nie jest TYPE
lub const TYPE&
, np. kolejna klasa? Jakie są powody tych zastosowań?
Brak odpowiedzi na twoje pytanie, ale ** NIE używaj 'CArray'. To okropna klasa, która skopiuje swoje elementy za pomocą 'memcpy' zamiast konstrukcji kopii. Więc jeśli użyjesz go do przechowywania tablic obiektów zawierających wskaźniki, które spowoduje awarię twojej aplikacji. Zamiast tego użyj 'std :: vector'. – Praetorian
Poszukuję argumentów, aby nie używać CArray i przekonać kolegów do używania std :: vector, i zastanawiałem się nad tym dziwactwem. CMap jest jeszcze bardziej przerażający dzięki 4 parametrom szablonu i skomplikowanemu sposobowi określania porządku sortowania na mapie ... – vividos