Fehler
lima-city → Forum → Programmiersprachen → C/C++ und D
ahnung
angabe
ballbesucher
bedeuten
break
ebenfall
error
fehler
folgendes schreiben
friend
kat
konvertierung
lehrer
meinung
methode
partnerwahl
schueler
stattdessen
unterschied
- 
    
    Was bedeuted der fehler??
 
 error C2243: 'Typumwandlung': Konvertierung von 'Schueler *' zu 'Person *' ist bereits vorhanden, aber es kann nicht darauf zugegriffen werden.
 
 
 mfg Itchy die Maus
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage 
- 
    
    hmm kann jetzt noch nix konkretes sagen
 poste doch mal den code
- 
    
    Naja schwer zu sagen, was f?r ne Typumwandlung da hier machst, au?erdem Glaube ich auch das du dich irgendwie "verpointert" hast
- 
    
    nagut vielleicht findest ja den fehler..
 
 #include <iostream>
 #include <string>
 
 using namespace std;
 
 class Person
 {
 const char Geschlecht;
 string Name;
 Person *next;
 public:
 virtual void print (void);
 Person (char G,string N,Person*);
 friend void Partnerwahl (Person*);
 };
 
 void Person::print (void)
 {
 cout<<Name;
 }
 
 Person::Person (char G, string N, Person *hptr):Geschlecht(G),Name(N),next(hptr){}
 
 class Schueler:Person
 {
 int KatNr;
 string Klasse;
 public:
 Schueler (char G,string N,string K,int Kat,Person*);
 void print (void);
 };
 
 void Schueler::print (void)
 {
 Person::print();
 cout << "(" << Klasse << ")";
 }
 
 Schueler::Schueler (char G, string N,string K, int Kat, Person *hptr):Person(G,N,hptr),Klasse(K),KatNr(Kat){}
 
 
 class Lehrer:Person
 {
 string Kurzzeichen;
 public:
 Lehrer (char G,string N,string K,Person*);
 void print (void);
 };
 
 void Lehrer::print (void)
 {
 Person::print();
 cout << "(" << Kurzzeichen << ")";
 }
 
 Lehrer::Lehrer (char G, string N, string K, Person *hptr):Person(G,N,hptr),Kurzzeichen(K){}
 
 void main (void)
 {
 Person *Ballbesucher = NULL;
 char Pa='j',G;
 string N,K;
 int Kat;
 
 cout << "PersArt Geschlecht Name Kurzzeichen/Klasse KatNr"<<endl;
 cin >> Pa;
 
 while(Pa != 'n')
 {
 switch (Pa)
 {
 case 's': {
 cin >> G >> N >> K >> Kat;
 Ballbesucher = new Schueler (G,N,K,Kat,Ballbesucher);
 }
 break;
 case 'l': {
 cin >> G >> N >> K;
 Ballbesucher = new Lehrer (G, N, K, Ballbesucher);
 }
 break;
 }
 Ballbesucher->print();
 cout << "Weiter?(j/n):\t";
 cin >> Pa;
 }
 Partnerwahl (Ballbesucher);
 }
 
 void Partnerwahl (Person *b)
 {
 Person *w = b;
 while (b && w)
 while (b->Geschlecht != 'm') b = b->next;
 while (w->Geschlecht != 'w') w = w->next;
 if (b && w)
 {
 cout << b->Name << "&" << w->Name;
 b = b->next;
 w = w->next;
 }
 }
 
 mfg Itchy die Maus
- 
    
    Der Fehler m?sste meiner Meinung nach hier liegen:
 class Schueler:Person
 Stattdessen solltest du folgendes schreiben:
 class Schueler: public Person
 Der Unterschied:
 Ohne Angabe von public werden die vererbten Methoden/Eigenschaften automatisch als private vererbt. Das gilt auch f?r den Konstruktor. Es ist dann jedoch kein Zufriff darauf m?glich.
 Bei den anderen abgeleiteten Klassen m?sstest du das dann ebenfalls anpassen.
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage