Klassenprogrammierung C++, Wo ist der Fehler?

  • Themenstarter Themenstarter Roberthilflos
  • Beginndatum Beginndatum
R

Roberthilflos

Hallo!
Ich bin am Verzweifeln

Ich habe eine Klasse hotel, die von der Klasse Gebaeude erbt. Ich habe in der klasse gebaude kein private, sondern protected.
In der hotel.h habe ich:

#ifndef hotel_h
#define hotel_h
// hotel.h
#include"gebaeude.h"

class hotel : public gebaeude
{
public:
hotel();
~hotel();

int hotel::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20],char e[100],char ha[20],bool g);

int hotel::setf(float f);
int hotel::setstr(char str[100]);
int hotel::seth(int h);
int hotel::setb(char b[20]);
int hotel::setp(int p);
int hotel::setsta(char sta[100]);
int hotel::setd(char d[20]);
int hotel::setbettfr(int bettfr);
int hotel::setbett(int bett);
int hotel::setrest(bool rest);

float hotel::getf();
char* hotel::getstr();
int hotel::geth();
int hotel::getp();
char* hotel::getsta();
char* hotel::getb()};
char* hotel::getd();
char* hotel::getbettfr();
char* hotel::getbett();
bool hotel::getrest();

int hotel::print();

private:
int bettfrei;
int betten;
bool restaurant;
};

#endif


in der hotel.cpp hab ich:


#include<iostream>
#include"hotel.h"

using namespace std;

hotel::hotel(){
flaeche=1000;
strcpy_s(strasse,"gluecksweg");
hausnummer=11;
postleitzahl=12345;
strcpy_s(stadt,"musterstadt");
strcpy_s(bauart,"Lehmbau");
strcpy_s(dachart,"Freigeformt");
betten=1000;
bettenfrei=1000;
restaurant=1;
};

int hotel::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20],char e[100],char ha[20],bool g)
{
flaeche=f;
strcpy(strasse,str);
hausnummer=h;
postleitzahl=p;
strcpy(stadt,sta);
strcpy(bauart,b);
strcpy(dachart,d);
betten=1000;
bettfrei=1000;
restaurant=1;
return 0;};

int hotel::setf(float f){
return 0;};
int hotel::setstr(char str[100]){
return 0;};
int hotel::seth(int h){
return 0;};
int hotel::setb(char b[20]){
return 0;};
int hotel::setp(int p){
return 0;};
int hotel::setsta(char sta[100]){
return 0;};
int hotel::setd(char d[20]){
return 0;};
int hotel::setbettfr(int bettfr){
return 0;};
int hotel::setbett(int bett){
return 0;};
int hotel::setrest(bool rest){
return 0;};

float hotel::getf(){
return flaeche;};
char* hotel::getstr(){
return strasse;};
int hotel::geth(){
return hausnummer;};
int hotel::getp(){
return postleitzahl;};
char* hotel::getsta(){
return stadt;};
char* hotel::getb(){
return bauart;};
char* hotel::getd(){
return dachart;};
char* hotel::getbettfr(){
return bettenfrei;};
char* hotel::getbett(){
return betten;};
bool hotel::getrest(){
return restaurant;};

int hotel::print()
{
cout<< "Flache: "<< flaeche<<" m^2";
cout<< "\nStrasse/Hausnummer: "<< strasse <<" "<< hausnummer;
cout<< "\nPLZ/Stadt: "<< postleitzahl <<" "<< stadt;
cout<< "\nBauart: "<< bauart;
cout<< "\nDachart: "<< dachart;
cout<<"\nAnzahl der Betten: "<<betten;
cout<<"\nDavon frei: "<<bettfrei;
cout<<"besitzt ";
if(!restaurant)
{cout<<"k "};
cout<<"ein Restaurant";

return 0;};

hotel::~hotel(){
cout<<"Destruktor";};



Nun bekomme ich die Fehler:

error C2509: 'setp' : member function not declared in 'hotel'
error C2065: 'betten' : undeclared identifier
error C2039: 'getbett' : is not a member of 'hotel'

die erste bekomme ich für alle funktionen, die zweite und dritte nur für variablen/funktionen, die nur hotel betreffen.


