ゆとりーなの日記

日記的な事を書いて行くと思はれる

無名クラスの話

クラスの中に無名クラスを定義したとします。

class atama {
 public:
  class {
   public:
    bool haged_;
  };
};

int main() {
  atama supposuppo;
  supposuppo.haged_;
}

こいつはコンパイルが通ります。
一方で、

class atama {
 public:
  class {
   public:
    bool haged() {}
  };
};

int main() {
  atama supposuppo;
  supposuppo.haged();
}

こいつはこけます。無名クラスにメンバ関数があるとどうやら駄目みたいです。
因みに環境はVC++2010EEです。規格とかはよく知りません。
追記

#include <string>

class atama {
 public:
  class {
   public:
    std::string haged_;
    void haged() {}
  };
};

int main() {
  atama supposuppo;
  supposuppo.haged_;
  supposuppo.haged(); // コンパイルエラー
}

メンバ関数があってもメンバ変数呼び出しはいけました。