• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tablica wskazników na obiekt innej klasy (Tablica ma przechowywać wskazniki na obiekty klasy Pracownik)

Object Storage Arubacloud
0 głosów
600 wizyt
pytanie zadane 5 kwietnia 2020 w C i C++ przez FabinerZw Nowicjusz (140 p.)
#include <iostream>
#include <string>



using namespace std;

class Firma;

class Pracownik
{

private:

    string imie;
    string nazwisko;
    string stanowisko;
    //stawka za godzinę
    int stgod;
    //dni przepracowane
    int ildni;



public:

    Pracownik(string vImie, string vNazwisko, string vStanowisko, int vStgod, int vIldni)
    {

        imie = vImie;
        nazwisko = vNazwisko;
        stanowisko = vStanowisko;

        stgod = vStgod;
        ildni = vIldni;

    }

    Pracownik() {}

    void Set_Pracownik(string vI, string vN, string vSta, int vStg, int vIl)
    {

        imie = vI;
        nazwisko = vN;
        stanowisko = vSta;

        stgod = vStg;
        ildni = vIl;


    }

    string GetImie()
    {
        return imie;

    }

    string GetNazw()
    {
        return nazwisko;

    }

    string GetStan()
    {
        return stanowisko;

    }

    int GetStgod()
    {
        return stgod;

    }

    int GetIldni()
    {
        return ildni;

    }
};

class Firma
{
    friend class Pracownik;

private:

    int sprawdz;
    string nazwisko;
    //51 nazwisk

    string tab[53] = { "Nowak", "Kowalski", "Kowalczyk", "Kaminski", "Lewandowski", "Zielinski", "Szymanski", "Wozniak", "Dabrowski", "Kozlowski", "Jankowski",      "Mazur", "Wojciechowski", "Kwiatkowski", "Krawczyk", "Kaczmarek", "Piotrowski", "Grabowski", "Zajac", "Pawlowski", "Michalski", "Krol",       "Wieczorek", "Jablonski", "Wrobel", "Nowakowski", "Majewski", "Olszewski", "Stepien", "Malinowski", "Jaworski", "Adamczyk", "Dudek", "Nowicki", "Pawlak", "Gorski", "Witkowski", "Walczak", "Sikora", "Baran", "Rutkowski", "Michalak", "Szewczyk", "Ostrowski", "Tomaszewski", "Pietrzak",     "Zalewski", "Wroblewski", "Marciniak", "Jasinski", "Moscicki" };



public:



    void SpisPracownikow()
    {
        cout << "Pracowniki: " << endl << endl;

        for (int i = 0; i < 50; i++)
        {
            cout << tab[i] << endl;
        }

    }

    void wypiszPracownika()
    {

        // numer pracownika od 0-49!
        cout << endl << endl;
        cout << "Podaj numer pracownika: ";
        cin >> sprawdz;

        if (sprawdz > 49)
        {
            cout << "Pracownika pod takim numerem nie istnieje" << endl;

        }

        for (int i = 0; i < 50; i++)
        {

            if (i == sprawdz)
            {
                cout << "Pracownika znaleziono" << endl;
                cout << "Pracownik: Pan/Pani " << tab[i] << " jest pod numerem " << i << endl;

            }
        }

    }

    string dodajPracownika()
    {
        cout << "Podaj nazwisko nowego pracownika: " << endl;
        cin >> nazwisko;

        tab[51] = nazwisko;


        cout << "Pracownik zostal dodany, numer pracownika #51" << endl << endl;

        cout << "Aktualny spis pracownikow: " << endl;

        for (int i = 0; i < 52; i++)
        {
            cout << tab[i] << endl;
        }
        cout << endl;
        return nazwisko;
    }


    void stawkaPracownika()
    {
        cout << tab[0] << endl << "Stawka pracownika: 13zl/h" << endl;




    }


};

int main()
{

    Pracownik obiekt1;
    Firma obiekt2;

    //Firma* tab[53];
    //tab[0]->dodajPracownika();

    
    //Firma* tab = new Firma[53];





}

Dzień dobry. Mam niewielki problem ze wskaznikami. Nie wiem, w jaki sposób można tak zrobić, żeby tablica klasy Firma przechowywała wskazniki na obiekty klasy Pracownik? Byłbym bardzo serdeczny, jeżeliby ktoś pomógł z tym. Bardzo dziękuję!)

1 odpowiedź

+1 głos
odpowiedź 5 kwietnia 2020 przez profesorek96 Szeryf (91,420 p.)
Co dokładnie chcesz osiągnąć?

Jest coś takiego jak polimorfizm. Czyli Masz jakąś klasę bazową i dziedziczysz po niej. Jeśli klasy są w takiej relacji to można stworzyć tablice wskaźników tej właśnie klasy bazowej. Do każdego z wskaźników można przypisać obiekty klas potomnych.
komentarz 5 kwietnia 2020 przez FabinerZw Nowicjusz (140 p.)
Tak, to i chcę zrobić) Problem polega na tym, że nie wiem jak zadeklarować poprawnie taki wskaznik i potem przepisać do innego klasu. Probowałem już kilka razy, ale nie uda mi się, dlatego i proszę tutaj o pomocy. W ogóle planuje wykorzystać gettery i settery klasy Pracownik za pomocą tej tablicy z nazwiskami w klasie Firma. Nie wiem dokładnie, jak przypisać tą tablicę do obiektów innych klas
1
komentarz 5 kwietnia 2020 przez profesorek96 Szeryf (91,420 p.)

Może ten kod ci coś rozjaśni:

#include <iostream>
using namespace std;
class Baza
{
	public:
	virtual void cos()
	{
		cout<<"Klasa Bazowa"<<endl;
	}
};

class Potomek1:public Baza
{
	public:
	public:
	virtual void cos()
	{
		cout<<"Klasa Potomek1"<<endl;
	}
};
class Potomek2:public Baza
{
	public:
	public:
	virtual void cos()
	{
		cout<<"Klasa Potomek2"<<endl;
	}
};
int main() {
	Baza *tab[3];
	tab[0]=new Potomek1;
	tab[1]=new Potomek2;
	tab[2]=new Potomek1;
	
	for(int i=0;i<3;i++)tab[i]->cos();
	return 0;
}

 

3
komentarz 5 kwietnia 2020 przez j23 Mędrzec (194,920 p.)
Dodam, że na wszelki wypadek dobrze jest dodać wirtualny destruktor do klasy bazowej, bo jeśli w klasach pochodnych będą pola z typami nie-POD-owymi, to mogą być wycieki pamięci i inne cyrki, gdy zaczniesz usuwać obiekty ze wskaźnika na klasę bazową.

Podobne pytania

0 głosów
1 odpowiedź 186 wizyt
pytanie zadane 25 kwietnia 2020 w C i C++ przez demon1234 Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 131 wizyt
pytanie zadane 18 kwietnia 2020 w C# przez Kamilmis Nowicjusz (120 p.)
0 głosów
1 odpowiedź 177 wizyt

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...