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

Mały problem z konstruktorem

Object Storage Arubacloud
0 głosów
207 wizyt
pytanie zadane 9 stycznia 2017 w C i C++ przez czujek22 Dyskutant (7,670 p.)

Witam. Dopiero zaczynam obiektówkę i po przerobieniu 10 zadań bez problemów, problem wyskakuje w najmniej oczekiwanym miejscu :D

plik naglowkowy:

#ifndef RACHUNEK_H_INCLUDED
#define RACHUNEK_H_INCLUDED

class Rachunek
{
    std::string nazwisko;
    std::string nr_rachunku;
    double saldo;
public:
    Rachunek();
    Rachunek(std::string name,std::string nr,double s = 0.0);
    ~Rachunek(){};
    void show();
    void give(const double m);
    void get(const double m);

};

#endif // RACHUNEK_H_INCLUDED

plik cpp:

#include <iostream>
#include "rachunek.h"
using namespace std;

Rachunek::Rachunek() //domyslny
{
    nazwisko = "Nie podano";
    nr_rachunku = "0000-0000-0000-0000";
    saldo = 0.0;
}
Rachunek::Rachunek(string name, string nr, double s = 0.0) //wlasny
{
    nazwisko = name;
    nr_rachunku = nr;
    saldo = s;
}

....

Tworzę obiekt

Rachunek k1("Brak""Brak");

Błąd wyskakuje przy tworzeniu obiektu jak i przy definicji konstruktora wlasnego czyli cos musi byc z nim nie tak a nie wiem co :(

2
komentarz 9 stycznia 2017 przez mbabane Szeryf (79,280 p.)
a jak sie wywoluje konstruktor (czy tez zwykla funkcje), ktory przyjmuje wiecej niz jeden parametr?
komentarz 9 stycznia 2017 przez czujek22 Dyskutant (7,670 p.)
edycja 9 stycznia 2017 przez czujek22
A no tak, nie zauwazylem braku przecinka. Jednak bardziej mnie interesuje, dlaczego nie wykrywa składowych w konstruktorze.

Edit. Błędem było przypisanie w definicji konstruktora w pliku cpp :)

1 odpowiedź

0 głosów
odpowiedź 11 stycznia 2017 przez Mateusz1223 Bywalec (2,440 p.)

A spróbuj zrobić jeden konstruktor.

Np. tak

Rachunek::Rachunek(string name="Nie podano", 
string nr="0000-0000-0000-0000", 
double s = 0.0) 
{
    nazwisko = name;
    nr_rachunku = nr;
    saldo = s;
}

 

komentarz 11 stycznia 2017 przez czujek22 Dyskutant (7,670 p.)

Na stackoverflow ktoś podsunął mi abym stosował konstruktor domyslny w stylu c++11:
 

Rachunek::Rachunek    :    Rachunek("Nie podano", "0000-0000-0000-0000", 0.0)
{
}

Zapis działa, ale pierwszy raz się z czymś takim spotkałem. Byłby ktoś w stanie wytłumaczyć co to za dwukropek ?

1
komentarz 11 stycznia 2017 przez Mateusz1223 Bywalec (2,440 p.)
Jest to cos jakby wywołanie konstruktora. Zresztą zobacz sam:

Działa to podobnie jak użycie inicjowania w konstruktorze, jednak w przypadku instrukcji inicjujących pola będą zainicjowane w trakcie tworzenia klasy, a nie po utworzeniu jej obiektu.

https://pl.wikibooks.org/wiki/C%2B%2B/Konstruktor_i_destruktor

Znajdziesz to pod hasłem instrukcje inicjalizujące.

Podobne pytania

0 głosów
1 odpowiedź 102 wizyt
pytanie zadane 22 października 2018 w JavaScript przez Biay Początkujący (420 p.)
0 głosów
1 odpowiedź 228 wizyt
0 głosów
1 odpowiedź 384 wizyt

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...