Kunstruktor und Destruktor Problem

FBIagent

Erfahrenes Mitglied
Moin,

also wie schon gesagt ich hab ein Problem mit Konstruktor und Destruktor.

[Linker error] undefined reference to `haus_mit_werkstatt::~haus_mit_werkstatt()'
[Linker error] undefined reference to `haus_mit_werkstatt::~haus_mit_werkstatt()'
[Linker error] undefined reference to `haus_mit_werkstatt::~haus_mit_werkstatt()'
ld returned 1 exit status
G:\C++\Test\Makefile.win [Build Error] ["Lern] Error 1

Und hier mal der Code:
Code:
#include <iostream>
using namespace std;

class haus_mit_werkstatt
{
private:
    int geheimnummer;
public:
    int zimmer;

    int tausche_nummer();
    
    haus_mit_werkstatt(int wert1, int wert2);
    ~haus_mit_werkstatt();   
};

int haus_mit_werkstatt::tausche_nummer()
{
    geheimnummer = 7777;
    return geheimnummer;
}

haus_mit_werkstatt::haus_mit_werkstatt(int wert1, int wert2)
{
    geheimnummer = wert1;
    zimmer = wert2;                                       
}

int main()
{
    haus_mit_werkstatt meinButze(7777,2);
    meinButze.~haus_mit_werkstatt();
    return 0;
}

Wo liegt das Problem? Ich seh da irgendwie keins!
Der Fehler tritt auf wenn ich
haus_mit_werkstatt meinButze(7777,2);
meinButze.~haus_mit_werkstatt();
im main drinstehen habe.
Wenn es auskommentiert ist nicht!


THX
MFG FBIagent
 
Okay aber wie soll ich diesen Implementierren in dem was ich gelesen hab steht nur die erläuterung
wie ich den Konstruktor implementiere aber nicht wie ich den Destruktor Implementiere...
geschweige denn das er überhaupt Implementiert werden muss.
 
Um den Destruktor zu Implementieren hab ich mir schon gedacht das man

haus_mit_werkstatt::~haus_mit_werkstatt()
{
}

schreiben muss nur wie wird das gemacht mit dem Destruktor-Code?
Wenn ich so überlege wüsste ich nicht was ich an Destruktor-Code reinschreiben sollte.

THX
MFG FBIagent
 
Aber das ist ja teil dieses schriftstückes und solange ich das nicht geschafft habe will ich nicht
weiter machen
.
Also so wie ich das evrstanden habe:
Konstruktor:
-----Ist dazu da um ein Objekt für die Klasse auf der sich der Konstruktor bezieht zu erstellen, mit
-----sofortieger Wertevergabe an die enthaltenen Deklerationen.

Destruktor:
----Löscht das angegebene Objekt aus dem Speicher.

Und ebend das Objekt aus dem Speicher löschen will ich ja aber ohne Destruktor geht das dann
wohl schlecht also würde ich gerne wissen wie das gehen soll.

THX
MFG FBIagent
 
Das Objekt wird automatisch aus dem Speicher gelöscht (bzw. der vom Objekt belegte Speicher wird freigegeben). Im Destruktor kannst du z.B. zusätzliche Deinitialisierungen durchführen (z.B. selbst allokierten Speicher freigeben).
 
Destruktor:
----Löscht das angegebene Objekt aus dem Speicher.

Und ebend das Objekt aus dem Speicher löschen will ich ja aber ohne Destruktor geht das dann
wohl schlecht also würde ich gerne wissen wie das gehen soll.

Hallo,
wenn du die Deklaration des Destruktors ausläßt wird vom
Compiler ein Standard- Destruktor angelegt...
Wenn du in deiner Klasse keine Memberobjekte hast die auf dem
Heap angelegt wurden (das heißt mit new allokalisiert wurden) brauchst
du auch nix aufzuräumen => du kannst den Destruktor getrost
weglassen...

Gruß

RedWing
 
Achso ist das. Im Schrifstück steht nämlich:

Jetzt erzeuge ich ein Objekt:

haus_mit_werkstatt meinButze;

und jetzt (dies ist der einzige Befehl, der uns zur Verfügung steht),
überlassen wir es dem Butze, sich selbst zu zerstören:

meinButze.~haus_mit_werkstatt();
(ausschnitt angepasst an code)
 
Zurück