Witam, chciałbym się dowiedzieć jak można się dostać się do prywatnych danych zadeklarowanych w klasie?
Prywatne dane w klasie
- Rejestracja: dni
- Ostatnio: dni
- Postów: 25
- Rejestracja: dni
- Ostatnio: dni
metodami tejże klasy, albo poprzez zaprzyjaźnienie :)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 25
A można by prosić przykład jakiś?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 16
funkcje skladowe
- Rejestracja: dni
- Ostatnio: dni
POdstawy klas, proponuję jakąś książk/kurs, rozdział o klasach i tam znajdziesz rozwiazanie.
- Rejestracja: dni
- Ostatnio: dni
#include <iostream>
using namespace std;
class Person
{
private:
int wiek;
string imie,nazwisko;
public:
void wypiszDane(int wiek, string imie, string nazwisko)
{
wiek = wiek;
imie = imie;
nazwisko = nazwisko;
cout << "Osoba nazywa sie: " << imie << " " << nazwisko << " oraz ma " << wiek << " lat.";
}
};
int main()
{
Person p;
p.wypiszDane(36,"Mystogan","Mystoganowski");
}
To wersja poprawiona :P. Powaliło mi się z C# wcześniej. Modyfikuję dane prywatne przy pomocy funkcji składowej.
Jeżeli chcesz prywatne dane modyfikować poza klasą to musisz skorzystać z zaprzyjaźnionych funkcji (IMO to bez sensu skoro je robisz prywatne to tak jak rzutować const_cast, żeby usunać stałą.. to po co robisz ją stałą?) lub zrobić te dane publiczne - wtedy nie ma problemu. Możesz też zrobić je chronione i modyfikować w klasie pochodnej przy pomocy tzw. dziedziczenia.
Uwaga a teraz zadanie dla Ciebie: napisz funkcję składową, która zamieni imie z nazwiskiem i na odwrót.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 25
public:
void poprawa()
{
imie.swap(nazwisko), o to chodziło?
}
- Rejestracja: dni
- Ostatnio: dni
Mystogan napisał(a):
Jeżeli chcesz prywatne dane modyfikować poza klasą to musisz skorzystać z zaprzyjaźnionych funkcji (IMO to bez sensu skoro je robisz prywatne to tak jak rzutować const_cast, żeby usunać stałą.. to po co robisz ją stałą?) lub zrobić te dane publiczne - wtedy nie ma problemu. Możesz też zrobić je chronione i modyfikować w klasie pochodnej przy pomocy tzw. dziedziczenia.
A z Katowic do Częstochowy jedzie się przez Białystok.
Jeżeli zrobi dane publiczne to nie ma hermetyzacji. Stosowanie dziedziczenia tylko po to, żeby dostać się do pól w klasie nadrzędnej? Przecież to totalnie bez sensu.
@michcio19923 - gettery i settery oraz podstawy obiektowości.