Wo ist der Fehler? Ich suche schon richtig lange und finde ihn nicht.
Ich brauche eure Hilfe!

Robert
 
Hi.

Schliesse deinen Code in [code=cpp]...[/code] Tags ein. So ist das unlesbar.

Und poste die vollständige Fehlermeldung (in [code]..[/code] Tags) vor allem mit Zeilennummern.

Gruß
 
Hallo!
Ich bin am Verzweifeln

Ich habe eine Klasse hotel, die von der Klasse Gebaeude erbt. Ich habe in der klasse gebaude kein private, sondern protected.
In der hotel.h habe ich:
C++:
#ifndef hotel_h
#define hotel_h
// hotel.h
#include"gebaeude.h"

class hotel : public gebaeude
{
public:
hotel();
~hotel();

int hotel::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20],char e[100],char ha[20],bool g);

int hotel::setf(float f);
int hotel::setstr(char str[100]);
int hotel::seth(int h);
int hotel::setb(char b[20]);
int hotel::setp(int p);
int hotel::setsta(char sta[100]);
int hotel::setd(char d[20]);
int hotel::setbettfr(int bettfr);
int hotel::setbett(int bett);
int hotel::setrest(bool rest);

float hotel::getf();
char* hotel::getstr();
int hotel::geth();
int hotel::getp();
char* hotel::getsta();
char* hotel::getb()};
char* hotel::getd();
char* hotel::getbettfr();
char* hotel::getbett();
bool hotel::getrest();

int hotel:rint();

private:
int bettfrei;
int betten;
bool restaurant;
};

#endif

in der hotel.cpp hab ich:

C++:
#include<iostream>
#include"hotel.h"

using namespace std;

hotel::hotel(){
flaeche=1000;
strcpy_s(strasse,"gluecksweg");
hausnummer=11;
postleitzahl=12345;
strcpy_s(stadt,"musterstadt");
strcpy_s(bauart,"Lehmbau");
strcpy_s(dachart,"Freigeformt");
betten=1000;
bettenfrei=1000;
restaurant=1;
};

int hotel::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20],char e[100],char ha[20],bool g)
{
flaeche=f;
strcpy(strasse,str);
hausnummer=h;
postleitzahl=p;
strcpy(stadt,sta);
strcpy(bauart,b);
strcpy(dachart,d);
betten=1000;
bettfrei=1000;
restaurant=1;
return 0;};

int hotel::setf(float f){
return 0;};
int hotel::setstr(char str[100]){
return 0;};
int hotel::seth(int h){
return 0;};
int hotel::setb(char b[20]){
return 0;};
int hotel::setp(int p){
return 0;};
int hotel::setsta(char sta[100]){
return 0;};
int hotel::setd(char d[20]){
return 0;};
int hotel::setbettfr(int bettfr){
return 0;};
int hotel::setbett(int bett){
return 0;};
int hotel::setrest(bool rest){
return 0;};

float hotel::getf(){
return flaeche;};
char* hotel::getstr(){
return strasse;};
int hotel::geth(){
return hausnummer;};
int hotel::getp(){
return postleitzahl;};
char* hotel::getsta(){
return stadt;};
char* hotel::getb(){
return bauart;};
char* hotel::getd(){
return dachart;};
char* hotel::getbettfr(){
return bettenfrei;};
char* hotel::getbett(){
return betten;};
bool hotel::getrest(){
return restaurant;};

int hotel:rint()
{
cout<< "Flache: "<< flaeche<<" m^2";
cout<< "\nStrasse/Hausnummer: "<< strasse <<" "<< hausnummer;
cout<< "\nPLZ/Stadt: "<< postleitzahl <<" "<< stadt;
cout<< "\nBauart: "<< bauart;
cout<< "\nDachart: "<< dachart;
cout<<"\nAnzahl der Betten: "<<betten;
cout<<"\nDavon frei: "<<bettfrei;
cout<<"besitzt ";
if(!restaurant)
{cout<<"k "};
cout<<"ein Restaurant";

return 0;};

hotel::~hotel(){
cout<<"Destruktor";};


