Inhaltlicher Fehler - Vector wird angegelichen



  • mabmib schrieb:

    HighLigerBiMBam schrieb:

    void show()
    {
    cout << "a: " << a << endl
    << "b: " << b.c_str() << endl
    << "c: " << c << endl;
    }[/cpp]

    Dass du darauf verzichtest, den operator<< zu überladen kann ich bei dem zu Helfenden verstehen. Aber warum du b.c_str() aufrufen musst verstehe ich nicht ganz.

    Und dass du anstatt

    A(int aa, string bb, double cc): a(aa), b(bb), c(cc){}
    
    A(int a, string b, double c): a(a), b(b), c(c){}
    

    schreibst, kann ich mir didaktisch nicht erklären.

    Übrigens muss man das "private:" am Anfang einer Klasse nicht schreiben, aber eigentlich schreibt man die Member in der Reihenfolge public-protected-private.

    Das mit c_str kann ich gerade auch nicht verstehen... Ist halt nicht nötig.

    Der Rest ist mehr persönliche Preferenz, ich denke, dass diese Art Konstruktor schon für ihn neu sein könnte, und abweichende Bezeichnungen leichter verständlich sind, welche der Variablen wo stehen muss.

    Lieber einfacher und anschaulicher.



  • habs jetzt soweit, weiß aber nicht wie ich das jetzt kontrolliert abrufen kann...
    Wäre nett wenn ihr mir nochmal helfen würdet:

    #include <iostream>
    #include <conio.h>
    #include <vector>
    #include <Windows.h>
    #include <string>
    
    using namespace std;
    
    //VECTOREN//
    int zero = 0;
    vector<string> name(zero);
    vector<string> mhd(zero);
    vector<int> anzahl(zero);
    
    	// FUNKTIONEN //
    
    class vorrat
    {
    private:
    	string produktname;
    	string verfall;
    	int stk;
    public: 
    	vorrat(int anzahlclass, string nameclass, string mhdclass): stk(anzahlclass), produktname(nameclass), verfall(mhdclass){}
    	void neu()
    	{
    					int neue;
    					cout<<"Anzahl einzugebener Produkte eingeben!"<<endl;
    					cin>>neue;
    					for(int i = 0; i<neue; i++)
    						{
    							string name_cin,
    									mhd_cin;
    								int anzahl_cin;
    							cout<<"Name des Produktes eingeben!\n"<<endl;
    							cin>>name_cin;
    							cout<<"Mindest-MHD des Produktes eingeben!\n"<<endl;
    							cin>>mhd_cin;
    							cout<<"Anzahl an Produkten dieser Sorte eingeben!\n"<<endl;
    							cin>>anzahl_cin;
    							vector<vorrat> objekt;
    							vorrat obj(anzahl_cin,name_cin,mhd_cin);
    							objekt.push_back(obj);
    
    						}
    
    	}
    
    	void anzahl_neu()
    	{
    		int nummer,
    			neue_nummer;
    						cout<<"Nummer des Produktes angeben, von welchem die Stückzahl geändert werden soll!"<<endl;
    						cin>>nummer;
    						cout<<"Neue Stückzahl eingeben!"<<endl;
    						cin>>neue_nummer;
    						anzahl[nummer-1] = neue_nummer;
    						cout<<"\nProduktname:           "<<name[nummer-1];
    						cout<<"\nAnzahl:              "<<anzahl[nummer-1];
    	}
    
    	void ausgabe()
    	{
    		for(int i = 0; i<name.size(); i++)
    					{
    						cout<<"["<<i+1<<"]"<<endl;
    						cout<<"\nProduktname:           "<<name[i];
    						cout<<"\nMHD:                 "<<mhd[i];
    						cout<<"\nAnzahl:              "<<anzahl[i];
    						cout<<"\n. . . . . . . . . . . . . \n\n"<<endl;
    					}
    	}
    
    };
    
    void fehler()
    {
    	cout<<"FEHLER! Keine gültige Eingabe!"<<endl;
    	getch();
    }
    
    int main ()
    {
    	vorrat obj(1,"Hallo","hallo");
    	int aktion_in;
    	do
    	{
    	cout<<"Hallo! Bitte geben sie ihre gewünschte Aktion ein! \n [1] - Produkt hinzufügen \n [2] - Stueckzahlen aendern"<<endl;
    	cin>>aktion_in;
    		if(aktion_in == 1 && aktion_in)
    		{
    			obj.neu();
    		}
    		else if(aktion_in == 2)
    		{
    			obj.anzahl_neu();
    		}
    		else if(aktion_in != 1 && aktion_in != 2)
    		{
    			fehler();
    			main();
    		}
    
    	obj.ausgabe();
    	getch();
    	}while(1);
    }
    


  • das ist so einiges falsch. Ich weiss nicht mal wo ich anfangen soll. Lass erstmal die Funktionen außerhalb der Klasse und versuche nur die Werte in die Klasse zu schreiben, eventuell auch als public und diese dann in deinen Funktionen zu verwenden. Ersetze deine 3 vectoren mit einem Vektor<vorrat> und erstelle keinen neuen temporären innerhalb deiner Funktionen.

    Versuch es erst Schritt für Schritt und nicht alles zusammen. Sonst wird der Frust groß.



  • Ich kriegs nicht hin 😞


Anmelden zum Antworten