Konstruktor mit char's initialisieren

ColdAngel2k1

Grünschnabel
Ich hoffe es kann mir jemand bei dieser doch so simplen Sache helfen:

Code:
/ Datei: adresse.h
#ifndef _ADRESSE_
#define _ADRESSE_
#include <string.h>

class Adresse
{ private:
	
	char stadt[32];


  public:
	//Adresse();
	Adresse(const char *stadt = "xxxxx");


	~Adresse();

	//void setAdr(const char *, const char *, const char *);
	void putAdr();
};
#endif

Code:
#include <iostream>
#include "adresse.h"
using namespace std;

int main()
{	Adresse ad1("Berlin"), ad2;
	ad1.putAdr();

	//ad2.setAdr("Hamburg", "Reeperbahn", "040-7654321");

	return 0;
}


und noch die Methoden Datei:

Code:
#include "adresse.h"
#include <iostream>

using namespace std;

//Adresse::Adresse(char *r) : stadt(*r)
//{ 	cout << "Objekt wird erzeugt" << endl; }

//Adresse::Adresse() : stadt() {
//	cout << "Objekt wird erzeugt" << endl; }

Adresse::~Adresse()
{	cout << "Objekt wurde zerstoert" << endl; }

void Adresse::putAdr()
{	cout << "Halo" << endl; }



Ich denke, dass Problem liegt am *char . Wenn ich andere Typen verwende wie double oder so, dann stellt das für den compiler kein Problem dar.
Es ist mir schon bewusst, dass es vielleicht sinnvoller ist gleich string zu verwenden, doch diese Aufgabe wurde in der Prüfung so gestellt.
Ich bin für jeden Tipp dankbar.

Der Compiler gibt mir diesen Fehler aus:

Code:
make -f adresse.mk
g++ -c adressemain.cpp
adressemain.cpp:12:2: warning: no newline at end of file
g++ -c adresse.cpp
adresse.cpp:16:28: warning: no newline at end of file
g++ -o a.out adressemain.o adresse.o
Undefiniertes                   erstmals referenziert
 Symbol                             in Datei
Adresse::Adresse(char const*)       adressemain.o
ld: Schwerer Fehler: Symbolreferenzierungsfehler. Keine Ausgabe in a.out geschrieben
collect2: ld returned 1 exit status
make: *** [a.out] Error 1
 
Zuletzt bearbeitet:
Hab alles so geändert, wie du es wolltest. Kannst du mir noch einen Rat geben, wie ich das Problem lösen kann? Sorry, hab nicht so sehr die Ahnung von c++ und schreibe bald meine klausur.
 
Im Header ist die Signatur des Konstruktors Adresse::Adresse(const char*) und in der Implementation Adresse::Adresse(char*), bzw es ist da auskommentiert. Der erwähnte Konstruktor wird also nirgends mit einem Körper versehen. Ausserdem würde ich dir empfehlen den Klammern auch ihren Platz zu geben:
C++:
class Foo
{
private:
...
};

void Foo::Bar()
{
        return;
}

Deine Notation ist sehr unübersichtlich.
 
Auch wenn ich den Kontruktor mit einem Körper versehe und in diesem Körper trotzdem ... const char* schreibe, kriege ich das einfach nicht zum laufen. Hab es jetzt mit strings ausprobiert und damit läuft es, es ist aber leider nicht die korrekte Lösung für die Aufgabe.
 
Zurück