Abteilung Klasse `# include # include #pragma once, wie zu benutzen >> Überlastung << zum Array von Zeigern, die Abteilungen consitst ojbect (Abteilungen **)
using namespace std;
class Department
{
// overload input output streams
friend ostream &operator<<(ostream &, const Department &);
friend istream &operator>>(istream &, Department &);
private:
string name;
long id;
public:
static int departmentsCounter; // count num of elements
Department();
// set get block
void setId(long);
void setName(string);
string getName() { return name; }
long getId() { return id; }
// overload block
Department &operator=(const Department &); // instead copy constructor
bool operator>(const Department &) const; // check if count of students greater than count of students in another department
void operator+=(Department &); // add new course to course list of the student
void operator=(Department &); // remove course from course list of the student
~Department();
};`
Abteilung cpp
#include "Department.h"
int Department::departmentsCounter = 0;
Department::Department()
{
name;
id = 0;
}
void Department::setId(long _id)
{
id = _id;
}
void Department::setName(string _name)
{
name = _name;
}
// overload out put (without cource list)
ostream &operator<<(ostream &output, const Department &s)
{
output << "Department: \nName " << s.name << "\nid " << s.id << "\n-------------------------------------------------\n";
return output;
}
// overload input without check of right input data
istream &operator>>(istream &input, Department &s) {
cout << "\nEnter name: ";
input >> s.name;
cout << "\nEnter id: ";
input >> s.id;
return input;
}
Department &Department::operator=(const Department &s) {
Department temp;
name = s.name;
id = s.id;
return temp;
}
Department::~Department()
{}
in Hauptfunktion verwenden Sie diese cout << *(departments_list)[size];
aber es funktioniert nicht Speicherfehler sow ich verstehe nicht, wie es zu beheben ist. Vielleicht sollte ich Speicher im Konstruktor zuweisen, aber ich weiß nicht die Länge der Zeichenfolge, die ich wie einen Namen verwende. Actualy meine Frage ist, wie die Betreiber Überlastung ** Abteilungen zu verwenden, weil ich verstehe nicht, wie es von dieser Seite arbeitet
** Abteilung departments_list = 0; – user3752290
Ihr Fehler liegt irgendwo im Code, den Sie nicht veröffentlicht haben. Der wahrscheinlichste Täter ist, dass Sie einen ungültigen Zeiger verwenden. (Es gibt ein paar andere Probleme, zum Beispiel, dass Ihr Extraktionsoperator interaktiv ist und dass die Zuweisung nicht "* this" zurückgibt, aber nichts, was zu Laufzeitfehlern führen sollte.) – molbdnilo
"aber es funktioniert nicht Speicherfehler sow Ich verstehe nicht, wie man es repariert "????? Wow, ein großes Lob für die Mühe, diese Frage zu stellen. Ich bin mir sicher, dass es viele Benutzer geben wird, die sich darauf freuen, die gleiche Menge an Aufwand zu leisten. –