Modernes C++ programmieren

Okt 23, 2024

lst-0523-godb.cpp

//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/Mqrxxs11Y 
struct StereoImage {
    Image* rechts_;        //             (ERR)  roher Zeiger
    Image* links_;         //             (ERR)  roher Zeiger
    StereoImage(const string& nameBase)           // konstruieren
      : rechts_{new Image{nameBase+"rechts.jpg"}} // okay
      , links_{new Image{nameBase+"links.jpg"}}   // gefährlich
      { }
    ~StereoImage() {       // entfernen
        delete rechts_; delete links_;
    }
    StereoImage(const StereoImage&) = delete;     // keine Kopie
    StereoImage& operator=(const StereoImage&) = delete; // keine Zuweisung
};
int main() {
    Image* bild = new Image{"bild.jpg"};          //             (ERR)  einem rohen Zeiger?
    StereoImage stereo{"3d"};
    delete bild;
}