Konstruktor kopiujący
Ostatnio zmodyfikowano 2015-10-11 12:41
ast44 Temat założony przez niniejszego użytkownika |
Konstruktor kopiujący » 2015-10-10 22:29:56 Chciałem zrobić konstruktor kopiujący ponieważ mam dynamiczną tablicę.Ale coś mi nie wychodzi (program się zawiesza) : #include <iostream>
using namespace std;
class Klasa { public: int x, wiersze = 4, kolumny = 4; double ** macierz; Klasa( int _x ) { int i, j; x = _x; macierz = new double *[ kolumny ]; for( i = 0; i < kolumny; i++ ) { macierz[ i ] = new double[ wiersze ]; for( j = 0; j < wiersze; j++ ) { macierz[ i ][ j ] = i + j; } } } Klasa( const Klasa & kl ) { if( this != & kl ) { this->x = kl.x; int i, j; for( i = 0; i < kl.kolumny; i++ ) { this->macierz = new double *[ kl.wiersze ]; for( j = 0; j < kl.wiersze; j++ ) { this->macierz[ i ][ j ] = macierz[ i ][ j ]; } } } else { cout << "Ten sam obiekt" << endl; } } void wypisz() { int i, j; for( i = 0; i < kolumny; i++ ) { for( j = 0; j < wiersze; j++ ) { cout << macierz[ i ][ j ]; } cout << endl; } } ~Klasa() { int i; for( i = 0; i < kolumny; i++ ) { delete[] macierz[ i ]; } delete[] macierz; macierz = NULL; } };
int main() { Klasa kl_1( 1 ), kl_2( kl_1 ); return 0; }
|
|
mateczek |
» 2015-10-10 23:04:10 w kopiującym masz tylko rezerwacje pamięci na kolumny.
|
|
carlosmay |
» 2015-10-10 23:15:43 Klasa( const Klasa & kl ) { if( this != & kl ) { this->x = kl.x; int i, j; this->macierz = new double *[ kl.wiersze ]; for( i = 0; i < kl.kolumny; i++ ) { this->macierz[ i ] = new double[ kl.kolumny ]; for( j = 0; j < kl.wiersze; j++ ) { this->macierz[ i ][ j ] = kl.macierz[ i ][ j ]; } } } else { cout << "Ten sam obiekt" << endl; } }
|
|
ast44 Temat założony przez niniejszego użytkownika |
» 2015-10-11 12:37:24 Poprawiłem, ale teraz wyrzuca liczby typu 8.30631e-305000 |
|
ast44 Temat założony przez niniejszego użytkownika |
» 2015-10-11 12:41:00 A przepraszam, zapomniałem w jednym miejscu dać operator kropki.Teraz już działa dobrze.Dzięki za pomoc. |
|
« 1 » |