Nun bekomme ich die Fehler:
Code:
Error	1	error C2248: 'gebaeude::flaeche' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	7
Error	2	error C2248: 'gebaeude::strasse' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	8
Error	3	error C2248: 'gebaeude::hausnummer' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	9
Error	4	error C2248: 'gebaeude::postleitzahl' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	10
Error	5	error C2248: 'gebaeude::stadt' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	11
Error	6	error C2248: 'gebaeude::bauart' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	12
Error	7	error C2248: 'gebaeude::dachart' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	13
Error	8	error C2065: 'bettenfrei' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	15
Error	9	error C2509: 'setall' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	20
Error	10	error C2509: 'setf' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	33
Error	11	error C2509: 'setstr' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	35
Error	12	error C2509: 'seth' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	37
Error	13	error C2509: 'setb' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	39
Error	14	error C2509: 'setp' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	41
Error	15	error C2509: 'setsta' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	43
Error	16	error C2509: 'setd' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	45
Error	17	error C2039: 'setbettfr' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	47
Error	18	error C2039: 'setbett' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	49
Error	19	error C2039: 'setrest' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	51
Error	20	error C2509: 'getf' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	54
Error	21	error C2509: 'getstr' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	56
Error	22	error C2509: 'geth' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	58
Error	23	error C2509: 'getp' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	60
Error	24	error C2509: 'getsta' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	62
Error	25	error C2509: 'getb' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	64
Error	26	error C2509: 'getd' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	66
Error	27	error C2039: 'getbettfr' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	68
Error	28	error C2065: 'bettenfrei' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	69
Error	29	error C2039: 'getbett' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	70
Error	30	error C2065: 'betten' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	71
Error	31	error C2039: 'getrest' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	72
Error	32	error C2065: 'restaurant' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	73
Error	33	error C2509: 'print' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	76
die erste bekomme ich für alle funktionen, die zweite und dritte nur für variablen/funktionen, die nur hotel betreffen.


Wo ist der Fehler? Ich suche schon richtig lange und finde ihn nicht.
Ich brauche eure Hilfe!

Robert
 
C++:
#ifndef gebaeude_h
#define gebaeude_h
//gebaeude.h

class gebaeude
{
public:
	gebaeude();
	gebaeude(const gebaeude &gin);
	~gebaeude();

int gebaeude::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20]);

int gebaeude::setf(float f);
int gebaeude::setstr(char str[100]);
int gebaeude::seth(int h);
int gebaeude::setb(char b[20]);
int gebaeude::setp(int p);
int gebaeude::setsta(char sta[100]);
int gebaeude::setd(char d[20]);
	
float gebaeude::getf();
char* gebaeude::getstr(); 
int gebaeude::geth();
int gebaeude::getp();
char* gebaeude::getsta();
char* gebaeude::getb();
char* gebaeude::getd();

int gebaeude::print();

protected:
	float flaeche;
	char strasse[100];
	int hausnummer,postleitzahl;
	char stadt[100];
	char bauart[20];
	char dachart[20];
};
#endif

C++:
#include"gebaeude.h"
#include<iostream>
using namespace std;



gebaeude::gebaeude(){
	flaeche=1000;
	strcpy(strasse,"gluecksweg");
	hausnummer=11;
	postleitzahl=12345;
	strcpy(stadt,"musterstadt");
	strcpy(bauart,"Lehmbau");
	strcpy(dachart,"Freigeformt");
};

int gebaeude::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20])
	{
	flaeche=f;
	strcpy(strasse,str);
	hausnummer=h;
	postleitzahl=p;
	strcpy(stadt,sta);
	strcpy(bauart,b);
	strcpy(dachart,d);

return 0;
};
gebaeude::gebaeude(const gebaeude &gin)
{
	flaeche,gin.flaeche;
	strcpy(strasse,gin.strasse);
	hausnummer,gin.hausnummer;
	postleitzahl,gin.postleitzahl;
	strcpy(stadt,gin.stadt);
	strcpy(bauart,gin.bauart);
	strcpy(dachart,gin.dachart);
};

int gebaeude::setf(float f)
{	flaeche=f;
return 0;
};
int gebaeude::setstr(char str[100])
{	strcpy(strasse,str);
return 0;
};
int gebaeude::seth(int h)
{		hausnummer=h;
return 0;
};
int gebaeude::setb(char b[20])
{	strcpy(bauart,b);
return 0;
};
int gebaeude::setp(int p)
{	postleitzahl=p;
return 0;
};
int gebaeude::setsta(char sta[100])
{	strcpy(stadt,sta);
return 0;
};
int gebaeude::setd(char d[20])
{	strcpy(dachart,d);
return 0;
};
	
