Fehler im Tutorial O_o ?



  • void PrintHeader (int pageNum); 
    
    int main ( ) 
    { 
        int pNum = 1;        // pNum initialisieren 
        PrintHeader(pNum);   // Funktion aufrufen 
                         // pNum ist hier immer noch 1! 
        PrintHeader(10);     // fixe Seitennummer 
    } 
    // Funktionsdefinition 
    void PrintHeader(int pageNum) 
    { 
            int pageNum; 
       cout << "Seiten-Nummer: " << pNum << endl; 
       pageNum = 99;         // Parameter verändern 
    }
    

    das kam da raus .... 😞

    [C++ Fehler] Unit1.cpp(16): E2238 Bezeichner 'pageNum' mehrfach deklariert
    [C++ Fehler] Unit1.cpp(17): E2451 Undefiniertes Symbol 'pNum'
    [C++ Warnung] Unit1.cpp(19): W8004 'pageNum' wurde ein Wert zugewiesen, der nie verwendet wird

    und was ist eigentlich hier mit gemeint:

    PrintHeader(10);   // fixe Seitennummer
    

    was heisst fixe Seitennumer 😮 😕



  • Hi,
    in der intalisierungliste von der Funktion PrintHeader wird pNum ja schon deklariert, das heißt sie ist in der Funktion bereits vorhanden und kann nicht nochmal erzeugt werden.
    D.h du musst "int pageNum;" aus der zweiten Funktion entfernen.

    MFG ReduX



  • Bassmaster schrieb:

    das kam da raus .... 😞

    Zeile 13 im ursprünglichen Code. Deine Änderung war sowieso Käse.



  • So ?

    #include <iostream>
    using namespace std;
    
    void PrintHeader (int pageNum);
    
    int main ( ) 
    { 
        int pNum = 1;        // pNum initialisieren
        PrintHeader(pNum);   // Funktion aufrufen 
                         // pNum ist hier immer noch 1! 
        PrintHeader(10);     // fixe Seitennummer 
    } 
    // Funktionsdefinition 
    void PrintHeader()
    { 
            int pageNum;
       cout << "Seiten-Nummer: " << pNum << endl;
       pageNum = 99;         // Parameter verändern 
    }
    

    da kommt bei mir diese fehlermeldung:

    [C++ Fehler] Unit1.cpp(17): E2451 Undefiniertes Symbol 'pNum'
    [C++ Warnung] Unit1.cpp(19): W8004 'pageNum' wurde ein Wert zugewiesen, der nie verwendet wird



  • ah jetzt geht es 🙂

    thx



  • aber wofür ist den jetzt:

    pageNum = 1;         // Parameter verändern
    

    in dem Kommentar steht ja Parameter verändern aber wenn ich da was veränder passiert gar nichts auch wenn ich es rausnehme funktioniert alles.



  • Das soll dir vermutlich zeigen, was C++ unter "call by value" versteht - du veränderst zwar lokal den Wert von pageNum (wenn du nach dieser Zeile noch eine Ausgabe machst, siehst du auch den veränderten Wert), aber das hat keine Auswirkung auf die übergebene Variable.



  • ok thx



  • warum kann der denn die Zahlen nicht aus geben wenn ich

    << pageNum << endl;
    

    weglasse



  • Weil das genau das die Ausgabe ist? Wenn du die Ausgabe weglässt, passiert natürlich keine Ausgabe mehr.

    Wenn das nicht das ist, was du meintest, dann drück dich doch bitte mal etwas klarer aus.



  • Weil genau der Teil der Zeile dem Compiler klarmacht, daß du die Zahl (und einen Zeilenwechsel) ausgeben willst - wenn du das weglässt, gibst du nur den Text "Seiten-Nummer:" aus. (und wenn das Semikolon fehlt, beschwert sich der Compiler (zu recht))



  • ok ich glaub jetzt hab is verstanden thx 🙂




Anmelden zum Antworten