Рассмотрим следующий класс:Попытка создать список объектов, оператор = дает мне неприятности
class Subject
{
private:
char* name; // I must use char pointers, it's for school.
int grade;
public:
Subject() {
name = NULL;
grade = 0;
}
Subject(char *n, int g) {
name = new char[strlen(n)];
strcpy(name,n);
grade = g;
}
~Subject() {
delete name;
}
void operator=(const Subject &obj) {
strcpy(name, obj.name);
grade = obj.grade;
}
}
Так что это довольно простая структура данных со своими специальными функциями. Я новичок , чтобы перегрузить операторы, поэтому он, вероятно, неправильно реализован. Теперь я пытаюсь сделать простой массив этих объектов. Рассмотрим мою основную функцию:
Subject *collection = new Subject[3];
char tmp[100];
int grade;
for(int i = 0 ; i < 3; i ++){
cin >> tmp;
cin >> grade;
collection[i] = new Subject(tmp,grade);
}
Это возвращает ошибку, говорящую ни одного совпадения для оператора = в ..etc. Поэтому я понимаю, что они не знают, что делать, когда видят «=», поэтому мне нужно определить его. Как мне это сделать. Опять же, дело в том, чтобы сделать простой список объектов Subject (я не могу использовать вектор, то для школы)
'new Subject' возвращает указатель на динамически выделенный' Subject'. 'new Subject [3]' - массив из 3 объектов Subject (* not * массив из 3 'Subject *'). – crashmstr
Является ли ваш учитель убежденным, что он обучает С ++, между прочим? – Chiel
«Это для школы» - это плохая причина, чтобы не изучать современный C++. – crashmstr