Klasy zagnieżdżone

0

Witajcie mam problem, muszę napisać program na klasach i klasy muszą być zagnieżdżone. Prubuje się dostać z klasy nadrzędnej do podrzędnej w celu tworzenia tablicy wskaźników i mam problem gdyż cały czas wyświetla mi błąd. Nie wiem może ja coś robię źle , proszę o pomoc. Z góry dziękuje.

Plik z klasami :

 
class Pracownik
{
	// Pracownik
private:
	string Imie;
	string Nazwisko;
	int numer;
public:
	Pracownik(){ Zarobki *zarobki = new Zarobki; };
	int getZarobki(){ Zarobki zarobki ;  return zarobki.getZarobki(); }
	void add_worker(Pracownik(**dane), int wprowadzeni);
	void search_pracownika();
	void reamove_pracownika();
	void print();
	string get_placuwka(){ Placowka placuwka; return placuwka.get_placowka(); }
	class Zarobki
	{
		//Zarobki 
	private:
		double zarobki;
		double pensja;
		int  stawka_godzina;
	public:
		int getZarobki(){ return stawka_godzina; };
	};
	Zarobki *temp;
	class Placowka
	{
		// Placowki firmy 
	private:
		string Miasto;
	public:
		string get_placowka(){ return Miasto; };
	};
	
};
//---------------------------------------------ALOKACJA PAMIECI---------------------------------------------
Pracownik *pracownik = new Pracownik;

Oraz fragment gdzie próbuje się dostać do klasy Zarobki :

 
int stawka;
	//----------------------------------WCZYTYWANIE DANYCH O PRACOWNIKACH---------------------------------------
	cout << " Imie: ";
	cin >> pracownik->Imie;
	cout << endl << " Nazwisko: ";
	cin >> pracownik->Nazwisko;
	cout << endl << " Nr pracownika: ";
	cin >> pracownik->numer;
	cout<<endl << " Stawka za godzine: ";
	cin >> stawka;
	pracownik->temp->getZarobki.getZarobki() = stawka;
	cout << endl << " Miasto placiwki: ";
	cin >> pracownik->get_placuwka();
1
  1. Imie, Nazwisko i numerprivate, więc nie możesz zrobić
cin >> pracownik.Imie;
  1. Powiedz dokładnie co chcesz tutaj zrobić, bo tu jest parę błędów w jednej instrukcji:
pracownik->temp->getZarobki.getZarobki() = stawka;

Czy temp ma pole o nazwie getZarobki? Próbujesz przypisać do tymczasowego wyniku jakąś wartość? Czy temp jest w ogóle inicjalizowane gdzieś?

  1. Podobnie, wczytanie do tymczasowego wyniku:
cin >> pracownik->get_placuwka();

Nazywanie zmiennych woła o pomstę do nieba. Tak samo to: Placowka placuwka;

0

Chce mieć dostęp do zmiennej stawka_godzinna , która jest w klasie Zarobki i przypisać jej wartość jaką użytkownik wprowadzi. A klasa Zarobki jest w klasie Pracownik i już nie mam pojęcia jak to zrobić.

0

Zrób odpowiedni seter.

2

Niech klasa Zarobki ma metodę

void ustawZarobki(int kwota) { stawka_godzina = kwota; }

Wtedy ustawisz

cin >> stawka;
pracownik->temp->ustawZarobki(stawka);

pod warunkiem, że temp było gdzieś wcześniej inicjalizowane.

0

Dziękuje działa

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