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

Mały problem z konstruktorem

VPS Starter Arubacloud
0 głosów
205 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ź 101 wizyt
pytanie zadane 22 października 2018 w JavaScript przez Biay Początkujący (420 p.)
0 głosów
1 odpowiedź 227 wizyt
0 głosów
1 odpowiedź 382 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...