Klasy zagnieżdżone

Klasy zagnieżdżone
LS
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 5 lat
  • Postów:40
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 :

Kopiuj
 
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 :

Kopiuj
 
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();
edytowany 1x, ostatnio: lshadown
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
1
  1. Imie, Nazwisko i numerprivate, więc nie możesz zrobić
Kopiuj
cin >> pracownik.Imie;
  1. Powiedz dokładnie co chcesz tutaj zrobić, bo tu jest parę błędów w jednej instrukcji:
Kopiuj
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:
Kopiuj
cin >> pracownik->get_placuwka();

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

LS
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 5 lat
  • Postów:40
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ć.

_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:12 dni
0

Zrób odpowiedni seter.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
2

Niech klasa Zarobki ma metodę

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

Wtedy ustawisz

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

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

LS
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 5 lat
  • Postów:40
0

Dziękuje działa

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.