float gebaeude::getf()
{return flaeche;};

char* gebaeude::getstr()
{return strasse;}; 


int gebaeude::geth()
{return hausnummer;};

int gebaeude::getp()
{return postleitzahl;};

char* gebaeude::getsta()
{return stadt;};

char* gebaeude::getb()
{return bauart;};

char* gebaeude::getd()
{return dachart;};


int gebaeude::print()
{
cout<< "Flache: "<< flaeche<<" m^2";
cout<< "\nStrasse/Hausnummer: "<< strasse <<" "<< hausnummer;
cout<< "\nPLZ/Stadt: "<< postleitzahl <<" "<< stadt;
cout<< "\nBauart: "<<	bauart;
cout<< "\nDachart: "<< dachart<<endl;
return 0;
};

gebaeude::~gebaeude(){
cout<<"Destruktor";
};
 
Entschuldige wenn ich das jetzt mal sage, das ist mit abstand der Fehlerreichste Quelltext den ich je gesehen habe, du solltest dir dringen die Grundlagen der Syntax von C++ angucken.

Folgende Fehler hattest du unter anderem:
- Methoden hatten falschen Rückgabetypen (z. B. hotel::getbettfr() muss vom Typ int sein, war aber vom Typ char *)
- Jede Methodendefinition war mit einem ; abgeschlossen, das darf unter keinen Umständen sein!
z. B.

C++:
hotel::hotel()
{
   flaeche=1000;
   strcpy_s(strasse,"gluecksweg");
   hausnummer=11;
   postleitzahl=12345;
   strcpy_s(stadt,"musterstadt");
   strcpy_s(bauart,"Lehmbau");
   strcpy_s(dachart,"Freigeformt");
   betten=1000;
   bettenfrei=1000;
   restaurant=1;
}; // das ; hat bei der Methoden-Definition nicht aber auch überhaupt garnichts zu suchen!

- Rechtsschreibfehler in Variablennamen (z. B. deklariert Variable "bettenfrei", benutzt an einigen Stellen "bettfrei"!) das geht auch garnicht!
- Zuweisung von Variablen mit einem Komma
z. B.

C++:
gebaeude::gebaeude(const gebaeude &gin)
{    
   flaeche,gin.flaeche;    // Zuweisung mit einem Komma ?
   strcpy(strasse,gin.strasse);    
   hausnummer,gin.hausnummer;     // Zuweisung mit einem Komma ? 
   postleitzahl,gin.postleitzahl;     // Zuweisung mit einem Komma ?
   strcpy(stadt,gin.stadt);    
   strcpy(bauart,gin.bauart);    
   strcpy(dachart,gin.dachart);
}

Ich habe mal den Code von Syntax-Fehler bereinigt und stelle ihn dir zur Verfügung, allerdings solltest du in deinem eigenen Interesse deinen alten Code selber überarbeiten und die oben gennaten Fehler beseitigen

gebaeude.h
C++:
#ifndef gebaeude_h
#define gebaeude_h

//gebaeude.h 
class gebaeude
{
public:
   gebaeude();
   gebaeude(const gebaeude &gin);
   ~gebaeude();
   int setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20]);
   int setf(float f);
   int setstr(char str[100]);
   int seth(int h);
   int setb(char b[20]);
   int setp(int p);
   int setsta(char sta[100]);
   int setd(char d[20]);
   float getf();
   char* getstr();
   int geth();
   int getp();
   char* getsta();
   char* getb();
   char* getd();
   int print();
protected:
   float flaeche;
   char strasse[100];
   int hausnummer,postleitzahl;
   char stadt[100];
   char bauart[20];
   char dachart[20];
};

#endif

gebaeude.cpp

C++:
 #include"gebaeude.h"
#include<iostream>
using namespace std;
gebaeude::gebaeude()
{
   flaeche=1000;
   strcpy(strasse,"gluecksweg");
   hausnummer=11;    
   postleitzahl=12345;    
   strcpy(stadt,"musterstadt");    
   strcpy(bauart,"Lehmbau");    
   strcpy(dachart,"Freigeformt");
}
int gebaeude::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20])    
{    
   flaeche=f;    
   strcpy(strasse,str);    
   hausnummer=h;    
   postleitzahl=p;    
   strcpy(stadt,sta);    
   strcpy(bauart,b);    
   strcpy(dachart,d); 
   return 0;
}
gebaeude::gebaeude(const gebaeude &gin)
{    
   flaeche = gin.flaeche;    
   strcpy(strasse,gin.strasse);    
   hausnummer = gin.hausnummer;    
   postleitzahl,gin.postleitzahl;    
   strcpy(stadt, gin.stadt);    
   strcpy(bauart,gin.bauart);
   strcpy(dachart,gin.dachart);
}
int gebaeude::setf(float f)
{   
   flaeche=f;
   return 0;
}
int gebaeude::setstr(char str[100])
{   
   strcpy(strasse,str);
   return 0;
}
int gebaeude::seth(int h)
{       
   hausnummer=h;
   return 0;
}
int gebaeude::setb(char b[20])
{   
   strcpy(bauart,b);
   return 0;
}
int gebaeude::setp(int p)
{   
   postleitzahl=p;
   return 0;
}
int gebaeude::setsta(char sta[100])
{   
   strcpy(stadt,sta);
   return 0;
}
int gebaeude::setd(char d[20])
{   
   strcpy(dachart,d);
   return 0;
}
float gebaeude::getf()
{
   return flaeche;
}
char* gebaeude::getstr()
{
   return strasse;
}
int gebaeude::geth()
{
   return hausnummer;
}
int gebaeude::getp()
{
   return postleitzahl;
}
char* gebaeude::getsta()
{
   return stadt;
}
char* gebaeude::getb()
{
   return bauart;
}
char* gebaeude::getd()
{
   return dachart;
}
int gebaeude::print()
{
   cout<< "Flache: "<< flaeche<<" m^2";
   cout<< "\nStrasse/Hausnummer: "<< strasse <<" "<< hausnummer;
   cout<< "\nPLZ/Stadt: "<< postleitzahl <<" "<< stadt;
   cout<< "\nBauart: "<<   bauart;
   cout<< "\nDachart: "<< dachart<<endl;
   return 0;
}
gebaeude::~gebaeude()
{
   cout<<"Destruktor";
}

hotel.h
C++:
#ifndef hotel_h
#define hotel_h
// hotel.h
#include"gebaeude.h" 

class hotel : public gebaeude
{
public:
   hotel();
   ~hotel();
   
   int setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20],char e[100],char ha[20],bool g);
   int setf(float f);
   int setstr(char str[100]);
   int seth(int h);
   int setb(char b[20]);
   int setp(int p);
   int setsta(char sta[100]);
   int setd(char d[20]);
   int setbettfr(int bettfr);
   int setbett(int bett);
   int setrest(bool rest);
   float getf();
   char* getstr();
   int geth();
   int getp();
   char* getsta();
   char* getb();
   char* getd();
   int getbettfr();
   int getbett();
   bool getrest();
   int print();
private:
   int bettenfrei;  // Variable hieß vorher bettfrei
   int betten;
   bool restaurant;
};
#endif

hotel.cpp
C++:
#include<iostream>
#include"hotel.h" 
using namespace std;
hotel::hotel()
{
   flaeche=1000;
   strcpy_s(strasse,"gluecksweg");
   hausnummer=11;
   postleitzahl=12345;
   strcpy_s(stadt,"musterstadt");
   strcpy_s(bauart,"Lehmbau");
   strcpy_s(dachart,"Freigeformt");
   betten=1000;
   bettenfrei=1000;
   restaurant=1;
}
int hotel::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20],char e[100],char ha[20],bool g)
{
   flaeche=f;
   strcpy(strasse,str);
   hausnummer=h;
   postleitzahl=p;
   strcpy(stadt,sta);
   strcpy(bauart,b);
   strcpy(dachart,d);
   betten=1000;
   bettenfrei=1000;
   restaurant=1;
   return 0;
}
int hotel::setf(float f)
{
   return 0;
}
int hotel::setstr(char str[100])
{
   return 0;
}
int hotel::seth(int h)
{
   return 0;
}
int hotel::setb(char b[20])
{
   return 0;
}
int hotel::setp(int p)
{
   return 0;
}
int hotel::setsta(char sta[100])
{
   return 0;
}
int hotel::setd(char d[20])
{
   return 0;
}
int hotel::setbettfr(int bettfr)
{
   return 0;
}
int hotel::setbett(int bett)
{
   return 0;
}
int hotel::setrest(bool rest)
{
   return 0;
}
float hotel::getf()
{
   return flaeche;
}
char* hotel::getstr()
{
   return strasse;
}
int hotel::geth()
{
   return hausnummer;
}
int hotel::getp()
{
   return postleitzahl;
}
char* hotel::getsta()
{
   return stadt;
}
char* hotel::getb()
{
   return bauart;
}
char* hotel::getd()
{
   return dachart;
}
// Hier war der rückgabetyp ein char*
int hotel::getbettfr()
{
   return bettenfrei;
}
int hotel::getbett()
{
   return betten;
}
bool hotel::getrest()
{
   return restaurant;
}
//hier hieß deine methobe plötzlich rint() statt print()
int hotel::print()
{
   cout<< "Flache: "<< flaeche <<" m^2";
   cout<< "\nStrasse/Hausnummer: "<< strasse <<" "<< hausnummer;
   cout<< "\nPLZ/Stadt: "<< postleitzahl <<" "<< stadt;
   cout<< "\nBauart: "<< bauart;cout<< "\nDachart: "<< dachart;
   cout<<"\nAnzahl der Betten: "<<betten;
   // Hier hieß die Variable auch bettfrei
   cout<<"\nDavon frei: "<<bettenfrei;cout<<"besitzt ";
   
   if (!restaurant)
   {
      cout<<"k";
   }
   
   cout<<"ein Restaurant";
   return 0;
}
hotel::~hotel()
{
   cout<<"Destruktor";
}

Das Programm lässt sich jetzt unter Visual Studio 2008 kompilieren.

Gruß

RudolfG
 
Zuletzt bearbeitet:
Habe immrt noch dieselben Fehler, bis auf die verschreiber mit bettenfrei, char/int und den semikolons, immer noch 33.
Was ist noch falsch?

gebaeude.h:
C++:
#ifndef gebaeude_h
#define gebaeude_h
//gebaeude.h

class gebaeude
{
public:
	gebaeude();
	gebaeude(const gebaeude &gin);
	~gebaeude();

int gebaeude::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20]);

int gebaeude::setf(float f);
int gebaeude::setstr(char str[100]);
int gebaeude::seth(int h);
int gebaeude::setb(char b[20]);
int gebaeude::setp(int p);
int gebaeude::setsta(char sta[100]);
int gebaeude::setd(char d[20]);
	
float gebaeude::getf();
char* gebaeude::getstr(); 
int gebaeude::geth();
int gebaeude::getp();
char* gebaeude::getsta();
char* gebaeude::getb();
char* gebaeude::getd();

int gebaeude::print();

protected:
	float flaeche;
	char strasse[100];
	int hausnummer,postleitzahl;
	char stadt[100];
	char bauart[20];
	char dachart[20];
};
#endif
hotel.h:
C++:
#ifndef hotel_h
#define hotel_h
// hotel.h
#include"gebaeude.h"

class hotel : public gebaeude
{
public:
hotel();
~hotel();

int setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20],char e[100],char ha[20],bool g);	

int setf(float f);
int setstr(char str[100]);
int seth(int h);
int setb(char b[20]);
int setp(int p);
int setsta(char sta[100]);
int setd(char d[20]);
int setbettfr(int bettfr);	
int setbett(int bett);
int setrest(bool rest);

float getf();
char* getstr(); 
int geth();
int getp();
char* getsta();
char* getb()};
char* getd();
int getbettfr();
int getbett();
bool getrest();

int hotel::print();

private:
	int bettenfrei;
	int betten;
	bool restaurant;
};

#endif
gebaeude.cpp:
C++:
#include"gebaeude.h"
#include<iostream>
using namespace std;


gebaeude::gebaeude(){
	flaeche=1000;
	strcpy(strasse,"gluecksweg");
	hausnummer=11;
	postleitzahl=12345;
	strcpy(stadt,"musterstadt");
	strcpy(bauart,"Lehmbau");
	strcpy(dachart,"Freigeformt");
}

