stream Referenz



  • class foo { 
    ...
    void read(istream&)
    ...
    };
    
    main()
    {
    //das geht nicht:
    foo bla;
    bla.read(ifstream("a.txt"));
    
    //das geht:
    foo bla;
    ifstream blub("a.txt");
    bla.read(blub);
    }
    

    Warum geht das erste nicht? ich dachte ein Parameter hat die Laufzeit der Funktion, warum gibt das also Probleme?



  • Hallo,
    eine Referenz auf nicht-const kann nur an ein lvalue gebunden werden. Das unbenannte Objekt, dass als Ergebnis von ifstream("a.txt") entsteht, ist aber kein lvalue. Deshalb kommt der Fehler.


Anmelden zum Antworten