[C++] dostęp do składników prywatnych klasy
Ostatnio zmodyfikowano 2014-03-27 20:11
mifasiek Temat założony przez niniejszego użytkownika |
[C++] dostęp do składników prywatnych klasy » 2014-03-27 00:13:12 Witam, mam problem z dostępem do składników klasy prywatnej Student w definicji przeładowania operatorowego. Poniżej zamieszczam kod z publicznymi składnikami. #include <iostream> #include <fstream> using namespace std;
class Student { private: char imie[ 20 ]; char nazwisko[ 20 ]; int wiek; public: Student( const char * a = "", const char * b = "", int c = 0 ) { strcpy( imie, a ? a: "" ); strcpy( nazwisko, b ? b: "" ); wiek = c; } };
class Matrix { public: int k; Student * wsk; Student * twsk; Matrix( int k ) { wsk = new Student[ k ]; twsk = & wsk[ 0 ]; } };
int n; int liczba() { cout << "Podaj liczbe studentow: "; cin >> n; return n; }
ostream & operator <<( ostream & ekran, Matrix & t ) { for( int i = 0; i < n; i++ ) { ekran << "\nStudent nr " << i + 1 << endl; ekran << "Imie: " << t.twsk[ i ].imie << endl; ekran << "Nazwisko: " << t.twsk[ i ].nazwisko << endl; ekran << "Wiek: " << t.twsk[ i ].wiek << endl; } return ekran; }
int main() { int l; char im[ 20 ], naz[ 20 ]; liczba(); Matrix tablica( n ); for( int i = 0; i < n; i++ ) { cout << "\n" << "Wprowadz imie: "; cin >> im; cout << "Wprowadz nazwisko: "; cin >> naz; cout << "Wprowadz wiek: "; cin >> l; Student osoba( im, naz, l ); tablica.twsk[ i ] = osoba; } cout << tablica; ofstream zapisz; zapisz.open( "t.txt" ); zapisz << tablica; zapisz.close(); system( "pause" ); }
Program musi mieć koniecznie klasę student, matrix oraz przeładowanie operatorowe, problem w tym, że nie wiem jak dobrać się do składników klasy student umieszczonych w dynamicznej tablicy obiektów student |
|
michal11 |
» 2014-03-27 02:08:50 Wyskakują ci jakieś błędy ? Ja bym to zrobił funkcjami (set i get) w zależności od tego co che zmieniać a co pokazywać. |
|
OczkoSX |
» 2014-03-27 07:12:12 |
|
OczkoSX |
» 2014-03-27 07:13:18 Albo możesz ustawić deklarację przyjaźni między klasą a funkcją |
|
Hipochondryk |
» 2014-03-27 07:25:11 składniki są prywatne więc nie masz dostępu do nich spoza klasy. Są dwa rozwiązania - przyjaźń lub metody. |
|
OczkoSX |
» 2014-03-27 07:43:11 Właśnie te dwie metody zostały wyżej wymienione ;) |
|
mifasiek Temat założony przez niniejszego użytkownika |
» 2014-03-27 09:27:30 mam błąd w tej linii: ekran << "Imie: " << t.twsk[ i ].imie << endl;
próbowałem za pomocą metod poprzez wskaźnik i referencje, bez efektu, proszę o pomoc
|
|
OczkoSX |
» 2014-03-27 13:12:10 Czemu t.twsk ? nazwa_obiektu.imie powinno być, czyli np. ObiektStudent[0].imie |
|
« 1 » 2 |