El MFC CArray tiene dos parámetros de plantilla (de MSDN):En CArray de MFC, ¿cuáles son los motivos para utilizar un tipo de plantilla predeterminado diferente?
template < class TYPE, class ARG_TYPE = const TYPE& >
class CArray
...
El parámetro predeterminado para ARG_TYPE
es const TYPE&
, y algunas preguntas sobre SO preguntar cuándo usar un tipo diferente de la predeterminada (por ejemplo Should the ARG_TYPE for a CArray be const & or not, o What's the difference between CArray and CArray ?).
Mis preguntas son ahora: ¿Hay casos de uso razonables de CArray donde ARG_TYPE no sea TYPE
o const TYPE&
, p. ¿otra clase? ¿Cuáles son las razones de estos usos?
No fue una respuesta a su pregunta, pero ** NO ** use 'CArray'. Es una clase horrible que copiará sus elementos usando 'memcpy' en lugar de copiar la construcción. Entonces, si lo usa para contener una matriz de objetos que contienen punteros, su aplicación se bloqueará. Use 'std :: vector' en su lugar. – Praetorian
Estoy buscando argumentos para no usar CArray y para convencer a mis colegas de usar std :: vector, y me pregunté sobre esta rareza. CMap es aún más horrible con 4 parámetros de plantilla y una forma complicada de determinar el orden en el mapa ... – vividos