elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  (Consulta/C++11) Es posible inicializar un arreglo de objetos en la misma línea?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta/C++11) Es posible inicializar un arreglo de objetos en la misma línea?  (Leído 3,209 veces)
srWhiteSkull


Desconectado Desconectado

Mensajes: 443



Ver Perfil WWW
Re: (Consulta/C++11) Es posible inicializar un arreglo de objetos en la misma línea?
« Respuesta #10 en: 15 Octubre 2017, 02:29 am »

A ver, ahi eso del initializer_list no lo estas usando, ya que todo lo que esta dentro de las llaves pasa por el primer constructor, y para que pasara al otro constructor el valor en vez de un entero tendria que ser algo contenido entre llaves... pero olvidate de esto. Tu codigo tal como lo tienes funciona bien, instancias el Objeto pero no correctamente, ya que de esa forma estas alojando los objetos en la pila de cabecera, un pequeño espacio reservado definido en el compilador para guardar variables estaticas. Lo recomendable es usar el new en un vector o hacerlo como te conté.

Te muestro un codigo para que lo comprendas, mira hacia donde apunta cada elemento:

Código
  1. #include <iostream>
  2. //#include <initializer_list>
  3.  
  4. class Objeto {
  5. private:
  6.    int u;
  7.  
  8. public:
  9.    Objeto(int n);
  10.    //Objeto(const std::initializer_list<char> &n);
  11.    void Imprimir();
  12. };
  13.  
  14. int main() {
  15.    Objeto cadenas[2] = {5, 9}; // estatico, en la pila
  16.    Objeto *instanciao = new Objeto(666); // dinamico
  17.    int y=8; // estatico, en la pila
  18.  
  19.    std::cout << &cadenas[0] << " " << &cadenas[1] << " " << &y << " " << instanciao << std::endl;
  20.  
  21.    for(int i = 0; i < 2; i++)
  22.        cadenas[i].Imprimir();
  23.  
  24.    return 0;
  25. }
  26.  
  27. Objeto::Objeto(int n) {
  28.    std::cout << n << std::endl;
  29.  
  30.    u = n;
  31. }
  32.  
  33. /*Objeto::Objeto(const std::initializer_list<char> &n) {
  34.     std::initializer_list<char>::iterator it;
  35.  
  36.     std::cout << "Initializer (size = " << n.size() << "): ";
  37.     for(it = n.begin(); it != n.end(); it++)
  38.         std::cout << *it << ' ';
  39.     std::cout << std::endl;
  40.  
  41.  
  42.     u = 2;
  43. }*/
  44.  
  45. void Objeto::Imprimir() {
  46.    std::cout << u << std::endl;
  47. }

Como habras observado el puntero instanciao apunta a un segmento diferente del resto  ;)


« Última modificación: 15 Octubre 2017, 02:39 am por srWhiteSkull » En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta/C++11) Es posible inicializar un arreglo de objetos en la misma línea?
« Respuesta #11 en: 15 Octubre 2017, 09:24 am »

Si que se te está usando. Se usa cuando el número de elementos del vector es mayor que el número de elementos del initializer_list (aclarado con ejemplos y demostrado para mi compilador).


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arreglo Dinamico con Objetos :S
Java
Xephiro 9 12,753 Último mensaje 6 Marzo 2009, 20:20 pm
por juancho77
Declarar e inicializar matriz de objetos
Java
alzehimer_cerebral 1 4,615 Último mensaje 17 Noviembre 2009, 19:07 pm
por Leyer
Crear un arreglo de objetos con el constructor
Programación C/C++
ThronerAXE 1 1,053 Último mensaje 16 Febrero 2014, 18:38 pm
por eferion
Arreglo de objetos
Java
Aida 7 3,190 Último mensaje 16 Marzo 2014, 23:45 pm
por Mitsu
(Consulta) Inicializar arreglo de estructura en C
Programación C/C++
class_OpenGL 2 954 Último mensaje 27 Octubre 2016, 14:37 pm
por class_OpenGL
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines