matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenC/C++C++ Adressbuch: Konstruktor
Foren für weitere Studienfächer findest Du auf www.vorhilfe.de z.B. Astronomie • Medizin • Elektrotechnik • Maschinenbau • Bauingenieurwesen • Jura • Psychologie • Geowissenschaften
Forum "C/C++" - C++ Adressbuch: Konstruktor
C++ Adressbuch: Konstruktor < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

C++ Adressbuch: Konstruktor: Frage (reagiert)
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 10:49 So 18.12.2005
Autor: bastardbychoice

Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
[]http://www.developerboard.de/viewtopic.php?t=280

Tach!
Ich muß ein Adressbuch inkl. Terminen in C++ erstellen.
Bisher ahbe ich Folgendes:


#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

//     Variablendeklaration

string nachn, vorn, str, hsnr, plz, ort, telnr, email;
string uName, uArt;
string gebDat, geschl, hobby;
string nameEntf;
string jn;
int n, i, eing;

/*
###############################################################
#                   Oberklasse Kontakt                        #
###############################################################
*/

class Kontakt{          
      public:
            
      
      public:
           Kontakt();
          
      public:
           void start();
          
};

//    Default-Konstruktor der Klasse Kontakt

Kontakt::Kontakt() {
              nachn="";
              vorn="";
              str="";
              hsnr="";
              plz="";
              ort="";
              telnr="";
              email="";
              }
      
/*
#################################################################
#               Unterklasse KontaktDienst                       #
#################################################################        
*/

class KontaktDienst:public Kontakt{
      
      public:
             KontaktDienst();
            
};

//       Default-Konstruktor der Unterklasse KontaktDienst

KontaktDienst::KontaktDienst(){
        uName = "";
        uArt = "";
        }
        
        
/*
##################################################################
#                Unterklasse KontaktPrivat                       #
##################################################################
*/        
        
class KontaktPrivat:public Kontakt{
      
      public:
             KontaktPrivat();
            
};

//      Default-Konstruktor der Unterklasse KontaktPrivat

KontaktPrivat::KontaktPrivat(){
        gebDat = "";
        geschl = "";
        hobby = "";
        }
        

/*
##################################################################
#         Methode 'kanlegen', die neue Kontakte anlegt           #
##################################################################
*/


void kanlegen(){
     cout << "Bitte Nachnamen eingeben:  ";
     cin >> nachn;
     cout << "Bitte Vornamen eingeben:  ";
     cin >> vorn;
     cout << "Bitte Strasse eingeben:  ";
     cin >> str;
     cout << "Bitte Hausnummer eingeben:  ";
     cin >> hsnr;
     cout << "Bitte Postleitzahl eingeben:  ";
     cin >> plz;
     cout << "Bitte Wohnort eingeben:  ";
     cin >> ort;
     cout << "Bitte Telefonnummer eingeben:  ";
     cin >> telnr;
     cout << "Bitte eMail-Adresse eingeben:  ";
     cin >> email;
    
     cout << "Kontakt namens '" << nachn << "' [mm] angelegt\n"; [/mm]
    
     cout << "Wollen Sie weitere [mm] \x8Enderungen durchf\x81hren? [/mm]   (j / [mm] n)\n\n"; [/mm]
     cin >> jn;
     //if (jn == "j") {Kontakt:start();}
     //else cout << "Bis bald!";
     system("PAUSE");
     }


/*
###################################################################
#             Methode 'tanlegen', die neue Termine anlegt         #
###################################################################
*/


void tanlegen(){
     cout << "Zu welchem Kontakt wollen Sie einen Termin anlegen?  ";
     cin >> n;
    
     system("PAUSE");
     }
    

/*
###################################################################
#    Methode 'ausgeben', die alle Kontakte mit Terminen ausgibt   #
###################################################################
*/


void ausgeben(){
     //for(i=0; i<kon[].length; i++){
              //cout << kon[i];
    
     //}
     }
    
void delkon(){
     cout << "Geben Sie den Namen des Kontakts ein, den Sie entfernen [mm] wollen:\n\n"; [/mm]
     cin >> nameEntf;
     for (i=0; i<50; i++){
         if (nameEntf == nachn.kon[i]){
                      nachn.kon[i] = NULL;
                      }
         else cout << "Kontakt nicht vorhanden!";
         }
         }
    


/*
##################################################################
#          Methode 'start', die das Menü darstellt               #
##################################################################
*/