int gebaeude::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20])
	{
	flaeche=f;
	strcpy(strasse,str);
	hausnummer=h;
	postleitzahl=p;
	strcpy(stadt,sta);
	strcpy(bauart,b);
	strcpy(dachart,d);

return 0;
}
gebaeude::gebaeude(const gebaeude &gin)
{
	flaeche=gin.flaeche;
	strcpy(strasse,gin.strasse);
	hausnummer=gin.hausnummer;
	postleitzahl=gin.postleitzahl;
	strcpy(stadt,gin.stadt);
	strcpy(bauart,gin.bauart);
	strcpy(dachart,gin.dachart);
}


int gebaeude::setf(float f)
{	flaeche=f;
return 0;
}
int gebaeude::setstr(char str[100])
{	strcpy(strasse,str);
return 0;
}
int gebaeude::seth(int h)
{		hausnummer=h;
return 0;
}
int gebaeude::setb(char b[20])
{	strcpy(bauart,b);
return 0;
}
int gebaeude::setp(int p)
{	postleitzahl=p;
return 0;
}
int gebaeude::setsta(char sta[100])
{	strcpy(stadt,sta);
return 0;
}
int gebaeude::setd(char d[20])
{	strcpy(dachart,d);
return 0;
}
	
float gebaeude::getf()
{return flaeche;}

char* gebaeude::getstr()
{return strasse;}


int gebaeude::geth()
{return hausnummer;}

int gebaeude::getp()
{return postleitzahl;}

char* gebaeude::getsta()
{return stadt;}

char* gebaeude::getb()
{return bauart;}

char* gebaeude::getd()
{return dachart;}


int gebaeude::print()
{
cout<< "Flache: "<< flaeche<<" m^2";
cout<< "\nStrasse/Hausnummer: "<< strasse <<" "<< hausnummer;
cout<< "\nPLZ/Stadt: "<< postleitzahl <<" "<< stadt;
cout<< "\nBauart: "<<	bauart;
cout<< "\nDachart: "<< dachart<<endl;
return 0;
}

gebaeude::~gebaeude(){
cout<<"Destruktor";
}
hotel.cpp
C++:
#include<iostream>
#include"hotel.h"


using namespace std;

hotel::hotel(){
	flaeche=1000;
	strcpy_s(strasse,"gluecksweg");
	hausnummer=11;
	postleitzahl=12345;
	strcpy_s(stadt,"musterstadt");
	strcpy_s(bauart,"Lehmbau");
	strcpy_s(dachart,"Freigeformt");
	betten=1000;
	bettenfrei=1000;
	restaurant=1;
}

int hotel::setall(float f,char str[100],int h,int p,char sta[100],char b[20],char d[20],char e[100],char ha[20],bool g)
{
flaeche=f;
strcpy(strasse,str);
hausnummer=h;
postleitzahl=p;
strcpy(stadt,sta);
strcpy(bauart,b);
strcpy(dachart,d);
betten=1000;
bettenfrei=1000;
restaurant=1;
return 0;}	

int hotel::setf(float f){
return 0;}
int hotel::setstr(char str[100]){
return 0;}
int hotel::seth(int h){
return 0;}
int hotel::setb(char b[20]){
return 0;};
int hotel::setp(int p){
return 0;}
int hotel::setsta(char sta[100]){
return 0;}
int hotel::setd(char d[20]){
return 0;}
int hotel::setbettfr(int bettfr){
return 0;}
int hotel::setbett(int bett){
return 0;}
int hotel::setrest(bool rest){
return 0;}

float hotel::getf(){
return flaeche;}
char* hotel::getstr(){
return strasse;} 
int hotel::geth(){
return hausnummer;}
int hotel::getp(){
return postleitzahl;}
char* hotel::getsta(){
return stadt;}
char* hotel::getb(){
return bauart;}
char* hotel::getd(){
return dachart;}
int hotel::getbettfr(){
return bettenfrei;}
int hotel::getbett(){
return betten;}
bool hotel::getrest(){
return restaurant;}

