Konstruktory wieloargumentowe

0

Cześć,
Chciał bym napisać konstruktor do mojej klasy, który w jednej linijce "zawiera" 5 innych konstruktorów (mam tu na myśli, że zawiera konstruktor jedno argumentowy z samym imieniem, dwu argumentowy z imieniem i nazwiskiem itd.) i jego wywołania mogą wyglądać różnie np tak

vector<pair<string, float>> ocenki;
cStudent s("Adam", "Nowak", 1999, "m", ocenki);
cStudent s("Adam", "Nowak", 1999, "m");
cStudent s("Adam", "Nowak", 1999);
cStudent s("Adam", "Nowak");

To jest moja klasa...

class cStudent { 
	//atrubuty
	string imie;
	string nazwisko;
	int rok_urodzenia;
	string plec;
	vector<pair<string, float>> oceny;
}

Na razie udało mi się zrobić dwa rodzaje konstruktorów taki...

cStudent::cStudent() {
	imie = "Jan";
	nazwisko = "Kowalski";
	rok_urodzenia = 2000;
	plec = "m";
	oceny = {};
}

oraz taki...

cStudent::cStudent(string _imie, string _nazwisko, int _rok_urodzenia, string _plec, vector<pair<string, float>> _oceny) {
	nazwisko = _nazwisko;
	imie = _imie;
	rok_urodzenia = _rok_urodzenia;
	plec = _plec;
	oceny = _oceny;
}

ten o którym mówię (ten trzeci) powinien chyba wyglądać jakoś tak

cStudent() :imie("Jan"), nazwisko("Kowalski"), rok_urodzenia(2000), plec("m"), oceny({}) {};

taki oto konstruktor(albo podobny bo w tym jest chyba błąd), powinien działać również jako konstruktor domyślny o ile się nie mylę.

Chciałem również zapytać jak będzie wyglądać deklaracja paru ocen w wektorze par stringów i floatów w konstruktorze na wypadek gdybym jednak nie chciał mieć pustego wektora i już na samym starcie "wlepić" jakiemuś studentowi np 5.0 z matematyki

2
cStudent(const string& im, const string& nazw, int ru = 0, const string& plec = "nn", const vector<pair<string, float>>& oc = {})
		:imie{ im }, nazwisko{ nazw }, rok_urodzenia{ ru }, plec{ plec }, oceny{ oc } 
{}
0

Dziękuję za pomoc, własnie o to chodziło :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1