Odwoływanie się do dynamicznie alokowanej tablicy

0

Cześć,
W moim programie natknąłem się na jakiś drobny problem i nie umiem go rozwiązać

// plik nagłówkowy .h
class Wektor
{
    float *wsp;
public:
    Wektor();
    void wczytaj(Wektor &);
    void mnozenie_skalarne(Wektor &, Wektor &);
    void mnozenie_wektorowo(Wektor &, Wektor &);
    ~Wektor();
};

//interesujący mnie fragment kodu
Wektor::Wektor()
{
    float *wsp=new float [3];
    for(int i=0;i<3;i++) wsp[i]=0;
}
void Wektor::wczytaj(Wektor &w)
{
    cout<<"Podaj wspolrzedne wektora!: "<<endl;
    cout<<"x:\t";
    cin>>w.wsp[0];
    cout<<endl<<"y:\t";
    cin>>w.wsp[1];
    cout<<endl<<"z:\t";
    cin>>w.wsp[2];
}

//wywołanie w mainie
Wektor w1;
    Wektor w2;
    Wektor w3;
    w1.wczytaj(w1);
    w2.wczytaj(w2);

Problem: po uruchomieniu programu oraz wpisaniu pierwszej wartości x program na chwilę się zawiesza, a następnie kończy swoje działanie, wydaje mi się, że problem leży gdzieś w metodzie wczytaj lub ewentualnie przy alokacji pamięci. Byłbym wdzięczny za wszelką pomoc ;)

1

Poza bardzo dziwnym sposobem definicji funkcji wczytaj (skoro nie używa this, to czemu nie jest statyczna?), i kompletnym zignorowaniem zasady 3/5/0 (link, link) przytoczone fragmenty wyglądają ok. Przygotuj MCVE.

1
Wektor::Wektor()
{
    float *wsp=new float [3]; // <-- Usuń pierwszy float i *.
    for(int i=0;i<3;i++) wsp[i]=0;
}

W konstruktorze tworzysz nowy egzemplarz zmiennej wsp do której przypisujesz adres rezerwowanej pamięci. W wywołaniu metody wczytaj odwołujesz się do zmiennej klasowej, która wskazuje na przypadkowy obszar pamięci.

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