Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: Wieder mal C++ Problem

  1. #1
    Registriert seit
    26.11.2005
    Beiträge
    225
    Danke
    111
    Erhielt 41 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich hab mal eine Frage zu C++. Wenn ich einem Konstruktor
    einen Parameterwert mitgebe und die Angelegten Klassen über ein
    Pointerarray neu Anlege, wird dann der Konstruktorparameterwert
    jeweils gespeichert oder nicht. Da bei mir im unten angezeigten
    Beispiel bei der Ausgabe typ nur Schrott steht.

    Code:
    Bsp.
    #include<iostream>
    using namespace std;
    
    
    class Medien{
        
        public:
            Medien(char typ[]="Medien");
           // Medien(int 0);
    
            void ausgabe();
    
        protected:
            int signatur;
            char titel[20];
            char typ[10];
            bool status;
    };
    
    
    Medien::Medien(char typ[]){
    
        cout << "\nBitte " << typ << "daten eingeben:"  << endl;
                cout << "\nSignatur:";
                cin >> signatur;
                cout << "\nTitel:";
                cin >> titel;        
                status=true;
                
        
            } 
    
    void Medien::ausgabe(){
                //cout << endl << "start" << "***" << typ << "***" << "ende" << endl;  //TEST
                cout << endl 
                     << signatur 
                     << '\t'
                     << typ     
                     << '\t'     
                     << titel; 
            } 
    
    int main(){
        const int n = 10;  // Speichergröße für jeweiligen Klassentyp
        int m_zae = 0;
        
        
        Medien* ptm[n];
        
    
        
         if(m_zae<n){
           cout << "\n----- Neues Medium! -----" << endl;
           ptm[m_zae]=new Medien();
           m_zae++;
           }
           else{
           cout << "!!!Speicher voll!!!" << endl;
           };
            
         cout << "Medienbestand" << endl;
           for(int j=0; j<m_zae; j++){ 
           ptm[j]->Medien::ausgabe();
           }
                                        
            
        return 0;
    }
    gruß Frank
    "Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher."
    (Albert Einstein - 14.03.1879 - 18.04.1955)
    Zitieren Zitieren Wieder mal C++ Problem  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Das Problem bei deinem Programm ist, dass die Membervariable typ durch den Parameter typ überdeckt wird.

    Wenn du unbedingt für einen Parameter (gilt für lokale Variablen ebenso) den gleichen Namen wie für eine Membervariable verwenden möchtest, musst du auf die Membervariable mittels des this Zeigers zugreifen.

    Also z.B. so:

    Code:
    Medien::Medien(char typ[]){
        strcpy(this->typ, typ);

  3. #3
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Daumen runter


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie Thomas schon sagte, Buchstaben kosten nix und man sollte deshalb EINDEUTIGE Namen und Bezeichner verwenden.

    Ansonsten:

    In einem Constructor sollte man eine Instanz einer Klasse erzeugen aber keine "Dialoge" mit der Oberfläche etc. durchführen. Regel: Buisiness Logic von Präsentation sauber trennen.

    Ein Constructor mit default Parametern ist TABU, eine gute Regel ist, den Standard Constructor sogar private zu machen, damit einem nix uninitialisiert durchrutscht.

    Das Main erzeugt im Original Code nur eine Instanz, die 9 weiteren, die unten per Pointer aufgefufen werden, sind "dangling Pointer", in der Regel führt das zum Absturz.
    Als Freelancer immer auf der Suche nach interessanten Projekten.
    Zitieren Zitieren Ziemlich sonderbar  

Ähnliche Themen

  1. Mal wieder der Bush
    Von zotos im Forum Stammtisch
    Antworten: 11
    Letzter Beitrag: 19.04.2007, 22:27
  2. Mal wieder Not-Aus
    Von Flo im Forum Schaltschrankbau
    Antworten: 10
    Letzter Beitrag: 15.08.2006, 13:02
  3. Störmeldungen...wieder mal
    Von charlie im Forum HMI
    Antworten: 8
    Letzter Beitrag: 04.07.2006, 15:52

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •