Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Konstruktor, Destruktor

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
15.05.2006, 18:27 Uhr
DragonShaolin



Hi,

ich muss wiedermal was für die UNI Programmieren, leider hab ich grad ein Problem bei Klassen, eher gesagt bei dem Konstruktor und Destruktor.

Erstmal die Aufgabenstellung:
www.fbi.h-da.de/fileadmin/personal/j.arz/PG2/PG2-SS06-Aufgabe3.htm


Ich hab noch nicht viel programmiert, aber wollte es schonmal testen ob der Konstruktor oder Destruktor geht, leider bekomme ich diese Fehlermeldung hier.

1>xxx\frau.cpp(10) : error C2512: 'Mensch' : no appropriate default constructor available



Hier mein Code bis jetzt:

Frau.cpp

C++:
#include <iostream>
#include "frau.h"
#include "mann.h"
#include "mensch.h"

using namespace std;


Frau::Frau(char *n)
{

    name = new char(80);
    name = n;

}


Frau::~Frau(){}




frau.h

C++:
#ifndef header_frau
#define header_frau

#include "Mensch.h"


class Frau : public Mensch                        // Klasse Frau der Ausbaustufe 2
{
public:
               Frau(char *);                    // Konstruktor, der den Namen des Menschen als String mitbringt
               virtual ~Frau( );                // Destruktor
               void kind (int, char *);            // Erzeugung (= Geburt) des n-ten Kindes mit Namen
               void heirat(char *);                // Heirat mit dem Mann mit dem mitgegebenen Namen
               void stirbtKind(int);            // Tot des n-ten Kindes (n als int-Parameter)
               void stirbtEhemann(void);        // Tot des Ehemanns
               void zeige(void);                // Zeigt Ehemann und Kinder (soweit existieren) auf dem Bildschirm

protected:
               Mensch * ehemann;                // Zeiger auf den Ehemann; 0, falls nicht vorhanden
               Mensch * kinder[10];                // Array von Zeigern auf die Kinder; 0, falls nicht vorhanden
};



#endif




Mensch.h

C++:
#ifndef header_mensch
#define header_mensch

class Mensch                                // Klasse Mensch der Ausbaustufe 2
{
public:
               char * getName( );            // Returnt einen Zeiger auf den Namen
               Mensch(char *);                // Konstruktor, der den Namen als String mitbringt
               virtual ~Mensch( );            // Destruktor

protected:
               char *name;//[80];                // Der Name (Vor- und Zuname eines Menschen) als String
};





#endif



main.cpp

C++:
#include <iostream>
#include "frau.h"
#include "mann.h"
#include "mensch.h"

using namespace std;


void main()
{



}



in den anderen Files steht noch nichts drinnen, daher brauche ich sie auch nicht zu posten.



Woran liegt jetzt der fehler, ich dachte man kann so den konstruktor aufrufen?

Besten Dank.

VLG,
Cyrill
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.05.2006, 19:07 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Sehe ich das richtig: Du willst die Klassen "Mann" und "Frau" von einer Klasse "Mensch" ableiten, die du erst nach diesen beiden definierst?
Dieser Post wurde am 15.05.2006 um 19:08 Uhr von Reyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.05.2006, 19:12 Uhr
DragonShaolin



Ja, die Headerdateien waren Vorgaben. Siehe Aufgabenstellung.


www.fbi.h-da.de/fileadmin/personal/j.arz/PG2/PG2-SS06-Aufgabe3.htm


mein Problem ist wie ich den Konstrukter und Dekonstruktor für Frau aufrufe.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.05.2006, 19:25 Uhr
DragonShaolin



Also das hat jetzt nur noch gefehlt in der mensch.cpp... lol


C++:
Mensch::Mensch() { }

Mensch::~Mensch() { }

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.05.2006, 22:13 Uhr
ao

(Operator)


Die Klasse Mensch und die Konstruktoren, die sie hat, sind doch vorgegeben. Ein Konstruktor ohne Namen ergibt auch gar keinen Sinn.

ao


C++:
// frau.cpp
#include <iostream>
#include "frau.h"
#include "mann.h"
#include "mensch.h"

using namespace std;


Frau::Frau(char *n)
: Mensch (n)  // <<<--- das hier fehlt.
{

    name = new char(80);
    name = n;

}


Dieser Post wurde am 15.05.2006 um 22:18 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.05.2006, 22:15 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.05.2006, 16:45 Uhr
Tommix



Hallo,

Zitat von ao:

C++:
...
Frau::Frau(char *n)
: Mensch (n)  // <<<--- das hier fehlt.
{

    name = new char(80);  // <<<--- und das ist dann zuviel und außerdem noch falsch
    name = n;

}



- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.05.2006, 17:37 Uhr
ao

(Operator)



C++:
class Frau : public Mensch                        // Klasse Frau der Ausbaustufe 2
{
public:
    // ...

protected:
    Mensch * ehemann;                // Zeiger auf den Ehemann; 0, falls nicht vorhanden
     // ^------ Besser: Mann * ehemann, sonst könnte sie auch mit einer Frau verheiratet sein.

public:
    void heirat(char *);                // Heirat mit dem Mann mit dem mitgegebenen Namen
    // Besser: void heirat (const Mann *); Der Mann wird ja nicht erst bei der
    // Hochzeit konstruiert (dazu bräuchte man den Namen), sondern er
    // existiert schon als Instanz.


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.05.2006, 18:26 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von ao:


C++:
// Besser: Mann * ehemann, sonst könnte sie auch mit einer Frau verheiratet




Wieso, geht doch inzwischen auch?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.05.2006, 18:43 Uhr
~Ganael
Gast


Mensch sind Frauen kompliziert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: