Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Konstruktor dla zagnieżdzonej struktury

Ostatnio zmodyfikowano 2015-05-17 20:51
Autor Wiadomość
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:

C/C++
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()'|
P-132415
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.
P-132417
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ć.
P-132420
pekfos
» 2015-05-17 20:32:57
C/C++
Osoba( std::string imie12, std::string imie22, std::string nazwisko2, Data data2 )
    : data( 1, 2, 3 )
{
Powinieneś to znać, skoro bawisz się konstruktorami.
P-132423
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 :(
C/C++
Osoba ktos( "AAA", "", "VVV", data1( 22, 11, 2005 ) );
P-132425
pekfos
» 2015-05-17 20:46:01
Typ się nazywa Data, a nie data1.
P-132427
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?
P-132429
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.
P-132430
« 1 » 2
  Strona 1 z 2 Następna strona