Tablice C++

0

Wklejam program:

#include <iostream>
#include <math.h>
#include <cstdlib>
using namespace std;
class Punkt {
    int wspx;
    int wspy;

public:
    Punkt()
    {
    }
    Punkt(int x, int y)
    {
        wspx = x;
        wspy = y;
    }
    int getx()
    {
        return wspx;
    };
    int gety()
    {
        return wspy;
    };
};
class Wektor {

    Punkt pktA;
    Punkt pktB;

public:
    Wektor(Punkt A, Punkt B)
    {
        pktA = A;
        pktB = B;
    }
    double dlugosc()
    {
        double wynik;
        double dlugosc, dlugosc2;
        dlugosc = (pktB.getx() - pktA.getx()) * (pktB.getx() - pktA.getx());
        dlugosc2 = (pktB.gety() - pktA.gety()) * (pktB.gety() - pktA.gety());
        wynik = sqrt(dlugosc + dlugosc2);
        return wynik;
    }
    double* dodawanie()
    {
        double tab[3];
        tab[0] = pktA.getx() + pktB.getx();
        tab[1] = pktA.gety() + pktB.gety();
        return tab;
    }
    double odejmowanie()
    {
        double roznicax, roznicay, wynik3;
        roznicax = pktB.getx() - pktA.getx();
        roznicay = pktB.gety() - pktA.gety();
        wynik3 = (roznicax, roznicay);
        return wynik3;
    }
    double iloczyn()
    {
        double x, y, wynik4;
        x = pktA.getx() * pktB.getx();
        y = pktA.gety() * pktB.gety();
        wynik4 = (x, y);
        return wynik4;
    }
};

int main()
{
    Punkt pktA(2, 3);
    Punkt pktB(3, 5);
    Wektor wektA(pktA, pktB);
    cout << wektA.dlugosc() << endl;
    cout << wektA.dodawanie() << endl;
    cout << wektA.odejmowanie() << endl;
    cout << wektA.iloczyn() << endl;

    return 0;
}

Wiem ,że wartość na stosie się resetuje ale jak zrobić ,żeby się nie resetowała?
Błąd: warning: address of local variable ‘tab’ returned [-Wreturn-local-addr]
double tab[3];

3

Zwróć vector po prostu.

3

Wartość się nie "resetuje", tylko masz UB. Czas życia zmiennej kończy się wraz z wyjściem z jej zakresu (tutaj: } kończący funkcję), użycie jej adresu później jest po prostu niedozwolone. Użyj std::array lub std::vector, tak jak @Patryk27 mówi.

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