[C/C++] [C/C++] - Brauche Hilfe bei einfachem C++ programm

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von oida, 5. Juli 2010 .

  1. 5. Juli 2010
    [C/C++] - Brauche Hilfe bei einfachem C++ programm

    Hi ich habe ein kleines problem mit mein Code

    Code:
    # include <iostream>
    # include <string.h>
    # include <string>
    using namespace std;
    
    
    
    class Basic
    {
     private:
     int monat, jahr;
     string name,kreditkartNr;
     
     public:
     Basic(string name, string karteNr, int mn, int j)
     {
     name=name;
     kreditkartNr=karteNr;
     monat=mn;
     jahr=j;
     };
     
     virtual void ausgabe();
    };
    
    class BasicPlusLimit: public Basic
    {
     private:
     double Kredeitlimit;
     
     public:
     BasicPlusLimit(string name, string karteNr, int mn, int j, double limit): Basic(name, karteNr, mn, j),Kredeitlimit(limit){};
     virtual void ausgabe();
    };
    
    class Advanced: public BasicPlusLimit
    {
     private:
     float umsatz;
     
     public:
     Advanced(string name, string karteNr, int mn, int j, double limit, float umsatz): BasicPlusLimit(name,karteNr, mn, j, limit),umsatz(umsatz){};
     virtual void ausgabe();
    };
    
    
    
    void Basic::ausgabe()
    {
     cout << "Inhaber: " << name << "\nKartennummer: " << kreditkartNr << "\nGueltig bis: " << monat <<"/" << jahr << endl;
    };
    
    void BasicPlusLimit::ausgabe()
    {
     Basic::ausgabe();
     cout << "Kreditlimit: " << Kredeitlimit << endl;
    };
    
    void Advanced::ausgabe()
    {
     BasicPlusLimit::ausgabe();
     cout << "Umsaetze: " << umsatz << endl;
    }; 
    
    int main(void)
    {
     Basic *card[3];
     float umsatz[3]={245.5, 1000.0, 75.25};
     
     card[0]=new Basic("Meier1", "2345 3250 1234 0815", 11, 2008);
     card[1]=new BasicPlusLimit("Meier2", "1234 3250 2345 4711", 5, 2009, 3000.0);
     card[2]=new Advanced("Meier3", "3456 3250 4567 8901", 7, 2010, 5000.0, umsatz[3]);
     
     for (int i=0; i<2; i++)
     {
     card[i]->ausgabe();
     cout << "----------------------------" << endl;
     }
     }:
     system("pause");
    } ; 
    
    und mein fehler
    Line 21 expected unqualified-id before ':' token
    Line 21 expected `,' or `;' before ':' token
    Line 81 expected declaration before '}' token

    wieso :?

    Danke schonmal
     
  2. 5. Juli 2010
    AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm

    Code:
    # include <iostream>
    # include <string.h>
    # include <string>
    using namespace std;
    
    
    
    class Basic
    {
    private:
     int monat, jahr;
     string name,kreditkartNr;
     
    public:
     Basic(string name, string karteNr, int mn, int j)
     {
     name=name;
     kreditkartNr=karteNr;
     monat=mn;
     jahr=j;
     };
     
     virtual void ausgabe();
    };
    
    class BasicPlusLimit: public Basic
    {
    private:
     double Kredeitlimit;
     
    public:
     BasicPlusLimit(string name, string karteNr, int mn, int j, double limit): Basic(name, karteNr, mn, j),Kredeitlimit(limit){};
     virtual void ausgabe();
    };
    
    class Advanced: public BasicPlusLimit
    {
    private:
     float umsatz;
     
    public:
     Advanced(string name, string karteNr, int mn, int j, double limit, float umsatz): BasicPlusLimit(name,karteNr, mn, j, limit),umsatz(umsatz){};
     virtual void ausgabe();
    };
    
    
    
    void Basic::ausgabe()
    {
     cout << "Inhaber: " << name << "\nKartennummer: " << kreditkartNr << "\nGueltig bis: " << monat <<"/" << jahr << endl;
    };
    
    void BasicPlusLimit::ausgabe()
    {
     Basic::ausgabe();
     cout << "Kreditlimit: " << Kredeitlimit << endl;
    };
    
    void Advanced::ausgabe()
    {
     BasicPlusLimit::ausgabe();
     cout << "Umsaetze: " << umsatz << endl;
    }; 
    
    int main(void)
    {
     Basic *card[3];
     float umsatz[3]={245.5, 1000.0, 75.25};
     
     card[0]=new Basic("Meier1", "2345 3250 1234 0815", 11, 2008);
     card[1]=new BasicPlusLimit("Meier2", "1234 3250 2345 4711", 5, 2009, 3000.0);
     card[2]=new Advanced("Meier3", "3456 3250 4567 8901", 7, 2010, 5000.0, umsatz[3]);
     
     for (int i=0; i<2; i++)
     {
     card[i]->ausgabe();
     cout << "----------------------------" << endl;
     }
    system("pause");
    } 
    
    Hattest quatsch in der Main Methode stehen
     
  3. 5. Juli 2010
    AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm

    Kannst du mir sagen wo ?
    und wieso wird der name nicht angezeigt und der und die letzte klasse auch nicht ?

    Aber danke

    edit://
    oke name habe ich selber
     
  4. 5. Juli 2010
    AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm

    Code:
    int main(void)
    {
     Basic *card[3];
     float umsatz[3]={245.5, 1000.0, 75.25};
     
     card[0]=new Basic("Meier1", "2345 3250 1234 0815", 11, 2008);
     card[1]=new BasicPlusLimit("Meier2", "1234 3250 2345 4711", 5, 2009, 3000.0);
     card[2]=new Advanced("Meier3", "3456 3250 4567 8901", 7, 2010, 5000.0, umsatz[3]);
     
     for (int i=0; i<2; i++)
     {
     card[i]->ausgabe();
     cout << "----------------------------" << endl;
     }
     [color=red] }:[/color]
     system("pause");
    }[color=red] ;[/color]
    
    In den letzten 3 Zeilen, habs dir Rot eingefärbt.
     
  5. 5. Juli 2010
    AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm

    wieso geht das nicht

    Code:
    void Advanced::ausgabe()
    {
     BasicPlusLimit::ausgabe();
     cout << "Umsaetze: ";
     for (int i=1; i<3;i++)
     {
     cout << umsatz[i]<< " " ;
     };
    }; 
    also bei umsatz mit ?
     
  6. 5. Juli 2010
    AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm

    Was geht nicht ? Du musst schon bissel genauer werden.

    //EDIT Achso ich glaub ich weiß was du meinst, kann dran liegen das du das Array nur local in der Main Methode angelegt hast.

    PS: Weiß ja nicht ob du es für die Schule brauchst aber wenn würde ich mich mal Ordentlich hinten dran hängen. Das hier könnt dir helfen -> Galileo Computing :: C von A bis Z &ndash; 1 Einstieg in C musst ja nicht alles durchmachen aber die ersten Kapitel würden schon helfen
     
  7. 5. Juli 2010
    AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm



    Ich würde mal behaupten, dass das net geht, weil umsatz kein Array ist:

    Code:
    ...
    class Advanced: public BasicPlusLimit
    {
     private:
     [B]float [/B]umsatz;
    ...
    
    Außerdem solltest du dir unbedingt angewöhnen:

    • Objekte, wenn möglich, auf dem Stack anzulegen. Die werden nämlich automatisch gelöscht (google in dem Zusammenhang auch mal nach RAII). Beispiel:
      Code:
      Class object; // Stack
      Class *pObject = new object; // Heap, dynamisch, muss mit delete freigegeben werden!
    • Mit "new" (dynamisch) erzeugte Objekte immer mit delete auch wieder freizugeben
    • Wenn du verstanden hast, wie Arrays funktionieren, Ersatz-Klassen wie std::vector nehmen, die die Speicherverwaltung für dich machen
     
  8. 7. Juli 2010
    AW: [C/C++] - Brauche Hilfe bei einfachem C++ programm

    Darf ich etwas ergänzen?
    Für erstens und zweitens gibt es auto_ptr. std::vector ist ein dynamisches Array und falls man sowas nicht braucht, wäre std::array eine bessere Wahl.
    Die beiden Sachen sind ein Teil vom C++ Technical Report 1 , weshalb man erstmal schauen muss, ob der eigene Compiler diese hat. Oder man nimmt Boost
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.