ポリモーフィズム

画像を読み込むクラス、以下のようにしたらよさそう。

// 抽象クラス
class ImageReader{
  // ...
};

class JpegReader: public ImageReader{
  // ...
};

class BmpReader: public ImageReader{
  // ...
};
// など拡張子に合わせたクラス

こうするとmain関数では

ImageReader* ir;

if(...){ // 拡張子がjpgなら
  ir = new JpegReader();
}
else if(...){ // 拡張子がbmpなら
  ir = new BmpReader();
}
// など

こういう風にポリモーフィズムなクラスを使える。

他人のコード見てて、クラスをポインタで宣言してnewで確保してる人が多いけどその意図が分からなかった。
でも上のようにポリモーフィズムにするためのものなのかもしれない。
これだとコンパイル時ではなくて、実行時にどの派生クラスを使うかが決まる。
個人の研究で使ってる分にはあまり活躍する機会がない。

C++使い始めて3年目くらいだけど、まだまだ知らないことだらけだ。