• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak poprawnie pisac konstruktory

0 głosów
380 wizyt
pytanie zadane 17 września 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)

Witam zaczalem stosowac w praktyce konstruktory napisalem pierwsyz kod z ich uzyciem lecz wyskakuje mi taki blad

error: return type specification for constructor invalid. 

Kod :

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class Uczen;
class Nauczyciel;

class Uczen
{
    private:
    int index;
    string imie;
    string nazwisko;
    string haslo;
    string mail;
    int lata;
    string urodzenie_miesiac; int urodzenie_rok, urodzenie_dzien;
    string bufor;

    public:

        void Uczen(int i=2137, string im="Marian",string na="Kowalski", string ha="haslo", string ma="mail@mail", int la=2137, string urom="Kwiecien", int uror=1488, int urod=20)
        {
            i=index;
            im=imie;
            na=nazwisko;
            ha=haslo;
            ma=mail;
            la=lata;
            urom=urodzenie_miesiac;
            uror=urodzenie_rok;
            urod=urodzenie_dzien;
        }
        ~Uczen()
        {
            cout<<"Skonczylo sie smieszkowanie"<<endl;

        }

    void wczytaj()
    {
     cout<<"Podaj imie i Nazwisko : ";cin>>imie>>nazwisko;
     cout<<"Podaj swoje haslo : ";cin>>haslo; cout<<"Podaj haslo ponownie : "; cin>>bufor; if(bufor!=haslo) cout<<"Hasla sie nie zgadzaja !"<<endl; bufor.clear();
     cout<<"Podaj swoj e-mail : ";cin>>mail;
     cout<<"Podaj swoja date urodzenia (Dzien): ";cin>>urodzenie_dzien;
     cout<<"Podaj swoja date urodzenia (Miesiac): ";cin>>urodzenie_miesiac;
     cout<<"Podaj swoja date urodzenia (Rok): ";cin>>urodzenie_rok;
     lata=2015-urodzenie_rok;

    }
    void zapisz();
    void wyswietl();



};

int main()
{
  Uczen uu;
  //uu.wczytaj();


return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 17 września 2015 przez Patrycjerz Mędrzec (192,320 p.)
VOID - przekleństwo! Konstruktor nie ma typu zwracanego!
komentarz 17 września 2015 przez 0xf Dyskutant (8,180 p.)
Matko ! Rzeczywiscie popelnilem tak idiotyczny blad poprawione dam obecny kod dodam ze konstruktor nie dziala jak powienien gdyz wyswietla mi losowe liczby i zadnych napisow

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class Uczen;
class Nauczyciel;

class Uczen
{
    private:
    int index;
    string imie;
    string nazwisko;
    string haslo;
    string mail;
    int lata;
    string urodzenie_miesiac; int urodzenie_rok, urodzenie_dzien;
    string bufor;

    public:

        Uczen(int i=2137, string im="Marian",string na="Kowalski", string ha="haslo", string ma="mail@mail", int la=2137, string urom="Kwiecien", int uror=1488, int urod=20)
        {
            i=index;
            im=imie;
            na=nazwisko;
            ha=haslo;
            ma=mail;
            la=lata;
            urom=urodzenie_miesiac;
            uror=urodzenie_rok;
            urod=urodzenie_dzien;
        }
        ~Uczen()
        {
            cout<<"Skonczylo sie smieszkowanie"<<endl;

        }

    void wczytaj()
    {
     cout<<"Podaj imie i Nazwisko : ";cin>>imie>>nazwisko;
     cout<<"Podaj swoje haslo : ";cin>>haslo; cout<<"Podaj haslo ponownie : "; cin>>bufor; if(bufor!=haslo) cout<<"Hasla sie nie zgadzaja !"<<endl; bufor.clear();
     cout<<"Podaj swoj e-mail : ";cin>>mail;
     cout<<"Podaj swoja date urodzenia (Dzien): ";cin>>urodzenie_dzien;
     cout<<"Podaj swoja date urodzenia (Miesiac): ";cin>>urodzenie_miesiac;
     cout<<"Podaj swoja date urodzenia (Rok): ";cin>>urodzenie_rok;
     lata=2015-urodzenie_rok;

    }
    void zapisz();
    void wyswietl()
    {
        cout<<"Index : "<<index<<endl;
        cout<<"Imie : "<<imie<<endl;
        cout<<"Nazwisko : "<<nazwisko<<endl;
        cout<<"haslo : "<<haslo<<endl;
        cout<<"e-mail : "<<mail<<endl;
        cout<<"lata : "<<endl;
        cout<<"Data urodzenia : "<<urodzenie_dzien<<" "<<urodzenie_miesiac<<" "<<urodzenie_rok<<endl;
    }

 

};

int main()
{
  Uczen uu;
  uu.wyswietl();
 return 0;
}
komentarz 17 września 2015 przez Patrycjerz Mędrzec (192,320 p.)
Po pierwsze konstruktor nic ci nie wyświetla, robią to inne funkcje. Co do twojego problemu, to źle przypisujesz wartości. Przecież dane otrzymane przez argumenty przypisujesz do składowych obiektu, nie odwrotnie, jak to teraz robisz.
0 głosów
odpowiedź 17 września 2015 przez event15 Szeryf (93,790 p.)
przy okazji to nadmieniłbym, że dobrą praktyką jest trzymanie do 3 parametrów w konstruktorze
komentarz 17 września 2015 przez 0xf Dyskutant (8,180 p.)
ok, a dlaczego ?
komentarz 17 września 2015 przez event15 Szeryf (93,790 p.)

https://msdn.microsoft.com/en-us/library/vstudio/ms229060(v=vs.100).aspx

Consider providing simple, ideally default, constructors. A simple constructor has a very small number of parameters, and all parameters are primitive types or enumerations.

Podobne pytania

0 głosów
1 odpowiedź 534 wizyt
pytanie zadane 12 marca 2019 w C i C++ przez Curiosis Użytkownik (540 p.)
+1 głos
1 odpowiedź 497 wizyt
pytanie zadane 4 maja 2016 w JavaScript przez kubaissen Początkujący (250 p.)
0 głosów
1 odpowiedź 845 wizyt
pytanie zadane 19 listopada 2020 w C# przez Muzykowy Nowicjusz (120 p.)

93,691 zapytań

142,608 odpowiedzi

323,212 komentarzy

63,215 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...