void start(){
     cout << "Adressbuch & [mm] Terminverwaltung\n\n"; [/mm]
     cout << "Neuen Kontakt anlegen :                 [mm] 1\n"; [/mm]
     cout << "Termin zu Kontakt anlegen:              [mm] 2\n"; [/mm]
     cout << "Entfernen eines Kontakts / Termins:     [mm] 3\n"; [/mm]
     cout << "Suchen eines Kontakts / Termins:        [mm] 4\n"; [/mm]
     cout << "Auflistung aller Kontakte mit Terminen: [mm] 5\n\n"; [/mm]
     }
  

          
      
      int main()
      {
         Kontakt kon[50];
         start();
         cin >> eing;
         switch(eing){
             case 1:{
                  cout << "Neuen Kontakt [mm] anlegen:\n\n"; [/mm]
                  kanlegen();
                  break;
                  }
             case 2:{
                  cout << "Neuen Termin [mm] anlegen:\\n"; [/mm]
                  //Kontakt:tanlegen();
                  break;
                  }
             case 3:{
                  delkon();      
                  break;
                  }
             case 4:{
                  cout << "Sie wollen einen Kontakt / Termin [mm] suchen.\n"; [/mm]
                  //Kontakt:ktsuchen();
                  break;
                  }
             case 5:{
                  cout << "Sie wollen alle Kontakte mit Terminen [mm] ausgeben.\n"; [/mm]
                  //Kontakt:ausgeben();
                  break;
                  }
             default:{
                  cout << "Diese Funktion ist nicht [mm] verfuegbar.\n"; [/mm]
                  }
         system("PAUSE");
         return (0);
}  
}


Mein Problem:

Ich kriegs nicht hin, wie man ein Objekt anlegt.
Es sollen max. 50 Objekte anzulegen sein.
Das Einlesen von Nachname usw. klappt ja, aber wie bekomme ich diese Daten in ein Objekt?

Stimmt außerdem die Syntax in der Methode delkon, in der versucht wird, den Nachnamen (und alle anderen Daten des Kontakts, ist nur noch nicht implementiert) auf NULL zu setzen)?

Danke im voraus!



        
Bezug
C++ Adressbuch: Konstruktor: Antwort
Status: (Antwort) fertig Status 
Datum: 14:02 Mo 19.12.2005
Autor: Karl_Pech

Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)

Hallo b.b.c.,


[willkommenir]


Wenn Du das nächste Mal hier etwas fragst, so wäre es nett, wenn Du nur die Teile des Codes hier reinstellen würdest, die für dein Problem relevant sind.


> void delkon(){
>       cout << "Geben Sie den Namen des Kontakts ein, den
> Sie entfernen [mm]wollen:\n\n";[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)


>       cin >> nameEntf;
>       for (i=0; i<50; i++){


for(int i = 0; i< 50; i++)


oder hattest Du i schon irgendwo deklariert?



>           if (nameEntf == nachn.kon){
>                        nachn.kon = NULL;


Tut mir Leid, aber mit kon kann ich nicht so viel anfangen, ist das ein Standard-Attribut von 'string'?


>                        }
>           else cout << "Kontakt nicht vorhanden!";
>           }
>           }
>       
>
>
> /*
>
> [i][i][i]> Ich kriegs nicht hin, wie man ein Objekt anlegt.
> Es sollen max. 50 Objekte anzulegen sein.
> Das Einlesen von Nachname usw. klappt ja, aber wie bekomme
> ich diese Daten in ein Objekt?


Dein 50 Objekte könntest Du z.B. so erzeugen:


1:
2: Kontakt contacts[49];



Wobei dabei allerdings dein Default-Konstruktor (ohne Parameter) aufgerufen wird. Willst Du einen anderen Konstruktot benutzen, kommst Du um eine Schleifenkonstruktion wohl nicht umher:


1:
2: Kontakt* contacts[50]; // Array von Zeigern auf Objekte vom Typ Kontakt
3: for(int k = 0; k < 50; k++)
4:  contacts[k] = new Kontakt(/*(*)*/); // (*): Hier stehen Argumente, die Du
5: // nicht an den Default-Konstruktor übergeben kannst.



Und wenn Du z.B. auf ein Objekt zugreifen willst, geht das z.B. so


1:
2: contacts[34].irgendwas = "etwas";



Aber so wie Du das gemacht hast, hättest Du nach dem Erzeugen


50 Kontakt-Objekte, die alle auf die gleichen globalen Variablen zugreifen. Das heißt deine Methode delkon() kann gar nicht indivuell mit einem Objekt umgehen, weil es stattdessen auf global deklarierte Variablen zugreift. Und das willst Du doch bestimmt nicht. Du solltest dafür sorgen, daß jedes Objekt seine eigenen Attribute ("öffentlich/private/... Variablen") besitzt. Dazu verschiebst Du diese Variablendeklarationen:


> //     Variablendeklaration
>  
> string nachn, vorn, str, hsnr, plz, ort, telnr, email;
>  string uName, uArt;
>  string gebDat, geschl, hobby;
>  string nameEntf;
>  string jn;
>  int n, i, eing;
>  


in deine Klassendeklaration:


> class Kontakt{          
> public:
> string nachn, vorn, str, hsnr, plz, ort, telnr, email;
>  string uName, uArt;
>  string gebDat, geschl, hobby;
>  string nameEntf;
>  string jn;
>  int n, i, eing;
>
>             Kontakt();
>            
> public:
>             void start();
>            
> };


(Das ist die Idee; ob's auf Anhieb kompiliert ist eine andere Sache ;-) hab' schon einige Zeit nicht mehr programmiert... :(   )



Viele Grüße
Karl





Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]