int hotel::print()
{
cout<< "Flache: "<< flaeche<<" m^2";
cout<< "\nStrasse/Hausnummer: "<< strasse <<" "<< hausnummer;
cout<< "\nPLZ/Stadt: "<< postleitzahl <<" "<< stadt;
cout<< "\nBauart: "<<	bauart;
cout<< "\nDachart: "<< dachart;
cout<<"\nAnzahl der Betten: "<<betten;
cout<<"\nDavon frei: "<<bettenfrei;
cout<<"besitzt ";
if(!restaurant)
{cout<<"k "};
cout<<"ein Restaurant";

return 0;}

hotel::~hotel(){
cout<<"Destruktor";}


Ich weiß echt nicht mehr weiter...
 
Habe immrt noch dieselben Fehler, bis auf die verschreiber mit bettenfrei, char/int und den semikolons, immer noch 33.
Was ist noch falsch?

Du hast nur die Fehler behoben die ich bisjetzt aufgelistet habe! Ich habe aber dazugeschrieben "... unter anderem..."

Folgender Fehler fällt mir noch sofort auf:

hotel.h
- Zeile 30: Was macht das } am ande der Zeile char* getb()};

Ansonsten vergleich deine Quelltext mit meinen Lösungen (zur Hilfe kann man sich z. B. WinMerge etc. nehmen) und guck dir die unterschiede genau an.

Auch nach deinen Änderungen solltest du die "aktuelle" Fehlerausgabe inkl. Zeilen etc. posten.

Ich weiß echt nicht mehr weiter...

Welchen Compiler/Entwicklungsumgebung benutzt du den?

Gruß
RudolfG
 
Code:
Error	1	error C2248: 'gebaeude::flaeche' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	8
Error	2	error C2248: 'gebaeude::strasse' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	9
Error	3	error C2248: 'gebaeude::hausnummer' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	10
Error	4	error C2248: 'gebaeude::postleitzahl' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	11
Error	5	error C2248: 'gebaeude::stadt' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	12
Error	6	error C2248: 'gebaeude::bauart' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	13
Error	7	error C2248: 'gebaeude::dachart' : cannot access private member declared in class 'gebaeude'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	14
Error	8	error C2065: 'bettenfrei' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	16
Error	9	error C2509: 'setall' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	21
Error	10	error C2509: 'setf' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	34
Error	11	error C2509: 'setstr' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	37
Error	12	error C2509: 'seth' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	40
Error	13	error C2509: 'setb' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	43
Error	14	error C2509: 'setp' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	46
Error	15	error C2509: 'setsta' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	49
Error	16	error C2509: 'setd' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	52
Error	17	error C2039: 'setbettfr' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	55
Error	18	error C2065: 'bettenfrei' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	56
Error	19	error C2039: 'setbett' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	58
Error	20	error C2065: 'betten' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	59
Error	21	error C2039: 'setrest' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	61
Error	22	error C2065: 'restaurant' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	62
Error	23	error C2509: 'getf' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	65
Error	24	error C2509: 'getstr' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	67
Error	25	error C2509: 'geth' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	69
Error	26	error C2509: 'getp' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	71
Error	27	error C2509: 'getsta' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	73
Error	28	error C2509: 'getb' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	75
Error	29	error C2509: 'getd' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	77
Error	30	error C2039: 'getbettfr' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	79
Error	31	error C2065: 'bettenfrei' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	80
Error	32	error C2039: 'getbett' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	81
Error	33	error C2065: 'betten' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	82
Error	34	error C2039: 'getrest' : is not a member of 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	83
Error	35	error C2065: 'restaurant' : undeclared identifier	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	84
Error	36	error C2509: 'print' : member function not declared in 'hotel'	c:\users\rieke\desktop\haushotel_meier\hotel.cpp	87


Die falsche klammer is mir auch schon aufgefallen. Benutze visual studio, denke aber kaum, dass es daran liegt, eher an meinem unwissen ;)
 
Die fehler bleiben übrigens, wenn ich hotel.h komplett auskommentiere, dieselben.
Wwenn ich hotel.cpp komplett auskommentiere, sind alle weg.
ich denke, dass ich irgendwie hotel.cpp und hotel.h nicht richtig miteinander verknüpft habe (falls man das so sagen kann), wie ich das aus den fehlermeldungen interpretiere...
 
Zurück