Przekazanie tablicy obiektów do metody klasy

0

Witam.
Moj program sklada sie z plikow pracownik.h pracownik.cpp i glowny.cpp
W glowny.cpp , w main deklaruje sobie tablice obiektow:

Pracownik tablica[10] = {
		Pracownik("aaa","bbb", 2222), 
		Pracownik("aaa","ccc",3333), 
		Pracownik("aaa","bbb",1112),
		Pracownik("aaa","ccc",2900),
		Pracownik("aaa","bbb",1888),
		Pracownik("aaa","ccc", 1777),
		Pracownik("aaa","bbb", 1234),
		Pracownik("aaa","ccc",9999),
		Pracownik("aaa","bbb",8888),
		Pracownik("aaa","ccc",999)
	};

i chce wywolać związaną z nią metodę

Pokaz1(Pracownik& tablica);

w pracownik.h dekladuje w klasie Pracownik publiczną metode

void Pokaz1(Pracownik tab);

a w pracownik.cpp piszę jej kod

void Pracownik::Pokaz1(Pracownik& tab)
{
// mniejsza o niego
}

Problem polega na tym, ze nie wiem jak poprawnie utworzoną tablice obiektów przekazać do tej metody tak by wszystko działało i moją tablice widziało... tak jak jest wyżej wywala
'void Records::Pokaz1(Records::Pracownik &)' : overloaded member function not found in 'Records::Pracownik'.

Bardzo proszę o wskazówkę

0
#include <iostream.h>
struct Pracownik {
                  char a[30];
                  char b[30];
                  int c;


                 };
Pracownik tablica[3] = {
                {"aaa","bbb", 2222},
                {"aaa","ccc",3333},
                {"aaa","bbb",1112}};

      
 void wypisz(Pracownik*pr)
 {
    cout << pr[0].a << endl ;
    cout << pr[0].b << endl ;
    cout << pr[0].c << endl ;
 }
0

struktura to nie klasa, na podobienstwo tego, czyli (w skrócie)

//Pracownik.h
class Pracownik {
                  string imie;
                  string nazwisko;
                  int pensja;
public:
void Pokaz1(Pracownik *tab);
}


//Pracownik.cpp
void Pracownik::Pokaz1(Pracownik *tab)
{
// mniejsza o niego
}

//glowny.cpp

int main()
{
Pracownik tablica[3] = {
                Pracownik("aaa","bbb", 2222),
                Pracownik("aaa","ccc",3333),
                Pracownik("aaa","bbb",1112),
            }
Pokaz1(Pracownik tablica);
}

nie działa i jest ten sam błąd

0

Struktura różni się od klasy tylko tym, że wszystkie jej składniki są public. Wydaje mi się że niepotrzebnie robisz funkcję wypisującą pracowników wewnątrz klasy pracownik. Dlatego kolega wyżej zaproponował ci abyś klasę pracownik zamienił na strukturę (wszystkie składniki public) i tablicę takich struktur przekazał do globalnej funkcji wyświetlającej dane. Moim zdaniem właśnie tak powinieneś zrobić, bo to co teraz chcesz stworzyć jest trochę wbrew logice. Jeśli nie chcesz robić z klasy struktury to zadeklaruj przyjaźń z funkcją wyświetlającą aby miała dostęp do składników.

0

"niepotrzebnie robisz funkcję wypisującą pracowników wewnątrz klasy pracownik." musze neistety przekazać to w takiej formie... (tyle ze funkcja nie ma wypisywac a cos sprawdzac) na tym polega zadanie...

0
...
Pokaz1(Pracownik tablica);
....

?
Funkcje zadeklarowaną w klasie wywołuje się na rzecz jakiegoś konkretnego obiektu [lub klasy] , a nie tak sobie ...

0
#include <iostream>

using namespace std;

class Pracownik {
                  string imie;
                  string nazwisko;
                  int pensja;
public:
Pracownik(string a,string b,int p){imie=a;nazwisko=b;pensja=p;};
void Pokaz1(Pracownik *tab);
};

void Pracownik::Pokaz1(Pracownik *tab)
{
// mniejsza o niego
};

int main()
{
Pracownik tablica[3] = {Pracownik("aaa","bbb", 2222),
                           Pracownik("aaa","ccc",3333),
                            Pracownik("aaa","bbb",1112)};
tablica[0].Pokaz1(tablica);
system("pause");
}
0

dzięki, wszystko już działa :-) głowny moj bład polegał na tym, że w wywołaniu bylo tablica.Pokaz(tablica) albo tablica[10].Pokaz(tablica) a nie tablica[0] ... najprostsze błedy zawsze zabierają mi najwięcej czasu... no ale, tak wygląda nauka...

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