programacion - Inicializar matriz de miembros en la lista de inicialización del constructor(antes de C++ 11)
vectores en c (1)
Es posible que desee echar un vistazo a esta pregunta relacionada en StackOverflow: el uso de funciones estáticas para inicializar sus matrices miembros en la lista de inicialización puede lograr lo que está buscando:
class MyClass
{
typedef std::array< int, 2 > t_myA;
static t_myA fillFunction(){ static t_myA const ret = {1,2}; return ret; };
t_myA myArray;
public MyClass();
}
MyClass::MyClass()
: myArray( fillFunction() )
{
}
Hasta donde sé, antes de C ++ 11, la única forma de inicializar una matriz de miembros en una lista de inicialización de constructores era hacer, por ejemplo, lo siguiente:
MyClass::MyClass(int arg) : member(arg), memberArray() {
// anything else that needs to be done in the c''tor
}
Sin embargo, he tenido varias personas que me dicen que fruncen el ceño con respecto a este método, y que posiblemente sería más seguro / más legible inicializarlo en cero en un bucle for
en el cuerpo del constructor.
Todavía no tengo disponible la compatibilidad con C ++ 11, por lo que no puedo usar una lista de inicializadores, etc. ¿Hay alguna guía de la que alguien haya oído que desalentar las matrices de inicialización de miembros en la lista de inicializadores del constructor?
Además, las pruebas indican que no, pero no debería haber ningún problema al usar esta sintaxis para una matriz multidimensional, ¿correcto? (Por ejemplo, esto no forma parte del estándar que algunos compiladores arruinan por alguna razón ...)
No me refiero a que esta sea una pregunta subjetiva. Simplemente estoy interesado en saber si hay una buena razón para usar / no usar la sintaxis anterior.
Muchas gracias por cualquier ayuda.