読者です 読者をやめる 読者になる 読者になる

BCC32でのSingletonパターン

C++ Tips

アプリケーションの設定状態などを記憶する場合など、昔はグローバル変数を使っていたけれども、最近のトレンドはSingletonパターン。
手軽に実装すると以下のような感じになるはず。

class CFoo
{
private:
  CFoo() {}
  CFoo(const CFoo& foo){}
  ~CFoo(){}

public:
  static CFoo& getInstance() {
    static CFoo s_Instance;
    return s_Instance;
  }
};

だけど、このコードをBCC32 5.6.4/5.82でコンパイルすると、"エラー E2166 test.cpp 20: 'CFoo' のデストラクタにアクセスできない"となり、コンパイル出来ません。(´・ω・`)ショボーン
一応、QCにも登録されています。
staticメンバ関数からprivateメンバであるデストラクタにアクセスできないのは文法的におかしいので、多分BCC32のバグかな?
ちなみに、同じコードをVS2005やgccに食わせても問題ありませんでした。