obiektowy c++ podklasy i konstruktor kopiowania

Odpowiedz Nowy wątek
2015-12-13 15:38

Rejestracja: 4 lata temu

Ostatnio: 4 lata temu

0

Mam do napisania program, ktory ma przedstawiac gitare za pomoca klasy oraz zawierac 2 obiekty inny klas, jeden dynamiczny, drugi automatyczny, nastepnie mam stworzyc knstruktor kopiujacy, do glownego obiektu, ale tak, zeby te dwa podobiekty tez sie kopiowaly, mam nadzieje, ze wiecie o co mi chodzi :P probowalam to zrobic za pomoca tego co znalazlam na forum, niestety z marnym skutkiem... moglby mi ktos pomoc? :) i mam jeszcze jedno pytanie, dlaczego podczas tworzenia obiektu gitara w mainie, dziala mi tylko konstruktor i destruktor gitary i pudla, a strun juz nie?

GITARA.H

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

class Struny
{
    int dlugosc;
    int srednica;
public:
    Struny(int=120, int=3);
    ~Struny();
    friend class Gitara;
};

class Pudlo
{
    string material;
public:
    Pudlo(string="drewno");
    ~Pudlo();
    friend class Gitara;
};

class Gitara
{
    Pudlo pudlo;
    Struny *struny;

    string nazwa;
    char kolor;
    static int licznik;
public:
    void zaladuj();
    void pokaz();

    Gitara(string="brak", char=90);                //inicjacja wartossci domyslnych
    ~Gitara();
    Gitara(const Gitara &g);

    //Gitara(int);
}; 

GITARA.CPP

#include <iostream>
#include <string>
#include <cctype>
#include "gitara.h"

using namespace std;

void Gitara::zaladuj()
{
    cout<<endl<<"Podaj nazwe gitary: ";
    cin>>nazwa;
    cout<<endl<<"Podaj kolor gitary: ";
    cin>>kolor;
}

void Gitara::pokaz()
{
    cout<<"Gitara "<<nazwa<<" o kolorze "<<kolor<<endl;
}

Gitara::Gitara(string n, char k)               //do ktorej klasy:: operator zasiegu
{

    nazwa=n;
    kolor=k;

    cout<<"Dziala konstruktor domyslny."<<endl;
}

Gitara::~Gitara()
{
    cout<<"Dziala destruktor domyslny"<<endl<<endl;

}

Gitara::Gitara(const Gitara &g)
{
    this->kolor=g.kolor;
    this->nazwa=g.nazwa;
    this->struny=g.struny;
    this->pudlo=g.pudlo;
}

Struny::Struny(int d, int s)
{
    d=dlugosc;
    s=srednica;

    cout<<"Dziala konstruktor struny"<<endl;
}

Struny::~Struny()
{
    cout<<"Dziala destruktor struny"<<endl;
}

Pudlo::Pudlo(string m)
{
    m=material;

    cout<<"Dziala konstruktor pudlo."<<endl;
}

Pudlo::~Pudlo()
{
    cout<<"Dziala destruktor pudlo."<<endl;
}
edytowany 1x, ostatnio: domidomka, 2015-12-13 16:13
O, piekarnik zamienił się w gitarę? - Endrju 2015-12-13 23:49
@Endrju jaki piekarnik? chyba coś Ci się pomyliło - domidomka 2016-01-20 16:18

Pozostało 580 znaków

2015-12-13 16:11

Rejestracja: 5 lat temu

Ostatnio: 4 miesiące temu

1

probowalam to zrobic za pomoca tego co znalazlam na forum, niestety z marnym skutkiem... moglby mi ktos pomoc?
Nie rozumiem pytania.

dlaczego podczas tworzenia obiektu gitara w mainie, dziala mi tylko konstruktor i destruktor gitary i pudla, a strun juz nie?
BoStruny *struny tworzy jedynie wskaźnik, a nie obiektu. Ten wskaźnik jeszcze nie wskazuje na żaden istniejący obiekt.

Pozostało 580 znaków

2015-12-13 16:18

Rejestracja: 4 lata temu

Ostatnio: 4 lata temu

0

@twonek 1. próbowałam stworzyć ten konstruktor kopiujacy ;p juz cos zrobilam, jednak dziala tylko w polowie... wyswietla mi sie cos takiego:
Dziala konstruktor domyslny.
Dziala konstruktor pudlo. x2
Dziala destruktor pudlo. x2
Dziala destruktor domyslny. x2
wiec znow cos jest nie tak....

2.wiem, ze mega glupie pytanie, ale dopiero zaczynam... jak stworzyc obiekt na ktory bedzie wskazywal? powinnam skorzystac z new?

Pozostało 580 znaków

2015-12-13 16:23

Rejestracja: 14 lat temu

Ostatnio: 3 dni temu

0

Zaczekaj z konstruktorem kopiującym, najpierw rozwiąż problem braku strun.
Pytania typu: - "... jednak dziala tylko w polowie ... " - bez podania kodu, mają sens tylko na forach wróżbitów (na informatycznych - całkowicie bezsensowne).


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
@_13th_Dragon przeciez podalam kod. - domidomka 2015-12-13 16:25
To co podano w tamtym kodzie to nie jest próba - proste przypisanie jednego pola drugiemu kompilator robi automagicznie, wystarczy usunąć wzmiankę o tym konstruktorze. Nie dasz rady zrobić tego konstruktora dopóki nie rozwiążesz problem ze strunami. - _13th_Dragon 2015-12-13 16:33

Pozostało 580 znaków

2015-12-13 21:19

Rejestracja: 5 lat temu

Ostatnio: 4 miesiące temu

0

To nie konstruktor kopiujący jest problemem. Jeszcze.

jak stworzyc obiekt na ktory bedzie wskazywal? powinnam skorzystac z new?
Tak.

Pozostało 580 znaków

Odpowiedz

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