Wskaźnik w konstruktorze

0

Witam.
Chciałam stworzyć konstruktor ze wskaźnikami i coś robię źle. ;) Program przerobiłam z tworzonego wcześniej bez wskaźników i gdzieś się najwidoczniej zaplątałam (bez wskaźników działało mi wszytko) Z góry dziękuję za pomoc.
Zadanie z Praty - mam nazwisko klienta, jego numer i sumę na koncie. Do tego konta mamy dodawać i wybierać pieniądze.

#include <iostream>

using namespace std;

class Rachunek
{
    char *nazwisko[30];
    int numer;
    float saldo;
public:
    Rachunek (const char *nazw)
    {
        nazwisko = new char[30];
        numer = 0;
        saldo = 0;
        cin>>nazw;
    }

    void    drukuj()
    {
        cout<<nazwisko<<" "<<numer<<" "<<saldo<<"\n";
    }
    void dodaj_numer()
{
    int nume;
    cout<<"Podaj numer klienta"<<" "<<nazwisko<<"\n";
    cin>>nume;
    numer=nume;
}
void dodaj_saldo()
{
    float kwota;
    cout<<"Podaj kwote do wplacenia na konto\n";
    cin>>kwota;
    saldo=saldo+kwota;
}
void odejmij()
{
    float kwota;
    cout<<"Podaj kwote do wyplacenia z konta\n";
    cin>>kwota;
    saldo=saldo-kwota;
}
~Rachunek()
{
    cout<<"Czyszczenie pamieci.";
}
};


int main()
{
    Rachunek klient1();
    klient1.dodaj_numer();
    klient1.dodaj_saldo();
    klient1.odejmij();
    klient1.drukuj();
    Rachunek klient2();
    klient2.dodaj_numer();
    klient2.dodaj_saldo();
    klient2.odejmij();
    klient2.drukuj();
    return 0;
}


1

Tak na pierwszy rzut oka:

char *nazwisko[30];

Raczej:

char *nazwisko;

W czym w ogóle jest problem?

0

Może zacznij jeszcze raz od podstaw bo z całą pewnością nie wiesz co czynisz:

    char *nazwisko[30]; // zadeklaruj tablice na 30 różnych nazwisk

    Rachunek (const char *nazw)
    {
        nazwisko = new char[30]; // Wstaw w tablice na 30 różnych nazwisk miejsce na jedno nazwisko - WTF ? nie ma szans zadziałać
        numer = 0;
        saldo = 0;
        cin>>nazw; // zmień przekazany parametr który jest stały - WTF ? nie ma szans zadziałać
    }
0

Nie powiem, zasugerowałam się podpowiedzią w podręczniku:


private:
char nazwisko[40]


Dzięki Patryk27. Tu już nie wywala błędu. A problem mam w tym, jak później wprowadzić to nazwisko. :/ Czytam, ale chyba za bardzo skaczę po informacjach i nie mogę tego sklecić w całość.

1
class Rachunek
  {
   private:
   char *nazwisko;
   int numer;
   float saldo;
   char *strdup(const char *nazwisko)
     {
      size_t len=strlen(nazwisko)+1;
      char *ret=new char[len];
      memcpy(ret,nazwisko,len);
      return ret;
     }
   public:
   Rachunek(const char *nazwisko="",int numer=0,float saldo=0):nazwisko(strdup(nazwisko)),numer(numer),saldo(saldo) {}
   ~Rachunek() { delete[] nazwisko; }
   float Saldo()const { return saldo; }
   int Numer()const { return numer; }
   void add(float kwota) { saldo+=kwota; }
   void sub(float kwota) { saldo-=kwota; }
  }

Natomiast wszelkie wprowadzenia danych - poza klasą czyli w main

1 użytkowników online, w tym zalogowanych: 0, gości: 1