Prywatne dane w klasie

Prywatne dane w klasie
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

Witam, chciałbym się dowiedzieć jak można się dostać się do prywatnych danych zadeklarowanych w klasie?

KA
  • Rejestracja: dni
  • Ostatnio: dni
0

metodami tejże klasy, albo poprzez zaprzyjaźnienie :)

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

A można by prosić przykład jakiś?

szymczak1503
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

funkcje skladowe

KA
  • Rejestracja: dni
  • Ostatnio: dni
2

POdstawy klas, proponuję jakąś książk/kurs, rozdział o klasach i tam znajdziesz rozwiazanie.

MY
  • Rejestracja: dni
  • Ostatnio: dni
0

http://ideone.com/ZPuZS

Kopiuj
#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.

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 25
0

public:

void poprawa()
{
imie.swap(nazwisko), o to chodziło?
}

allocer
  • Rejestracja: dni
  • Ostatnio: dni
0
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.

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.