Ответ 1
Student** db = new Student*[5];
// To allocate it statically:
Student* db[5];
Я пытаюсь создать массив указателей. Эти указатели указывают на объект Student, который я создал. Как мне это сделать? Теперь у меня есть:
Student * db = new Student[5];
Но каждый элемент в этом массиве является объектом-учеником, а не указателем на объект-ученик. Спасибо.
Student** db = new Student*[5];
// To allocate it statically:
Student* db[5];
#include <vector>
std::vector <Student *> db(5);
// in use
db[2] = & someStudent;
Преимущество этого в том, что вам не нужно беспокоиться об удалении выделенного хранилища - вектор делает это за вас.
Массив указателей записывается как указатель указателей:
Student **db = new Student*[5];
Теперь проблема заключается в том, что у вас есть только зарезервированная память для пяти указателей. Таким образом, вы должны проходить через них, чтобы сами создавать объекты Student.
В С++ для большинства случаев жизнь проще с std::vector.
std::vector<Student*> db;
Теперь вы можете использовать push_back() для добавления к нему новых указателей и [] для его индексации. Это чище использовать, чем вещь **.