VC++ 6.0 で下記ソースのコンパイルがエラーとなります。
解決方法は見つけたのですが、
なぜ怒られるのか、わかりません。
理由が分かる方教えてください。

メンバ変数としてクラスを宣言して、
そのクラス名と同じ名前の関数を定義すると怒られます・・・。
----------------------
class Hoge {
};

class Niko {
public:
  Niko();
  ~Niko(); 
  void Hoge();
  Hoge hoge;  // NG
};

↓↓↓↓↓

class Niko {
public:
  Niko();
  ~Niko();
  Hoge hoge;  // 何故か入れ替えるとOK
  void Hoge(); // もしくは ::Hoge hoge; とすることでもOK
           // または Hoge2()など、別名にすることでもOK
};
Hoge()はNikoのメンバ関数のつもりですが、
Hogeクラスのコンストラクタとして解釈されている???