problem z konstruktorem kopiujacym

Problemy i ich rozwiązania w C++.
joana0608
Początkujący
Początkujący
Posty: 10
Dołączył(a): niedziela, 22 kwietnia 2012, 22:28

problem z konstruktorem kopiujacym

Post przez joana0608 »

Witam, mam pytanie w programie nie uruchamia sie konstruktor kopiujacy, To znaczy uruchamia się ale przepisuje bit po bicie a nie o to mi chodzi.

Code: Zaznacz cały

#include <cstdlib>
#include <iostream>
#include "Pojazd.h"
using namespace std;


int main(int argc, char *argv[])
{
    cout << " Ten program opowie troche o VW Garbusach :)" << endl << endl;
    Pojazd Osobowy;
    Osobowy. Wyswietl();
    
    Pojazd Transporter ( "Transporter_Ogorek", "niebieski", 1967);
   
    
   Transporter.Wyswietl();
   Pojazd TransporterOgorek;
   TransporterOgorek.setKolor ("zielony");
   TransporterOgorek = Transporter;
   TransporterOgorek.Wyswietl();
   
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
const int Dlugosc = 50;

class Pojazd
{
// zmienne ( wlasciwosci ) klasy
char Nazwa [ Dlugosc ];
char Kolor [ Dlugosc ];
int RokProdukcji;
int BiezacaData;
// metody, zachowanie obiektow klasy
public:
void setNazwa ( char* nNazwa); // deklaracja
void setKolor ( char* nKolor );//deklaracja
void setRokProdukcji ( int nRokProdukcji ); //deklaracja
void Wyswietl ();
 // konstruktory
 Pojazd();
 Pojazd( char* nNazwa, char* nKolor, int nRokProdukcji );
 Pojazd ( const Pojazd & wzorzecPojazdu);
};
#include <iostream>
#include "Pojazd.h"
using namespace std; 
// definicje metod
void Pojazd :: setNazwa ( char* nNazwa)
{
     strncpy ( Nazwa, nNazwa, sizeof ( Nazwa ));
}

void Pojazd :: setKolor ( char* nKolor )
{
     strncpy ( Kolor, nKolor, sizeof ( Kolor ));
     
}

void Pojazd :: setRokProdukcji ( int nRokProdukcji )
{
     RokProdukcji = nRokProdukcji;
     
}

void Pojazd ::  Wyswietl ()
{
     cout << Nazwa << " kolor " << Kolor << " rok produkcji " << RokProdukcji << endl;
}
// definicje konstruktorow
Pojazd :: Pojazd ()
{
       strncpy ( Nazwa, " Garbus ", sizeof(Nazwa));
       strncpy ( Kolor, " - ", sizeof (Kolor ));
       RokProdukcji = 1945;
       
}
 Pojazd ::Pojazd( char* nNazwa, char* nKolor, int nRokProdukcji )
 {
        strncpy ( Nazwa, nNazwa, sizeof ( Nazwa ));
        strncpy ( Kolor, nKolor, sizeof (Kolor ));
        RokProdukcji = nRokProdukcji;
 }
 //konstruktor kopiujacy ( rezerwuje osobny obszar w pamoeci
  Pojazd :: Pojazd ( const Pojazd &  wzorzecPojazdu )
  {
        strncpy ( Nazwa,  wzorzecPojazdu.Nazwa, sizeof ( Nazwa ));
        strncpy ( Kolor,  wzorzecPojazdu.Kolor, sizeof (Kolor ));
        RokProdukcji =  wzorzecPojazdu.RokProdukcji;
        cout << "Uruchomiono konstruktor kopiujacy klasy Pojazd" << endl;
  }
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: problem z konstruktorem kopiujacym

Post przez Morfidon »

A o co chodzi? Proszę opisać problem i swój program.
joana0608
Początkujący
Początkujący
Posty: 10
Dołączył(a): niedziela, 22 kwietnia 2012, 22:28

Re: problem z konstruktorem kopiujacym

Post przez joana0608 »

Właściwie to to dopiero poczatek i raczej ćwiczenie niż konkretny program. Temat zadania jest: Utworzenie klasy abstrakcyjniej. Należy zaimplementować w języku C++ klasę abstrakcyjną (ogólną)
Klasa powinna zawierać definicję:
- konstruktorow ( domyslnego, parametryzowanego, kopiujacego)
- destruktora

W moim ćwiczeniu, kopiuje bit po bicie, a przecież ustawilam inny kolor (TransporterOgorek.setKolor ("zielony");). Tu wlaśnie problem
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: problem z konstruktorem kopiujacym

Post przez Morfidon »

Proszę zamieścić pliki w załączniku, ponieważ to co mi zostało podane nie chce się skompilować.
joana0608
Początkujący
Początkujący
Posty: 10
Dołączył(a): niedziela, 22 kwietnia 2012, 22:28

Re: problem z konstruktorem kopiujacym

Post przez joana0608 »

Przesylam pliki w załączniku. Pozdrawiam, Joanna
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: problem z konstruktorem kopiujacym

Post przez Morfidon »

W linii 21:

Code: Zaznacz cały

   TransporterOgorek = Transporter;
przypisałaś zawartość Transporter do TranspoterOgorek, tak więc wartość zielony została zamieniona na wartość z Transportera czyli niebieski...

Tak więc jeśli chcesz aby TransporterOgorek miał wartość dla Koloru zielony to wywołaj funkcję ustawiającą kolor po linii 21. Pamiętaj, że kod jest wykonywany z góry do dołu.
joana0608
Początkujący
Początkujący
Posty: 10
Dołączył(a): niedziela, 22 kwietnia 2012, 22:28

Re: problem z konstruktorem kopiujacym

Post przez joana0608 »

Rozumiem, teraz jest tak jak chciałam. Dziękuję i pozdrawiam, Joanna
Post Reply