dynamische klassen /statische klassen

opino

opino

Tripel-As
Code:
// stellt cout bereit
# include <iostream.h>
class Haus
{
 public: double Gf;
		   double Hk;
			int At;

 public: Haus ()
			{
		 	cout << "klasse Haus mit standartwerten erzeugt \n";
		  	Gf=100;
         Hk=100;
			At=5;
			}
					  
		 Haus (double g, double h, int t)
		  {
			 cout << "klasse Haus mit eingabewerten erzeugt \n";
			Gf=g;
			 Hk=h;
			 At=t;
			}
};
	void show(Haus H)
	{
	cout <<  H.Gf << "\n";
	}

int  main() 
{
		  
		  Haus H2();
		  show( H2); //zeile 34 
		  
		  Haus * H1 = new Haus(1,1,1);
		  show( *H1);

return 0;
}
ich erhalte folgende Fehlermeldung :

zwei.cpp: In function `int main()':
zwei.cpp:34: error: conversion from `Haus (*)()' to non-scalar type `Haus'
requested

So wie ich das verstanden habe ist will show als eingabewert ein objekt vom typ haus.
Das gebe ich ihm, aber wieso will es das nicht?
 
Da hat Theton wohl nicht sorgfaeltig gelesen, und was Du sagst, opino, ist schon verstaendlich.

Durch die leeren Klammern glaubt der Compiler, Du wuerdest in Z. 33 eine Funktion mit rueckgabetyp Haus deklarieren, d.h., dem ersten 'show' uebergibst Du einen Funktionszeiger. Wenn Du den default-Konstruktor aufrufen willst, dann lass die leeren Klammern ganz weg: Haus H1;

Du solltest Dir aber vielleicht ein neueres Leerbuch zulegen - iostream.h heisst schon seit laengerem iostream, wie eigentlich alle c++-spezifischen Header das '.h' verloren haben.
 
lol du nimmst mir dir worte aus dem mund
ahaha theton
aber du hast auch net recht rikola.
Er hat nen Konstruktor Haus(void) in seiner Klasse :-)
Das Problem liegt bei Show. Du kannst doch keine class übergeben. Wie soll das Interpretiert werden ??? Soll der Stack mit der ganzen Klasse gefüllt werden ?
Wenn schon sendest du ne Referenz aufs Haus oder ein Pointer, na kennst du den Unterschied Theton ?
Definier Show so:
void show(Haus& H) {.... }
und dann kannst du
show(H2); schreiben.

bitte
 
Zuletzt bearbeitet:
@polka
Nein, was soll das denn?

Haus H2;
show(H2);

funktioniert so perfekt, was sollte man da ändern?
Und C++ ist Objektorientiert, da kann ich übergeben, was ich will, also auch Objekte (was ja letztendlich auch Referenzen auf komplexe Datenstrukturen sind).
 
Ach du hast mich vorhin so verärgert war ne weile sauer :-)
Eigentlich bin ich ein lieber Mensch.

Stimmt es sendet einfach alle Daten zur Funktion. Mein Fehler, hab das echt vergessen. Ist wie ne Union.
 
Zuletzt bearbeitet:

Ähnliche Themen

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Windows clients können nicht mehr auf lange laufendes System zugreifen

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Debian squeeze, Webmin, Samba Freigaben

c++ syntax: iterator fuer struct in template Klasse

Zurück
Oben