Modernes C++ programmieren

Okt 20, 2024

lst-0016-godb.cpp

//#(compile) c++; compiler:g141; options:-O1 -std=c++23; libs:-
// https://godbolt.org/z/Y4sMdzde8
struct StereoImage {
    Image* right_;         // (ERR) raw pointer
    Image* left_;          // (ERR) raw pointer
    StereoImage(const string& nameBase)          // construct
      : right_{new Image{nameBase+"right.jpg"}}  // okay
      , left_{new Image{nameBase+"left.jpg"}}    // dangerous
      { }
    ~StereoImage() {       // remove
        delete right_; delete left_;
    }
    StereoImage(const StereoImage&) = delete;    // no copy
    StereoImage& operator=(const StereoImage&) = delete; // no assignment
};
int main() {
    Image* image = new Image{"image.jpg"};       // (ERR) a raw pointer?
    StereoImage stereo{"3d"};
    delete image;
}