Я немного ржавый на C++, не использовал его какое-то время. Поэтому мне нужно создать структуру данных, которая может содержать объекты и выполнять с ними операции. Так же, как список массивов. Теперь я сначала создать и инициализировать динамический массив моего типа класса:Создание списка объектов в C++
Student* array_of_students = new Student[SIZE];
Затем я создаю объект Student, скажем так:
Student student(param1, param2, etc..);
Я также обеспечить деструктор, так как я использую много char (я знаю, что я должен использовать строку, но это только для цели обучения.), где я удаляю количество указателей, содержащих некоторые имена.
~Student(){ /* delete filed1; etc */ }
Ну, когда я пытаюсь перечислить эти имена, я получаю некоторые случайные значения, вероятно, потому, что указатели будут удалены, а это означает деструктор вызывается, и даже если у меня есть ссылка на конкретный объект с array_of_students
, эти поля разрушен, и мне нечего отображать. Вероятно, это происходит потому, что экземпляр Student
выходит из области действия и вызывает его деструктор.
Так в чем же тут решение? Как я могу держать их, пока array_of_students
жив?
Я считаю, что мне нужно определить какой-то конструктор копирования, который скопирует этот экземпляр оригинала на новую копию , на которую будет ссылаться array_of_students
. Ваши мысли были бы полезны.
EDIT:
class Student{
private :
char *_name;
public :
Student(){}
Student(char* name){
_name = new char[strlen(name)];
strcpy(_name, name); }
char* getNaziv(){return _name;}
~Student(){delete _name;}
};
int main()
{
Student* array_of_students = new Student[5];
char input[100];
for(int i = 0; i < 5; i++){
cout << "Input name : "<<endl;
cin >> input;
Student tmp(input);
array_of_students[i] = tmp;
}
for(int i = 0; i < 5; i++){
cout <<"Name is : "<< array_of_students[i].getNaziv()<< endl;
}
}
C++ эквивалентно список массива (в Java) является [ 'станд :: VECTOR'] (http://en.cppreference.com/w/cpp/контейнер/вектор). Пожалуйста, воздержитесь от использования необработанных массивов :) – 865719
Пожалуйста, предоставьте SSCCE. – Shoe
Как я уже сказал, мне не разрешено использовать векторы. Только сырые. – nhrnjic6