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

Problem z private: w klasie

Ostatnio zmodyfikowano 2015-07-06 09:41
Autor Wiadomość
BadBullPL
Temat założony przez niniejszego użytkownika
Problem z private: w klasie
» 2015-07-06 07:30:02
To kod który zobrazuje problem:
main.cpp:
C/C++
#include <iostream>
#include "klasa.h"
using namespace std;

int main()
{
    B obj;
    obj.show();
    return 0;
}
klasa.h:
C/C++
class A
{
protected:
    int a;
public:
    A( int = 1 );
    void show();
};

class B
    : public A
{
    int b;
public:
    B( int = 1, int = 2 );
    void show();
};
klasa.cpp:
C/C++
#include <iostream>
#include "klasa.h"
using namespace std;

A::A( int aa )
{
    a = aa;
}

void A::show()
{
    cout << a;
}

B::B( int aa, int bb )
    : A( aa )
{
    b = bb;
}

void B::show()
{
    cout << a << " " << b;
}
i gdy w pliku klasa.h wykomentujemy tą linijkę:
protected:
 to wtedy są błędy:
C:\Users\Admin\Desktop\Nowy folder\klasa\klasa.h: In member function 'void B::show()':
C:\Users\Admin\Desktop\Nowy folder\klasa\klasa.h:4: error: 'int A::a' is private
C:\Users\Admin\Desktop\Nowy folder\klasa\klasa.cpp:22: error: within this context
Process terminated with status 1 (0 minutes, 0 seconds)
2 errors, 0 warnings
i teraz pytanie dlaczego tak jest bo przecież gdy składnik klasy jest prywatny to dzięki publicznej metodzie która należy do tej klasy można uzyskać dostęp do tego składnika więc nie powinno być problemu.
EDIT:
Dzięki
P-134369
darko202
» 2015-07-06 09:41:05
źle czytasz log - błąd masz w
C:\Users\Admin\Desktop\Nowy folder\klasa\klasa.h: In member function 'void B::show()':

a tam
C/C++
void B::show()
{
    cout << a << " " << b;
}
próbujesz wyświetlić zmienną prywatną a do której nie masz dostępu z klasy B.
P-134370
« 1 »
  Strona 1 z 1