Probleme Dynamische Arrays



  • Was mache ich hier falsch?

    5a.3.1.cpp:25:25: error: indirection requires pointer operand ('int' invalid)
    hinzufuegen(*cdsammlung, *anzahl);
    ^~~~~~~~~~~
    5a.3.1.cpp:27:24: error: indirection requires pointer operand ('int' invalid)
    bearbeiten(*cdsammlung);
    ^~~~~~~~~~~
    5a.3.1.cpp:29:22: error: indirection requires pointer operand ('int' invalid)
    loeschen(*cdsammlung, *anzahl);

    #include <iostream>
    using namespace std;
    
    void verwaltung(char &cdsammlung, int &anzahl){
        int ve1 = 0;
        do{
            cout << "\n Verwaltung. \n \n";
            cout << "CD hinzufügen? So drücke '1'. \n";
            cout << "CD bearbeiten? So drücke '2'. \n";
            cout << "CD löschen? So drücke '3'. \n";
            cout << "Zurück? So drücke '0'. \n";
            cout << "Eingabe: ";
            cin >> ve1;
            if(ve1 == 0){
                return;
            } else if(ve1 == 1){
                hinzufuegen(*cdsammlung, *anzahl);
            } else if(ve1 == 2){
                bearbeiten(*cdsammlung);
            } else if(ve1 == 3){
                loeschen(*cdsammlung, *anzahl);
            } else{
                cout << "Falsche Eingabe! \n";
            }
        } while(ve1 != 0);
    }
    
    int main(){
    
        unsigned int anzahl = 0;
        char* cdsammlung = NULL;
        int pe1 = 0;
        do{
            cout << "\n Willkommen in deiner CD-Sammlung! \n \n";
            cout << "Verwalten? So drücke '1'. \n";
            cout << "Durchstöbern? So drücke '2'. \n";
            cout << "Beenden? So drücke '0'. \n";
            cout << "Eingabe: ";
            int pe1 = 0;
            cin >> pe1;
            if(pe1 == 0){
                return 0;
            } else if(pe1 == 1){
                verwaltung(*cdsammlung, *anzahl);
            } else if(pe1 == 2){
                durchstoebern(*cdsammlung, *anzahl);
            } else{
                cout << "Falsche Eingabe! \n";
            }
        } while(pe1 != 0);
    
        if(cdsammlung != NULL){
            delete [] cdsammlung;
        }
        return 0;
    }
    


  • Ist dir klar, dass in ein char , nur ein Zeichen passt?

    Auch hast du Zeiger und Referenz nicht verstanden.

    Und nach deinem Edit fehlt die Hälfte vom Code.



  • Benutze std::string statt char*!



  • Du könntest das ganze If - Else - Elsif gedöns mit nem einfachen switch wesentlich übersichtlicher machen.

    std::string würde dein Leben auch wesentlich vereinfachen aber wohl nur in Verbindung mit einem Grundlagen Buch.

    if(cdsammlung != NULL){
            delete [] cdsammlung;
        }
    

    Was willst du damit delete´n ? Ich seh nirgens ein new oder sonst eine Speicheranforderung??


Anmelden zum Antworten