Konstruktor dla zagnieżdzonej struktury
Ostatnio zmodyfikowano 2015-05-17 20:51
AndreaLishley Temat założony przez niniejszego użytkownika |
Konstruktor dla zagnieżdzonej struktury » 2015-05-17 20:11:32 Witam. Mam problem z konstruktorem w strukturze Osoba. W jaki sposób mogę rozwiązać ten problem? Oto kod: struct Data { int dzien; int miesiac; int rok; Data( int d, int m, int r ) { dzien = d; miesiac = m; rok = r; } };
struct Osoba { std::string imie1; std::string imie2; std::string nazwisko1; Data data; Osoba( std::string imie12, std::string imie22, std::string nazwisko2, Data data2 ) { imie1 = imie12; imie2 = imie22; nazwisko1 = nazwisko2; data = data2; } };
A oto błąd jaki kompilator wywala: In constructor 'Osoba::Osoba(std::string, std::string, std::string, Data)': no matching function for call to 'Data::Data()'| |
|
pekfos |
» 2015-05-17 20:13:28 Data nie ma konstruktora domyślnego, więc musisz wywołać taki, jaki ma. W liście inicjalizacyjnej. |
|
AndreaLishley Temat założony przez niniejszego użytkownika |
» 2015-05-17 20:21:37 Czyli w jaki sposób mam to zrobić? Bo nie mam bladego pojęcia jak to zrobić. |
|
pekfos |
» 2015-05-17 20:32:57 Osoba( std::string imie12, std::string imie22, std::string nazwisko2, Data data2 ) : data( 1, 2, 3 ) {
Powinieneś to znać, skoro bawisz się konstruktorami. |
|
AndreaLishley Temat założony przez niniejszego użytkownika |
» 2015-05-17 20:39:43 Dopiero zaczynam z nimi zabawę i nie wszystko jest tak oczywiste jak może się wydawać. Dziękuję, działa. Jeszcze jedno pytanko, jak stworzyć później nowy obiekt klasy Osoba? Tak nie działa :( Osoba ktos( "AAA", "", "VVV", data1( 22, 11, 2005 ) );
|
|
pekfos |
» 2015-05-17 20:46:01 Typ się nazywa Data, a nie data1. |
|
AndreaLishley Temat założony przez niniejszego użytkownika |
» 2015-05-17 20:48:53 Czyli sam typ bez nazwy zmiennej. Strasznie to pokręcone. A gdybym dopisał konstruktor domyślny w Data, to jak napisać konstruktor w strukturze Osoba? Zamiast cyferek w nawiasie zostawić sam pusty nawias? |
|
pekfos |
» 2015-05-17 20:50:12 Wtedy nie trzeba robić niczego. Zamiast cyferek w nawiasie |
Nie wiem czy się domyśliłeś, ale tam mają być faktyczne wartości, jakie mają trafić do pola klasy, a nie przykładowe cyferki. |
|
« 1 » 2 |