Estoy tratando de crear una matriz de punteros. Estos punteros se apuntan a un Estudiante objeto que he creado. ¿Cómo lo hago?
Lo que tengo ahora es:

Student * db = new Student[5];

Pero cada elemento de la matriz es el objeto de estudiante, no es un puntero al objeto de estudiante.
Gracias.

InformationsquelleAutor chustar | 2009-03-06

4 Comentarios

  1. 78
    Student** db = new Student*[5];
    //To allocate it statically:
    Student* db[5];
    • ¿Cómo se Student* db[5] la misma cosa como Student** db = new Student*[5]? ¿Cuál es el beneficio de la utilización de uno sobre el otro?
    • Cuando usted desea devolver un array de una función de la matriz debe ser asignado en el montón. Si s asignado en la pila es destruido inmediatamente el ámbito de esa función termina.
  2. 17
    #include <vector>
    std::vector <Student *> db(5);
    //in use
    db[2] = & someStudent;

    La ventaja de esto es que usted no tiene que preocuparse acerca de la eliminación, el almacenamiento asignado – el vector hace por usted.

    • Mientras que el vector es la forma sugerida para tener una lista de cosas que, estrictamente hablando, no es un array.
    • Puede ser utilizado en todos los sentidos que una matriz puede ser utilizado. Si grazna como un pato, es un pato.
    • El vector se no eliminar el almacenamiento asignado automáticamente, se va a liberar el espacio de almacenamiento para el punteros, pero no para la memoria que señala el puntero. Usar el boost::ptr_vector para que.
    • Has leído mi código de ejemplo? Si el almacenamiento señalado por el elemento [2] ser eliminado?
  3. 11

    Una matriz de punteros es escrito como un puntero de punteros:

    Student **db = new Student*[5];

    Ahora el problema es, que sólo tiene memoria reservada para los cinco punteros. Así que usted tiene que iterar a través de ellos para crear el Estudiante propios objetos.

    En C++, para la mayoría de los casos de uso de la vida es más fácil con un std::vector.

    std::vector<Student*> db;

    Ahora usted puede utilizar push_back() para añadir nuevos punteros y [] para su indexación. Es un limpiador para el uso de la ** cosa.

  4. 0
        void main()
        {
        int *arr;
        int size;
        cout<<"Enter the size of the integer array:";
        cin>>size;
        cout<<"Creating an array of size<<size<<"\n";
            arr=new int[size];
        cout<<"Dynamic allocation of memory for memory for array arr is successful";
        delete arr;
        getch();enter code here
    }
    • Esto no agrega nada

Dejar respuesta

Please enter your comment!
Please enter your name here