Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » wie löse ich das Problem ?????

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 <
000
18.11.2006, 18:07 Uhr
~profdock
Gast


Hallo alle zusammen, ich habe da ein Problem und weiß nicht wie ich das lösen kann. Vielleicht könnt ihr mir helfen.

Das ist die Klasse in einer Headerdatei:


C++:
//==============================================================================
//--------------------------------KLASSE GEO------------------------------------
//==============================================================================
class Geo
{
private:
  float Laenge;
  float Breite;
  float Hoehe;
  double Volumen;                                   //double, weil die Multiplikationen zweier Variablen
  double Flaeche;                                   //mit float eine meist größere Zahl ergeben kann
  double OFlaeche;

public:
  //Methoden
  double Ober(double);                              //Für die Oberfläche
  double Wuerfel(float, float, float);              //Überladen zweier Funktionen je nach Gebrauch,
  double Wuerfel(float, float);                     //wird einer beiden Funktionen aufgerufen.
  float ZeigHoehe(void);                            //Mit Hilfe dieser Funktionen kann man
  float ZeigBreite(void);                           //die Daten aus der Struktur lesen.
  float ZeigLaenge(void);                           //In diesem Fall: Höhe, Breite, Länge

  //Konstruktor                                     //Mit diesem Konstuktor kann man in die
  Geo(float, float, float);                         //Struktur drei Werte mit float rein schreiben

  //Destruktor                                      //Mit diesem Destruktor kann man ein Objekt eliminieren
  ~Geo();                                           //und dadurch den Speicherplatz frei geben
};
//==============================================================================
//-------------------METHODEN + Überladen der Funktion--------------------------
//==============================================================================
double Geo::Ober(double Flaeche)
{
  return (Flaeche*6);                                   //Berechnung der Oberfläche
}
//------------------------------------------------------------------------------
double Geo::Wuerfel(float Laenge, float Breite, float Hoehe)
{
  return (Laenge*Breite*Hoehe);                         //Berechung des Volumens
}
//------------------------------------------------------------------------------
double Geo::Wuerfel(float Laenge, float Breite)
{
  return (Laenge*Breite);                               //Berechnung der Fläche
}
//------------------------------------------------------------------------------
float Geo::ZeigBreite(void)
{ return Breite; }                  //Eine Funktion, die die Breite zurück gibt
float Geo::ZeigHoehe(void)
{ return Hoehe; }                   //Eine Funktion, die die Höhe zurück gibt
float Geo::ZeigLaenge(void)
{ return Laenge; }                  //Eine Funktion, die die Länge zurück gibt
//==============================================================================
//-------------------------------KONSTRUKTOR------------------------------------
//==============================================================================
Geo::Geo(float L, float B, float H)
{
Laenge=L;                          //Ich weise L auf die Länge, B auf die Breite
Breite=B;                          //und H auf die Höhe zu
Hoehe=H;
}
//==============================================================================
//-------------------------------DESTRUKTOR-------------------------------------
//==============================================================================
Geo::~Geo()
{}





und das ist das Hauptprogramm:


C++:

//==============================================================================
//-------PROGRAMM ZUR BERECHNUNG DES VOLUMENS UN DER FLÄCHE --------------------
//==============================================================================
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <Quader.h>
//==============================================================================
//--------------------------BEGiNN DER HAUPTFUNKTION----------------------------
//==============================================================================
int main()
{
int i=0, AnzahlObjekt=0;
float Laenge=0.0, Breite=0.0, Hoehe=0.0;
bool Entscheidung;
Geo* Objekt[30];
//------------------------------------------------------------------------------
do
{
cout<<"Laenge   :"<<endl;
cin>>Laenge;
cout<<"Breite  :"<<endl;
cin>>Breite;
cout<<"Hoehe   :"<<endl;
cin>>Hoehe;
Objekt[i]=new Geo(Laenge, Breite, Hoehe);       //Adresse eines Objektes wird gespeichert
i++;
cout<<"Wollen Sie noch ein Objekt erzeugen: (Ja=1, Nein=0)"<<endl;
cin>>Entscheidung;
AnzahlObjekt++;
}
while (i<30 && Entscheidung==1);
//------------------------------------------------------------------------------
for(i=AnzahlObjekt; i=0; i--)
{
cout<<(i+1)<<". Objekt"<<endl;        
cout<<"Flaeche: "<<Objekt[i].Wuerfel(Laenge, Breite, Hoehe)<<endl;  //Hier ist die FEHLERMELDUNG  ***********************************
}
//------------------------------------------------------------------------------
for(i=0; i<30; i--)
{delete Objekt[i];}                             //alle Rechtecke werden entfernt
//------------------------------------------------------------------------------
cout<<"Alle Rechtecke wurden geloescht"<<endl;
getch();
return 0;
}
//------------------------------------------------------------------------------



mod edit: BENUTZE DIE CPP TAGS SELBER

Dieser Post wurde am 18.11.2006 um 20:50 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.11.2006, 20:51 Uhr
Pablo
Supertux
(Operator)


und was ist das Problem? Wir können leider nicht hellsehen
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.11.2006, 09:13 Uhr
Tommix



'Morgen,

Zitat:
Wir können leider nicht hellsehen

Du vielleicht nicht...

Zitat:
cout<<"Flaeche: "<<Objekt[i].Wuerfel(Laenge, Breite, Hoehe)<<endl; //Hier ist die FEHLERMELDUNG ***********************************


Objekt ist ein Array aus Zeigern auf Geos. Du müßtest also mit Objekt[i]->Wuerfel(...) zugreifen. Davon mal abgesehen erscheint mir das Ganze fragwürdig. Wozu hast du die Member Laenge, Breite usw., wenn Du sie dann nochmal als Parameter übergibst?
Bei

C++:
for(i=AnzahlObjekt; i=0; i--)


meinst Du eher i==0. Dann löscht Du 30 Objekte, obwohl möglicherweise weniger erzeugt wurden usw. usf.

Gruß, Tommix

Bearbeitung:

Ich sehe gerade, daß Du weit mehr als 30 Objekte löscht...


Dieser Post wurde am 19.11.2006 um 09:16 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.11.2006, 10:55 Uhr
Blubber2063



Und noch viel besser hinter den Zeigern des Arrays steht kein Speicher, dürfte also nen Segfault produzieren.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: