Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] dostęp do składników prywatnych klasy

Ostatnio zmodyfikowano 2014-03-27 20:11
Autor Wiadomość
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.

C/C++
#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; // zmienna do pobierania wieku dla obiektów klasy Student
    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
P-107268
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ć.
P-107271
OczkoSX
» 2014-03-27 07:12:12
P-107272
OczkoSX
» 2014-03-27 07:13:18
Albo możesz ustawić deklarację przyjaźni między klasą a funkcją
P-107273
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.
P-107274
OczkoSX
» 2014-03-27 07:43:11
Właśnie te dwie metody zostały wyżej wymienione ;)
P-107275
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
P-107276
OczkoSX
» 2014-03-27 13:12:10
Czemu t.twsk ? nazwa_obiektu.imie powinno być, czyli np. ObiektStudent[0].imie
P-107279
« 1 » 2
  Strona 1 z 2 Następna strona