Tengo una jerarquía de clases. La clase base usa algunos parámetros de ajuste que se pueden cargar desde el archivo (y se pueden cargar durante el tiempo de ejecución). Cada clase derivada puede agregar algunos parámetros adicionales. Estoy buscando una manera de asignar una matriz de parámetros del tamaño correcto en el constructor base, de modo que no tenga que desasignar y reasignar en la clase derivada. Me esperaba algo así, pero no está funcionando (parámetros siempre tiene 2 elementos):¿Cómo asignar una matriz en el constructor base con el tamaño basado en la clase derivada?
class Base
{ static int nParms;
virtual int getNParms() { return nParms;}
float *parameters;
public:
Base()
{ parameters= new float[this->getNParms()];
parameters[0] = globalReloadableX;
parameters[1] = globalReloadableY;
}
};
int Base::nParams =2;
class Derived : public Base
{ static int nParms;
virtual int getNParms() { return nParms;}
public:
Derived() : Base()
{ parameters[2] = globalReloadableZ;
}
}
int Derived::nParams =3;
que he visto this question, pero la solución no hace el trabajo bastante para mí. También probé haciendo parámetros una matriz regular en cada clase:
class Base
{ float parameters[2]
...
class Derived : public Base
{ float parameters[3]
...
pero que hace derivados tienen 2 matrices independientes.
¿Alguna idea?
¿Por qué no? ¡Muy obvio! A veces me limito demasiado a los detalles ... Gracias por la explicación de por qué. – AShelly
¡Ningún problema, le sucede a todos! –