Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/04/2016, 06:37
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Inicializar array de cadenas en constructor

Un miembro static no debe ser inicializado desde el constructor sino que debe tener su propia "implementación" ya que entonces se estaría incicializando cada vez que se construye un nuevo objeto.

La incialización de miembros estáticos se hace tal que:

Código C++:
Ver original
  1. class POO
  2. {
  3.   static int var;
  4. };
  5.  
  6. int POO::var = X;

Pudiendo estar la inicialización tanto en la cabecera como en el fichero de implementación.

En tu caso además los arreglos son const, luego no vas a poder modificar su valor una vez se hayan inicializado. Dado que los elemento static tienen su propia inicialización y que los has declarado const, no es posible modificar su valor en el constructor.

El siguiente código te debería funcionar:

Código C++:
Ver original
  1. const AnsiString TForm1::HintsMessages={
  2.   "Este mensaje activa la ventana.",
  3.   "Este mensaje pone el foco en la ventana.",
  4.   // ...
  5. };
  6.  
  7. __fastcall TForm1::TForm1(TComponent* Owner)
  8.    : TForm(Owner)
  9. {
  10.   //...
  11. }

También puedes plantearte usar std::array. Se comporta como un std::vector salvo en el detalle de que el tamaño es fijo, no puedes añadir nuevos elementos ni por supuesto eliminarlos... es el equivalente a lo que estás haciendo ahora mismo. Esta opción puede ser especialmente atractiva si necesitas usar iteradores.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.