« C++ TR1 強い型付けの列挙型 | メイン | C++ TR1 静的な表明 »

nested classからは親のprivate空間にアクセスできるか。

nested classからは親のprivate空間にアクセスできるか。

C++Builder 2009でもエラーになりました。残念。

[BCC32 エラー] File1.cpp(25): E2247 'Hoge::func()' はアクセスできない

元ネタは、!Inner classes have no special access to the outer class in C++.

class Hoge {
public:
  Hoge () : bar_(*this) {}
private:
  class Bar {
  public:
    Bar(Hoge& hoge) : hoge_(hoge) {}
    void func() {
      hoge_.func();
    }
    Hoge& hoge_;
  };
  Bar bar_;
  void func(){
    cout << "func" << endl;
  }
public:
  Bar& Bar() { return bar_; }
};

int main()
{
  Hoge hoge;
  hoge.Bar().func();
  return 0;
}

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/820

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年09月28日 12:27に投稿されたエントリーのページです。

ひとつ前の投稿は「C++ TR1 強い型付けの列挙型」です。

次の投稿は「C++ TR1 静的な表明」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35