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

Jak poprawnie pisac konstruktory

42 Warsaw Coding Academy
0 głosów
267 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ź 455 wizyt
pytanie zadane 12 marca 2019 w C i C++ przez Curiosis Użytkownik (540 p.)
+1 głos
1 odpowiedź 407 wizyt
pytanie zadane 4 maja 2016 w JavaScript przez kubaissen Początkujący (250 p.)
0 głosów
1 odpowiedź 717 wizyt
pytanie zadane 19 listopada 2020 w C# przez Muzykowy Nowicjusz (120 p.)

93,385 zapytań

142,384 odpowiedzi

322,540 komentarzy

62,745 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...