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

Mały problem z konstruktorem

0 głosów
107 wizyt
pytanie zadane 9 stycznia w C i C++ przez czujek22 Mądrala (5,740 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 przez mbabane Nałogowiec (26,960 p.)
a jak sie wywoluje konstruktor (czy tez zwykla funkcje), ktory przyjmuje wiecej niz jeden parametr?
komentarz 9 stycznia przez czujek22 Mądrala (5,740 p.)
edycja 9 stycznia 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 przez Mateusz1223 Użytkownik (820 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 przez czujek22 Mądrala (5,740 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 przez Mateusz1223 Użytkownik (820 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ź 47 wizyt
0 głosów
1 odpowiedź 52 wizyt
pytanie zadane 30 marca w C i C++ przez Meeto93 Gaduła (3,600 p.)
0 głosów
2 odpowiedzi 117 wizyt
Obowiązuje już zaktualizowany regulamin.

Czy wiesz, że nie musisz już odświeżać strony głównej?

Lista pytań i odpowiedzi aktualizuje się automatycznie!

38,497 zapytań

76,314 odpowiedzi

149,007 komentarzy

17,980 pasjonatów

Przeglądających: 278
Pasjonatów: 29 Gości: 249

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...