Dziedziczenie klas

0

Witam,mam pytanie.
Czy jak stworze sobie w glownej klasie( klasa przodka) dane tzn 'Jan Kowalski 22' w ponizszym kodzie moge to zrobic
[code]
class osoba{
private:
char imie[20];
char nazwisko[40];
int wiek;
public:

osoba(){};
osoba (char * napis_imie,char * napis_nazw, int lata);

void wypisz()
{
cout<<"\nWitaj "<<imie<<" "<<nazwisko<<"(Wiek "<<wiek<<") ";
}

~osoba();
};

osoba::osoba(char * napis_imie,char * napis_nazw, int lata)
{

	strcpy(imie,napis_imie);
	strcpy(nazwisko,napis_nazw);
	wiek=lata;
	cout<<"Konstruuje osobe: "<<imie<<nazwisko<<"\n";
}

osoba::~osoba()
{
	cout<<"\n\nPracuje De-str(sprzata): "<<imie<<nazwisko<<"\n";	
}

[/code]

i w drugiej klasie dziedziczonej jest gra ze trzeba dojsc do 15 rzucajac kostka. I chce wyswietlic wynik w niej Jan KOwalski 22 wyrzucil 4.

[code]
class pionki : public osoba
{
public:
static int ile_pionkow;
static int suma_pol;
int cos;
pionki(){};

void zapamietaj(int liczba);

void wypisz2();
{
	// tutaj rozna rzeczy dopisywalem ale nie wychodzi 
	cout<<"Kostka wyrzucil: "<<cos<<"\n";                           //TUTAJ !!!!!!!!!!!!!
}
 int ile()
{
	return suma_pol;
}
static int zwieksz(int x)
{
	suma_pol=suma_pol+x;
}
static int zmniejsz(int x)
{
	suma_pol=suma_pol-x;
}

};
void pionki::zapamietaj(int liczba){
cos=liczba;
}[/code]

I mam pytanie czy da sie cos takiego zrobic. Jest mi to bardzo potrzebne, ale tylko zeby wyswietlac to w klasie nie w mainie. Bo tak to nie trzeba bylo Dziedziczyc klasy a o to mi wlasnie chodzi zeby bylo pokazane ze Dzieki temu to sie dzieje :)
Mam nadzieje ze dobrze wytlumaczylem.
Prosze o pomoc.

0

cout<<"Kostka wyrzucil: ";
wypisz();
cout<<endl;

0

To moze dam reszte kodu
Nie dziala jak zrobie tak jak mowisz
Niestety
[code]
int main()
{

char im[20],naz[40];
float old;
char im2[20],naz2[40];
float old2;
cout<<"Podaj swoje imie i nazwisko oraz wiek:\n";
cin>>im;
cin>> naz;
cin>> old;
osoba pierwsza(im,naz,old);
pierwsza.wypisz();




int kostka,ile_ruchow=0;
pionki czerwony;
  srand(time(NULL));

while(czerwony.suma_pol!=15 )
{
kostka=(rand()%6+1);
czerwony.zapamietaj(kostka);
czerwony.wypisz2();
if(czerwony.suma_pol>9 && kostka>15-czerwony.suma_pol)
{
pionki::zmniejsz(kostka);
}
else
pionki::zwieksz(kostka);
cout<<"Jestes na polu:\t"<<czerwony.suma_pol<<"\n";
ile_ruchow++;

}
cout<<"\t\t\tRzucales kostka:\t"<<ile_ruchow<<" razy\n\n\n\n\n";

}[/code]

0

pionki(const osoba &Os):osoba(Os) {} // zmienić konstruktor

// w mainie
osoba pierwsza;
pierwsza.wypisz();
int kostka,ile_ruchow=0;
pionki czerwony(pierwsza);

0

Teraz mi znaczki wyskakuja co nie da sie ich odczytac

0

Kryształowa kula w naprawie, jak zostanie zreperowana to będę próbować wywróżyć jak to poskładałeś.

0

[code]#include<cstdlib>
#include<ctime>
#include<iostream>
#include<string.h>
#include<ctime>
#include<cstdlib>
using namespace std;

class osoba{
private:
char imie[20];
char nazwisko[40];
int wiek;
public:

osoba(){
};
osoba (char * napis_imie,char * napis_nazw, int lata); //Konstruktor

// void zapamietaj(char * napis_imie,char * napis_nazw, int lata);

void wypisz()
{
	cout<<"\nWitaj "<<imie<<" "<<nazwisko<<"(Wiek "<<wiek<<") ";

}

~osoba(); //Destruktor

};

osoba::osoba(char * napis_imie,char * napis_nazw, int lata) //Konstrukotr
{
	strcpy(imie,napis_imie);
	strcpy(nazwisko,napis_nazw);
	wiek=lata;
	cout<<"Konstruuje osobe: "<<imie<<nazwisko<<"\n";
}

osoba::~osoba()
{
	cout<<"\n\nPracuje De-str(sprzata): "<<imie<<nazwisko<<"\n";	
}

