Konstruktor z initializer list

0

Witam

Mam klasę Song, a w niej dwa prywatne stringi - jeden dla autora i jeden dla tytułu.

Teraz mam stworzyć klasę Disc, która zawiera tablicę tych piosenek z konstruktorem wykorzystującym initializer_list.

Mam z tym problem, moja klasa ma potem tworzyć obiekty w taki sposób:

Disc record = {{"Popek", "Albański raj"},
{"Bonus RPK", "Nabuzowany dzieciak"}};

Albo 3-4 naraz.

class Disc {
	Song* array;
	size_t size;
public:

	Disc() {
		cout << "Konstruktor bezparametrowy" << endl;
	}

	LDisc(initializer_list<Song> list) : size{ list.size() }, array{new Song[list.size()]} {
		cout << "Konstruktor z lista inicjalizacyjna" << endl;
		size_t i = 0;    //
		// DALEJ NIE WIEM
	}

JAK TO DOKOŃCZYĆ?

1

Jakbyś użył jak człowiek biały std::vector, to pewnie byłoby łatwiej, bo ów posiada konstruktor, który przyjmuje std::initializer_list.
I jeszcze jedno - LDisc(initializer_list<Song> list) - dlaczego LDisc?

0

forma naiwna:

for (size_t i=0; i<size; i++)
	array[i] = list.begin()[i];
0
Azarien napisał(a):

forma naiwna:
...

Nie. Nie tak.
Tak:

class Disc {
    std::vector<Song> array;

public:
    Disc() {
        cout << "Konstruktor bezparametrowy" << endl;
    }
 
    Disc(initializer_list<Song> list) : array(list) { }
};

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