ネストされた値の型へのハンドルを宣言すると、Visual Studio (2008 および 2010) で次のコンパイラ エラーが発生します。
error C2248: 'Outer::Inner' : cannot access private struct declared in class 'Outer'
コンパイルに失敗するコードは次のとおりです。
ref class Outer
{
private:
value struct Inner { };
void F()
{
Inner i; // OK
Inner^ h; // C2248
}
};
Innerの型をvalue structからref structに変更すると、問題はなくなります。
ref class Outer
{
private:
ref struct Inner { };
void F()
{
Inner i; // OK
Inner^ h; // OK
}
};
入れ子になった値の型へのハンドルに関する規則で見逃したものはありますか、それとも VS のバグですか?