I have class Member which have in private name of student and title of competition. In inherit class Laureate is added place, which Member achived during competition. The problems are
- how create constructor in Laureate, which would have Member object as parameter?
- how can I sort objects by amount of diploms? (Maybe print a list of them)
-
how can I sort objects by each place?
(For example
1 place - 5 laureates 2 plase - 7 laureates 3 place - 10 laureates)
I already tried to fill an array of objects of the type of Member, but then it does not work out to pass those values to the constructor of the derived class. Moreover, one and the same participant can take part in several competitions.
#include <iostream>
using namespace std;
#define K 4
#define N 50
class Member
{
private:
char *name;
char *title;
//protected:
public:
Member() {
// Member* array = nullptr;
//array = new Member[K];
}
Member(Member &z) {
name = z.name;
title = z.title;
}
void SetN(char *n) {
name = new char[N];
cout << "input member ";
cin >> name;
this->name = n;
}
void SetT(char *t) {
title = new char[N];
cout << "Title ";
cin >> title;
this->title = t;
}
int GetN() {
return *name;
}
int GetT() {
return *title;
}
/*void input(Member &z) {
name = new char[N];
title = new char[N];
this->name = z.name;
this->title = z.title;
}*/
/*friend istream &operator>>(istream &in, Member &m) {
// cout << "Name ";
in >> m.name;
// cout << "Title";
in >> m.title;
return in;
}*/
/*Member & Member :: operator = (const Member &t) {
name = t.name;
title = t.title;
return *this;
}*/
};
class Laureate : public Member // похідний клас дипломант
{
private:
int place;
public:
Laureate() : Member()
{
place;
}
Laureate(Member m, int pl) {
m.GetN();
m.GetT();
place = pl;
}
int GetP() {
return place;
}
Laureate & Laureate :: operator = (const Member &t)
{
this->Member:: operator=(t); // Виклик батьківської операції
cout << "Working in Laureate" << endl;
return *this;
}
friend ostream &operator<<(ostream &on, Laureate &l ){
cout << l.GetT() << ", " << l.GetN() << ", " << l.GetP() << "місце" << endl;
return on;
}
};
int main()
{
system("chcp 1251");
system("cls");
int i = 0;
char nam[N];
char tit[N];
Member* array = nullptr;
array = new Member[K];
for (int i = 0; i < K; i++)
{
array[i].SetN(nam);
array[i].SetT(tit);
}
//Laureate * mas[N] = { new Laureate(array[0], 2),new Laureate(array[1], 3),new Laureate(array[2], 1),new Laureate(array[3], 2), };
//cout << mas[1];
//delete[] mas;
delete[] array;
system("pause");
return 0;
}
As a result, it would be great to have 2 lists. Can you help me with this?
Aucun commentaire:
Enregistrer un commentaire