C++ dziedziczenia

0
class User
{
protected:
	unsigned int ID;
public:
	virtual void display() = 0;
};

class Menager :public User
{

	void  display() {};
};

class Worker :public User
{
	std::string Name, Sname;
	size_t Salary;

public:
	void display()
	{

		cout << Sname << " " << Name << ", wyplata: " << Salary << endl;
		

	}

};

Chcę teraz aby jeśli zostanie spełniony warunek 1. wywołała się funkcja z klasy Menager, a gdy 2. funkcja z klasy Worker. Niestety, kompilator protestuje.

2

nie widzę tu żadnych warunków.

1

nie masz tu żadnego warunku....

5
maggy24 napisał(a):

Chcę teraz aby jeśli zostanie spełniony warunek 1. wywołała się funkcja z klasy Menager, a gdy 2. funkcja z klasy Worker. Niestety, kompilator protestuje.

Bezsensu! masz zrobione dziedziczenie i polimorfizm, więc po co ci potrzebny jakiś warunek?
Wywołujesz na wskaźniku User * metodę display a zależnie czy wskazuje on na Worker czy Manager to wywołana zostanie właściwa metoda! Na tym polega polimorfizm.
Ładowanie tu jakiegoś warunku wskazuje na to, że czegoś nie zrozumiałeś podczas czytania książki/kursu.

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.