TODOPIC

Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: dragondgold en 23 de Febrero de 2012, 18:36:40

Título: Llamada a constructor en la creación de array con 'new'
Publicado por: dragondgold 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 !!
Título: Re: Llamada a constructor en la creación de array con 'new'
Publicado por: MerLiNz en 23 de Febrero de 2012, 19:02:28
no seria Datos *PTRC[] = new ?
Título: Re: Llamada a constructor en la creación de array con 'new'
Publicado por: dragondgold en 23 de Febrero de 2012, 20:00:46
No tampoco funciona  :?.
Título: Re: Llamada a constructor en la creación de array con 'new'
Publicado por: MerLiNz en 23 de Febrero de 2012, 21:40:49
y

Datos *ptrc[] = new {Datos("nombre","apellido"),Datos("nombre1,"apellido1")};
Título: Re: Llamada a constructor en la creación de array con 'new'
Publicado por: dragondgold 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")};
Título: Re: Llamada a constructor en la creación de array con 'new'
Publicado por: MerLiNz 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); ...
Título: Re: Llamada a constructor en la creación de array con 'new'
Publicado por: dragondgold 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 !!
Título: Re: Llamada a constructor en la creación de array con 'new'
Publicado por: tannke 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");