Klasse Haustier - Fehlermeldungen verstehe ich nicht Unterlagen nocheinmal reinziehen



  • Das ist eigentlich ein Fehler, den der Compiler hätte finden müssen.



  • Also ich habe einmal den Code mehr "verfeinert":

    #include "Hamster.h"
    #include "Haustier.h"
    #include "Hund.h"
    #include "Katze.h"
    #include "Vogel.h"
    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	int number;
    
    	cout << "\tAuswahl eines Haustiers!\n";
    	cout << "\n";
    
    	do
    	{
    		cout << "Welches Haustier wollen Sie denn?\n";
    		cout << "(1) Hund\n";
    		cout << "(2) Hamster\n";
    		cout << "(3) Katze\n";
    		cout << "(4) Vogel\n";
    		cout << "(0) Exit\n";
    		cin  >> number;
    		cout << "\n";
    
    		switch(number)
    		{
    			case 1:
    			{
    				Hund Dog;
    
    				cout << "Sie haben sich fuer einen Hund entschieden!\n";
    				cout << "\n";
    				cout << "Wie soll er denn heissen?\n";
    				string name;
    				cin  >> name;
    				Dog.setName(name);
    				cout << "\n";
    
    				cout << "Wer soll denn der Besitzer sein?\n";
    				string Besitzer;
    				cin.ignore(1);
    				getline(cin, Besitzer);
    				Dog.setBesitzer(Besitzer);
    				cout << "\n";
    
    				cout << "Welches charakteristisches Geraeusch soll er denn machen?\n";
    				string charakteristisches_Geräusch;
    				getline(cin, charakteristisches_Geräusch);
    				string noise;
    				Dog.setcharakteristisches_Geräusch(noise);
    				cout << "\n";
    
    				cout << "Wie gross soll denn der Hund werden?\n";
    				double Größe;
    				cin  >> Größe;
    				Dog.setGröße(Größe);
    				cout << "\n";
    
    				cout << "Wie schwer soll er denn werden?\n";
    				double Gewicht;
    				cin  >> Gewicht;
    				Dog.setGewicht(Gewicht);
    				cout << "\n";
    
    				cout << "Was wollen Sie denn mit dem Hund machen?\n";
    				string Gassi_gehen;
    				cin  >> Gassi_gehen;
    				Dog.set_Gassig_gehen (Gassi_gehen);
    				if (Gassi_gehen == Gassi_gehen)
    					cout << "Sie wollen also mit Ihrem Hund Gassi gehen\n";
    				else
    				{
    					cout << "Wozu schaffen Sie sich einen Hund an,";
    				    cout << "wenn Sie mit ihm nicht Gassi gehen wollen!\n";
    				}
    			}
    		case 2:
    			{
    				Hamster hamster;
    				cin.ignore(1);
    				cout << "Sie haben sich fuer einen Hamster entschieden!\n";
    				cout << "\n";
    
    				cout << "Wie soll er denn heissen?\n";
    				string name;
    				cin  >> name;
    				hamster.setName(name);
    				cout << "\n";
    
    				cout << "Wer soll denn der Besitzer sein?\n";
    				string Besitzer;
    				cin.ignore(1);
    				getline(cin, Besitzer);
    				hamster.setBesitzer(Besitzer);
    				cout << "\n";
    
    				cout << "Welches charakteristisches Geraeusch soll er denn machen?\n";
    				string charakteristisches_Geräusch;
    				getline(cin, charakteristisches_Geräusch);
    				string noise;
    				hamster.setcharakteristisches_Geräusch(noise);
    				cout << "\n";
    
    				cout << "Wie gross soll denn der Hammster werden?\n";
    				double Größe;
    				cin  >> Größe;
    				hamster.setGröße(Größe);
    				cout << "\n";
    
    				cout << "Wie schwer soll er denn werden?\n";
    				double Gewicht;
    				cin  >> Gewicht;
    				hamster.setGewicht(Gewicht);
    				cout << "\n";
    
    				cout << "Wieviel km/h soll denn Ihr Hamster im Laufrad machen?\n";
    				double Maximale_Laufradgeschwindigkeit;
    				cin  >> Maximale_Laufradgeschwindigkeit;
    				hamster.setMaximale_Laufradgeschwindigkeit(Maximale_Laufradgeschwindigkeit);
    				if(Maximale_Laufradgeschwindigkeit < 5)
    					cout << "Ok\n";
    				else
    					cout << "Das ist fuer einen Hamster viel zu viel.\n";
    			}
    		case 3:
    			{
    				cin.ignore(2);
    				Katze cat;
    
    				cout << "Sie haben sich fuer eine Katze entschieden!\n";
    				cout << "\n";
    
    				cout << "Wie soll sie denn heissen?\n";
    				string name;
    				cin  >> name;
    				cat.setName(name);
    				cout << "\n";
    
    				cout << "Wer soll denn der Besitzer sein?\n";
    				string Besitzer;
    				cin.ignore(1);
    				getline(cin, Besitzer);
    				cat.setBesitzer(Besitzer);
    				cout << "\n";
    
    				cout << "Welches charakteristisches Geraeusch soll er denn machen?\n";
    				string charakteristisches_Geräusch;
    				getline(cin, charakteristisches_Geräusch);
    				string noise;
    				cat.setcharakteristisches_Geräusch(noise);
    				cout << "\n";
    
    				cout << "Wie gross soll denn die Katze werden?\n";
    				double Größe;
    				cin  >> Größe;
    				cat.setGröße(Größe);
    				cout << "\n";
    
    				cout << "Wie schwer soll er denn werden?\n";
    				double Gewicht;
    				cin  >> Gewicht;
    				cat.setGewicht(Gewicht);
    				cout << "\n";
    
    				cout << "Wie viele Mäuse soll denn Ihre Katze fangen?\n";
    				double Anzahl_Mäuse_fangen;
    				cin  >> Anzahl_Mäuse_fangen;
    				cat.setAnzahl_Mäuse_fangen(Anzahl_Mäuse_fangen);
    				if(Anzahl_Mäuse_fangen>0)
    					cout << "Dann macht es Sinn, dass Sie sich eine Katze anschaffen.\n";
    				else
    					cout << "Dann macht es keinen Sinn, sich eine Katze anzuschaffen.\n";
    			}
    		case 4:
    			{
    				Vogel bird;
    
    				cout << "Sie haben sich fuer einen Vogel entschieden!\n";
    				cout << "\n";
    
    				cout << "Wie soll er denn heissen?\n";
    				string name;
    				cin  >> name;
    				bird.setName(name);
    				cout << "\n";
    
    				cout << "Wer soll denn der Besitzer sein?\n";
    				string Besitzer;
    				cin.ignore(1);
    				getline(cin, Besitzer);
    				bird.setBesitzer(Besitzer);
    				cout << "\n";
    
    				cout << "Welches charakteristisches Geraeusch soll er denn machen?\n";
    				string charakteristisches_Geräusch;
    				getline(cin, charakteristisches_Geräusch);
    				string noise;
    				bird.setcharakteristisches_Geräusch(noise);
    				cout << "\n";
    
    				cout << "Wie gross soll denn der Vogel werden?\n";
    				double Größe;
    				cin  >> Größe;
    				bird.setGröße(Größe);
    				cout << "\n";
    
    				cout << "Wie schwer soll er denn werden?\n";
    				double Gewicht;
    				cin >> Gewicht;
    				bird.setGewicht(Gewicht);
    				cout << "\n";
    
    				cout << "Welche Fluggeschwindigkeit soll denn Ihr Vogel haben?\n";
    				double Fluggeschwindigkeit;
    				cin  >> Fluggeschwindigkeit;
    				bird.setFluggeschwindigkeit(Fluggeschwindigkeit);
    				if (Fluggeschwindigkeit < 20)
    					cout << "Das ist in Ordnung.\n";
    				else
    					cout << "Das ist zu schnell fuer einen Vogel als Haustier!\n";
    
    			}
    		}		
    	}while(number!=0);
    
    	return 0;
    }
    

    Eine Veränderung in der Header Datei "Vogel.h" habe ich wie folgt vorgenommen:

    #pragma once
    #include "Haustier.h"
    #include <string>
    using namespace std;
    
    class Vogel : public Haustier
    {
    private:
    	double Fluggeschwindigkeit;
    public:
    	Vogel(void);
    	~Vogel(void);
    
    	double getFluggeschwindigkeit();
    	void setFluggeschwindigkeit(double);
    };
    

    Bloß tritt jetzt der Fehler auf, dass nicht wieder zum Menü zurück gesprungen wird, egal was ich eingebe.

    Ich sehe wirklich den Fehler nicht mehr... Kann mir einer von euch vielleicht helfen, indem er über den Code mal drüber schaut?

    Danke für die Antworten im Voraus.

    Gruß

    Max



  • Wenn du Funktionen kennst, dann packe bitte diverse Zusammenhänge in eine Funktion, um die Übersicht zu bewahren.

    Aber was mir aufgefallen ist: wählst du eines der Haustiere, dann wird alles bis zum nächsten break ausgeführt. Aber da sind keine breaks also wird auch ALLES ausgeführt. Wählst du (1)Hund, dann werden auch alle anderen ausgeführt. Wahrscheinlich nicht das, was du willst.



  • silent_max schrieb:

    cout << "Was wollen Sie denn mit dem Hund machen?\n";
    				string Gassi_gehen;
    				cin  >> Gassi_gehen;
    				Dog.set_Gassig_gehen (Gassi_gehen);
    				if (Gassi_gehen == Gassi_gehen)
    					cout << "Sie wollen also mit Ihrem Hund Gassi gehen\n";
    				else
    				{
    					cout << "Wozu schaffen Sie sich einen Hund an,";
    				    cout << "wenn Sie mit ihm nicht Gassi gehen wollen!\n";
    				}
    

    Das macht definitiv nicht das, was du willst...



  • Nathan schrieb:

    Das macht definitiv nicht das, was du willst...

    Ja stimmt, es endet in einer Endlosschleife... Hm ...



  • Dir ist schon klar, dass es nichts bringt, wenn man die selben Variablen miteineander vergleicht?


Anmelden zum Antworten