Problem z private: w klasie
Ostatnio zmodyfikowano 2015-07-06 09:41
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: #include <iostream> #include "klasa.h" using namespace std;
int main() { B obj; obj.show(); return 0; }
klasa.h: 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: #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 |
|
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 void B::show() { cout << a << " " << b; }
próbujesz wyświetlić zmienną prywatną a do której nie masz dostępu z klasy B. |
|
« 1 » |