Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Frischling
Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#pragma once #include <iostream> class Din_datum { public: void set_date(void); void get_date(void); protected: int m_jahr, m_monat, m_tag; }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include "Din_datum.h" using std::cout; using std::cin; using std::endl; void Din_datum::get_date() { cout<<m_jahr<<"-"<<m_monat<<"-"<<m_jahr<<endl; } void Din_datum::set_date() { cout<<"Jahr: "; cin>>m_jahr; cout<<"Monat: "; cin>>m_monat; cout<<"Tag: "; cin>>m_tag; cin.get(); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
#pragma once #include "din_datum.h" class Am_datum : public Din_datum { public: void get_date(void); }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
#include "Am_datum.h" using std::cout; using std::endl; void Am_datum::get_date(void) { std::cout<<m_monat<<"/"<<m_tag<<"/"<<m_jahr<<std::endl; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
#pragma once #include "am_datum.h" class De_datum : private Am_datum { public: Din_datum::set_date; Din_datum::get_date; Am_datum::get_date; void get_date_new(void); }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
#include "De_datum.h" using std::cout; using std::endl; void De_datum::get_date_new(void) { cout<<m_tag<<"."<<m_monat<<"."<<m_jahr<<endl; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include "De_datum.h" using std::cin; int main(void) { De_datum* obj_de_datum = new De_datum(); obj_de_datum->set_date(); obj_de_datum->Am_datum::get_date(); obj_de_datum->get_date_new(); cin.get(); } |
C-/C++-Quelltext |
|
1 2 3 |
class De_datum : private Am_datum { }; |
C-/C++-Quelltext |
|
1 2 3 4 |
class De_datum
{
Am_datum datum;
};
|
Frischling
Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr
wir sollen beide Funktionen aufrufen können. Geht das denn überhaupt irgendwie mit privater vererbung?
EDIT: macht man Hat-eine-Beziehungen nicht über Instanzen als Member der Klasse?
Frischling
Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class De_datum : private Am_datum { public: using Am_datum::get_date; using Din_datum::set_date; void get_date_new(void); }; obj_de_datum->set_date(); // ruft Din_datum::set_date() auf obj_de_datum->get_date(); // ruft Am_datum::get_date() auf obj_de_datum->Am_datum::get_date(); // geht nicht, von außen kein Zugriff auf die Basisklasse |
Frischling
Beruf: Informationstechnischer Assistent Fachrichtung AE, 2. Jahr
Will heißen, man kann das mit using sichtbar machen, aber nicht explizit mit dem ::-Operator darauf zugreifen, um das Doppeldeutigkeitsproblem zu lösen?
Mein Programmierlehrer ist grad etwas dickköpfig und meint, mit Visual Studio 6 und dem Borland Builder funktioniert das genau so wie in meinem Code und meint jetzt, VS10 würde das vielleicht nicht vernünftig implementieren oder so. Gibts da vllt ne vernünftige Quelle, die ihn überzeugen würde?
Zitat von »ISO/IEC 14882:2003(E) §11.2 Absatz 1«
If a class is declared to be a base class for another class using the private access specifier, the public and protected members of the base class are accessible as private members of the derived class.
Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von »dot« (31.01.2011, 14:17)
Werbeanzeige