Autor Tema: Llamada a constructor en la creación de array con 'new'  (Leído 3413 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Llamada a constructor en la creación de array con 'new'
« en: 23 de Febrero de 2012, 18:36:40 »
Buenas trades, estoy practicando un poco de C++ con los operadores 'new' y 'delete'. Ya cree clases con estos operadores de la siguiente manera:

Código: [Seleccionar]
Datos *PtrA = new Datos ("Juan Jose", "de las Nieves");
Datos *PtrB = new Datos ("Fulanito", "de Torti");

Hasta aqui todo bien y pude usar las funciones de la clase Datos. Pero ahora queria hacer un array de la clase datos con el operador new de esta manera:

Código: [Seleccionar]
Datos *PtrC = new Datos[20] = {"Nombre1","Apellido1","Nombre2","Apellido2",...};
Pero provocoa un error de compilacion, tambien intente separarlos en parentesis:

Código: [Seleccionar]
Datos *PtrC = new Datos[20] = {("Nombre1","Apellido1"),("Nombre2","Apellido2"),...};
Y me dice que C++ no soporta la asignacion de los datos en la declaracion con el operador new. Pero si no los declaro me sucede lo mismo.

Código: [Seleccionar]
Datos *PtrC = new Datos[20];
Tambien provoca un error de compilacion. Como hago entonces declarar un array de tipo Dato (que es la clase) y asignarle los datos al constructor ?

Saludos !!
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Llamada a constructor en la creación de array con 'new'
« Respuesta #1 en: 23 de Febrero de 2012, 19:02:28 »
no seria Datos *PTRC[] = new ?

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: Llamada a constructor en la creación de array con 'new'
« Respuesta #2 en: 23 de Febrero de 2012, 20:00:46 »
No tampoco funciona  :?.
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Llamada a constructor en la creación de array con 'new'
« Respuesta #3 en: 23 de Febrero de 2012, 21:40:49 »
y

Datos *ptrc[] = new {Datos("nombre","apellido"),Datos("nombre1,"apellido1")};

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: Llamada a constructor en la creación de array con 'new'
« Respuesta #4 en: 23 de Febrero de 2012, 22:09:57 »
No  :? Me dice que se espera un calificador de tipo despues de new (como deberia ser) entonces probe agregandolo pero tampoco :?

Ambos dan error:

Código: [Seleccionar]
Datos *PtrC[] = new {Datos("nombre","apellido"),Datos("nombre1","apellido1")};
Código: [Seleccionar]
Datos *PtrC[] = new Datos {Datos("nombre","apellido"),Datos("nombre1","apellido1")};
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Llamada a constructor en la creación de array con 'new'
« Respuesta #5 en: 24 de Febrero de 2012, 00:39:21 »
en ejemplos he visto cosas como estas:

MyClass obs[4] = { MyClass(-1), MyClass (-2),
                   MyClass (-3), MyClass (-4) };
 

quizas sea que no se puede declarar usando el metodo de punteros con new ya otra cosa no se me ocurre a no ser que pongas ptrc[0]=new datos(x,x); ptrc[1]=new datos(y,y); ...

Desconectado dragondgold

  • PIC16
  • ***
  • Mensajes: 103
    • Tmax & Gwolf Microcontrollers
Re: Llamada a constructor en la creación de array con 'new'
« Respuesta #6 en: 24 de Febrero de 2012, 10:19:35 »
MerLiNz efectivamente asi se crean pero necesito asignarlo dinamicamente a travez de new alguna forma debe existir estoy seguro seguire investigando haber que encuentro y si descubro como les comento.

Saludos !!
La conclusión final es que sabemos muy poco y sin embargo, es asombroso lo mucho que conocemos. Y más asombroso todavía es que un conocimiento tan pequeño nos pueda dar tanto poder

Desconectado tannke

  • PIC16
  • ***
  • Mensajes: 176
Re: Llamada a constructor en la creación de array con 'new'
« Respuesta #7 en: 26 de Febrero de 2012, 16:25:42 »
y así?

Datos PtrC[] = { new Datos("nombre","apellido"), new Datos("nombre1","apellido1")};

o

Datos PtrC[] = new Datos[2];
PtrC[0] = new Datos("nombre","apellido");
PtrC[1] = new Datos("nombre1","apellido1");
« Última modificación: 26 de Febrero de 2012, 16:31:56 por tannke »