class pionki : public osoba
{
public:
static int ile_pionkow;
static int suma_pol;
int cos;
pionki(const osoba &Os):osoba(Os){};

void zapamietaj(int liczba);

void wypisz2()
{
	
	cout<<"Kostka wylosowala: "<<cos<<"\n";
}
 int ile()
{
	return suma_pol;
}
static int zwieksz(int x)
{
	suma_pol=suma_pol+x;
}
static int zmniejsz(int x)
{
	suma_pol=suma_pol-x;
}

};
void pionki::zapamietaj(int liczba){
cos=liczba;
}

int pionki::ile_pionkow;
int pionki::suma_pol;

int main()
{

char im[20],naz[40];
float old;
char im2[20],naz2[40];
float old2;
cout<<"Podaj swoje imie i nazwisko oraz wiek:\n";
cin>>im;
cin>> naz;
cin>> old;
osoba pierwsza;//(im,naz,old);
pierwsza.wypisz();




int kostka,ile_ruchow=0;
pionki czerwony(pierwsza);

srand(time(NULL));

while(czerwony.suma_pol!=15 )
{
kostka=(rand()%6+1);
czerwony.zapamietaj(kostka);
czerwony.wypisz2();
if(czerwony.suma_pol>9 && kostka>15-czerwony.suma_pol)
{
pionki::zmniejsz(kostka);
}
else
pionki::zwieksz(kostka);
cout<<"Jestes na polu:\t"<<czerwony.suma_pol<<"\n";
ile_ruchow++;

}
cout<<"\t\t\tRzucales kostka:\t"<<ile_ruchow<<" razy\n\n\n\n\n";

}[/code]

0

osoba pierwsza(im,naz,old); // tylko proszę nie rób dodatkowych zmian bo znowu nie będzie działać

0

Hmmm,dobrze ale bym chial zeby wyswietlalo Jan Kowalski w klasie pionki w funkcji wypisz2()
Bo tak to moglbym to zrobic bez dziedziczenie tych klas.
[code]
#include<cstdlib>
#include<ctime>
#include<iostream>
#include<string.h>
#include<ctime>
#include<cstdlib>
using namespace std;

class osoba{
private:
char imie[20];
char nazwisko[40];
int wiek;
public:

osoba(){
};
osoba (char * napis_imie,char * napis_nazw, int lata); //Konstruktor

// void zapamietaj(char * napis_imie,char * napis_nazw, int lata);

void wypisz()
{
	cout<<"\nWitaj "<<imie<<" "<<nazwisko<<"(Wiek "<<wiek<<") ";

}

~osoba(); //Destruktor

};

osoba::osoba(char * napis_imie,char * napis_nazw, int lata) //Konstrukotr
{
	strcpy(imie,napis_imie);
	strcpy(nazwisko,napis_nazw);
	wiek=lata;
	cout<<"Konstruuje osobe: "<<imie<<nazwisko<<"\n";
}

osoba::~osoba()
{
	cout<<"\n\nPracuje De-str(sprzata): "<<imie<<nazwisko<<"\n";	
}

class pionki : public osoba
{
public:
static int ile_pionkow;
static int suma_pol;
int cos;
pionki(const osoba &Os):osoba(Os){};

void zapamietaj(int liczba);

void wypisz2()
{									// TUTAJ 
	cout<<"Kostka wylosowala: "<<cos<<"\n";
}
 int ile()
{
	return suma_pol;
}
static int zwieksz(int x)
{
	suma_pol=suma_pol+x;
}
static int zmniejsz(int x)
{
	suma_pol=suma_pol-x;
}

};
void pionki::zapamietaj(int liczba){
cos=liczba;
}

int pionki::ile_pionkow;
int pionki::suma_pol;

int main()
{

char im[20],naz[40];
float old;
char im2[20],naz2[40];
float old2;
cout<<"Podaj swoje imie i nazwisko oraz wiek:\n";
cin>>im;
cin>> naz;
cin>> old;
osoba pierwsza(im,naz,old);
pierwsza.wypisz();




int kostka,ile_ruchow=0;
pionki czerwony(pierwsza);

srand(time(NULL));

while(czerwony.suma_pol!=15 )
{
kostka=(rand()%6+1);
czerwony.zapamietaj(kostka);
czerwony.wypisz2();
//czerwony.wypisz(); !!!! BO MOGLBYM TUTAJ UZYC i by bylo dobrze, ALE CZY DA SIE W KLASIE pionki ???????????
if(czerwony.suma_pol>9 && kostka>15-czerwony.suma_pol)
{
pionki::zmniejsz(kostka);
}
else
pionki::zwieksz(kostka);
cout<<"Jestes na polu:\t"<<czerwony.suma_pol<<"\n";
ile_ruchow++;

}
cout<<"\t\t\tRzucales kostka:\t"<<ile_ruchow<<" razy\n\n\n\n\n";

}[/code]

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