Jak odziedziczyć klasę z zachowaniem takich samych możliwości dostępu.
Chodzi mi o to w jaki sposób można odziedziczyć z klasy funkcje tak aby jedna w klasie potomnej miała Private dla klasy potomnej a druga miała Public dla klasy potomnej. Dla przykładu metoda getNazwa() chcę żeby mogła być wywoływana w funkcji main() a już metoda getID() chcę żeby była prywatna dla klasy Patyk a dla funkcji main() w ogóle nie wykrywalna.
Da się to jakoś zrobić?
#include <iostream>
using namespace std;
class Item
{
// Zmienne
protected:
string nazwa;
int wytrzymalosc;
int obrazenia;
int ID_Itemu;
private:
int ID; /* UNIKALNY */
// Metody
public:
Item() : wytrzymalosc(-1), obrazenia(1)
{
cout << "Nowy przedmiot!" << endl;
}
Item(string n) : nazwa(n)
{
cout << "Nowy przedmiot!" << endl;
}
string getNazwa()
{
return nazwa;
}
int getWytrzymalosc()
{
return wytrzymalosc;
}
int getObrazenia()
{
return obrazenia;
}
int getID_Itemu()
{
return ID_Itemu;
}
int getID()
{
return ID;
}
};
class Patyk : private Item
{
// Metody
public:
Patyk() : Item()
{
ID_Itemu = 3;
cout << "Nowy patyk!" << endl;
}
Patyk(string name) : Item(name)
{
ID_Itemu = 3;
cout << "Nowy patyk!" << endl;
}
~Patyk()
{
cout << "Patyk zostal usuniety!" << endl;
}
};
int main()
{
Patyk p1("Patyk");
p1.getNazwa();
return 0;
}