c++ Include/Klassenproblem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Kleines Übersichtliches Beispiel:

    main.cpp

    Quellcode

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. #include "person.h"
    5. int main(int argv, char **argc)
    6. {
    7. person *max = new person("Max", "Mustermann", 23);
    8. cout << endl;
    9. cout << "Angaben zur Person:" << endl;
    10. max->print();
    11. cout << endl;
    12. delete max;
    13. return 0;
    14. }
    Alles anzeigen


    person.h

    Quellcode

    1. #ifndef _PERSON_H
    2. #define _PERSON_H
    3. #include <iostream>
    4. #include <string>
    5. using namespace std;
    6. class person
    7. {
    8. public:
    9. person(string nname1, string nname2, unsigned int nage);
    10. ~person(void);
    11. void print(void);
    12. private:
    13. string name1;
    14. string name2;
    15. unsigned int age;
    16. };
    17. #endif
    Alles anzeigen


    person.cpp

    Quellcode

    1. #include "person.h"
    2. person::person(string nname1, string nname2, unsigned int nage)
    3. {
    4. name1 = nname1;
    5. name2 = nname2;
    6. age = nage;
    7. cout << "Person wurde erstellt" << endl;
    8. }
    9. person::~person(void)
    10. {
    11. cout << "Person wurde geloescht" << endl;
    12. }
    13. void person::print(void)
    14. {
    15. cout << " * Vorname: " << name1 << endl;
    16. cout << " * Nachname: " << name2 << endl;
    17. cout << " * Alter: " << age << endl;
    18. }
    Alles anzeigen




    Das Programm gibt folgende Ausgabe:

    Quellcode

    1. Person wurde erstellt
    2. Angaben zur Person:
    3. * Vorname: Max
    4. * Nachname: Mustermann
    5. * Alter: 23
    6. Person wurde geloescht


    Hoffe ich konnte damit helfen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von pocky ()

  • Und warum folgendes in
    person.h

    Quellcode

    1. #include <iostream>
    2. #include <string>
    3. using namespace std; // diese Zeile in einer .h Datei kann dir bei grösseren Projekten schlaflose Tage und Nächte bereiten

    und nicht in
    person.cpp ?

    Meist ist es vorteilhaft die Header nur da anzuführen wo die auch genutzt werden.

    die 2.Zeile fehlt in person.h

    Quellcode

    1. #ifndef _PERSON_H
    2. #define _PERSON_H
    3. class person
    4. {
    5. public:
    6. person(string nname1, string nname2, unsigned int nage);
    7. ~person(void);
    8. void print(void);
    9. private:
    10. string name1;
    11. string name2;
    12. unsigned int age;
    13. };
    14. #endif
    Alles anzeigen


    MfG bcc-fan

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von bcc-fan ()

  • aber person.h muss doch schon wissen was ein string ist. es ist ja nicht gesagt das in main.cpp schon string und iostream includiert werden
    hoffe ich irre nicht ^^"


    bcc-fan schrieb:

    die 2.Zeile fehlt in person.h

    <---- Verzeihung, habs oben ausgebessert

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von pocky ()

  • Wenn ich #include <string> weglassen (nur in dier person.h), und in person.cpp einfüge, bekomme ich folgenden fehler:

    Quellcode

    1. error: 'string' does not name a type
    ( <---- person.h )

    Bin gerade etwas verunsichert, aber irgendwie muss der doch natürlich wissen was ein string ist, wenn im konstruktor strings benötigt werden.
  • Ich werde das noch mal unter verschiedenen Compilern testen.

    Es ist möglich das einige Compiler bezüglich des string-Headers zicken. Das sollte aber eher alte C-Compiler betreffen und keine C++.
    Grund dafür ist das der string.h-Header erst später zu C hinzugefügt wurde.

    Getestet free bcc 5.5, dmc 8.52 und gcc 4.4.1
    main.cpp

    Quellcode

    1. #include <iostream>
    2. using namespace std;
    3. #include "person.h" // selbstgeschriebene Header in der Regel unter den anderen!
    4. int main(int argv, char **argc)
    5. {
    6. person *max = new person("Max", "Mustermann", 23);
    7. cout << endl;
    8. cout << "Angaben zur Person:" << endl;
    9. max->print();
    10. cout << endl;
    11. delete max;
    12. return 0;
    13. }
    Alles anzeigen


    person.h

    Quellcode

    1. #ifndef _PERSON_H
    2. #define _PERSON_H
    3. class person
    4. {
    5. public:
    6. person(string nname1, string nname2, unsigned int nage);
    7. ~person(void);
    8. void print(void);
    9. private:
    10. string name1;
    11. string name2;
    12. unsigned int age;
    13. };
    14. #endif
    Alles anzeigen


    person.cpp

    Quellcode

    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4. #include "person.h"
    5. person::person(string nname1, string nname2, unsigned int nage)
    6. {
    7. name1 = nname1;
    8. name2 = nname2;
    9. age = nage;
    10. cout << "Person wurde erstellt" << endl;
    11. }
    12. person::~person(void)
    13. {
    14. cout << "Person wurde geloescht" << endl;
    15. }
    16. void person::print(void)
    17. {
    18. cout << " * Vorname: " << name1 << endl;
    19. cout << " * Nachname: " << name2 << endl;
    20. cout << " * Alter: " << age << endl;
    21. }
    Alles anzeigen


    erfolgreich.

    MfG bcc-fan