Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przeciążenie operatora przy operacjach na wektorach

Ostatnio zmodyfikowano 2017-03-31 08:59
Autor Wiadomość
andrzejek97
Temat założony przez niniejszego użytkownika
Przeciążenie operatora przy operacjach na wektorach
» 2017-03-29 11:58:36
Witam, mam pewien problem z zadaniem, które muszę zrobić, miałem stworzyć klasę opisującą wektor liczb, rozmiar wektora ma być parametrem konstruktora, w konstruktorze ma być rezerwowana pamięć, w destruktorze ma być zwalniana, miałem też przeładować operator tablicowy i dotąd wydaje mi się, że udało mi się wykonać zadanie, muszę przeładować jeszcze operator + - * / żeby można było dokonywać operacji arytmetycznych na parach wektorów i tutaj nie wiem jak to zapisać, rozumiem, że jeśli wektory mają rozmiar np 5 to do pierwszej współrzędnej pierwszego wektora dodajemy pierwszą drugiego itd, prosiłbym o przykład jak to zapisać dla dodawania, mam problem ze składnią, jestem początkujący. Poniżej wklejam kod tego co udało mi się napisać.
C/C++
#include<iostream>
using namespace std;

class CVector
{
    int rozmiar;
    float * tablica;
public:
    CVector( int size );
    CVector();
    CVector operator +( const CVector & );
    CVector operator -( const CVector & );
    CVector operator *( const CVector & );
    CVector operator /( const CVector & );
    ~CVector();
    float & operator []( int j ) { return tablica[ j ]; }
    const float & operator []( int j ) const { return tablica[ j ]; }
};

CVector CVector::operator +( const CVector & param )
{
    /*tu nie wiem co powinienem wpisac, jeśli dodam to co tutaj jest w komentarzu to wyskakuje błąd "undefined reference to 'CVector::CVector()'"
    CVector temp;
    for(int i=0;i<wielkosc;i++)
    {
    temp.tablica[i]=tablica[i]+param.tablica[i];
    }
    return temp;*/
   
    CVector::CVector( int size )
        : rozmiar( size )
    {
        tablica = new float[ rozmiar ];
        for( int i = 0; i < rozmiar; i++ )
        {
            tablica[ i ] = 0;
        }
    }
    CVector::~CVector()
    {
        delete[] tablica;
    }
   
   
    int main()
    {
        int wielkosc;
        cout << "Podaj wielkosc wektora: ";
        cin >> wielkosc;
        CVector jakis_wektor( wielkosc );
        for( int i = 0; i < wielkosc; i++ )
        {
            jakis_wektor[ i ] = i;
            cout << jakis_wektor[ i ] << '\n';
        }
        jakis_wektor[ 5 ] = 8;
        cout << "wartosc wspolrzednej wektora czwarty " << jakis_wektor[ 3 ];
        CVector drugi_wektor( wielkosc );
        cout << "\nWektor drugi: \n";
        for( int i = 0; i < wielkosc; i++ )
        {
            jakis_wektor[ i ] = i;
            cout << jakis_wektor[ i ] << '\n';
        }
       
        return 0;
    }

P-159566
darko202
» 2017-03-29 12:37:55
P-159569
mateczek
» 2017-03-29 13:50:51
znajdź różnicę ?? miedzy tymi linijkami. Próbujesz stworzyć obiekt bez podania rozmiaru (a nie masz do tego konstruktora) a potem dodawać?? 
C/C++
CVector jakis_wektor( wielkosc );
CVector temp;
P-159570
andrzejek97
Temat założony przez niniejszego użytkownika
» 2017-03-29 14:46:45
Już zmieniłem na
CVector temp( rozmiar )
 i usunąłem tę linijkę
CVector();
P-159571
andrzejek97
Temat założony przez niniejszego użytkownika
» 2017-03-30 22:20:24
Mam pytanie, jak powinno wyglądać sprawdzenie czy w konstruktorze kopiującym nie przypisuje obiektu do samego siebie
C/C++
CVector( const CVector & param )
{
    tablica = new float[ param.rozmiar ];
    for( int i = 0; i < rozmiar; i++ )
    {
        tablica[ i ] = param.tablica[ i ];
    }
}
P-159616
Monika90
» 2017-03-30 22:31:28
Konstruktor kopiujący to nie jest operator przypisania, więc nie ma sensu tego sprawdzać.
P-159617
andrzejek97
Temat założony przez niniejszego użytkownika
» 2017-03-30 22:36:51
Pomyliłem się, miał to być operator przypisania
C/C++
CVector & operator =( const CVector & param )
{
    delete[] tablica;
    tablica = new float[ rozmiar ];
    for( int i = 0; i < rozmiar; i++ )
    {
        tablica[ i ] = param.tablica[ i ];
    }
}
P-159618
karambaHZP
» 2017-03-30 22:52:02
Sprawdzasz adres argumentu z adresem wskaźnika
this
.
P-159619
« 1 » 2
  Strona 1 z 2 Następna strona