次のサンプル コードは、Visual C++ で正常にコンパイルされます。
class Test {
private:
struct {
struct {
int privateData;
};
};
};
int main(int, char **)
{
Test test;
test.privateData = 0;
return 0;
}
しかし、なぜ?メンバーはそのコンテナーのコンテナーのようにprivateData
なっているはずなので、関数 main にアクセスできないため、コンパイラ エラーが発生することが予想されます。private
名前のない構造体が公式の C++ の一部ではないことは知っていますが、この設計は馬鹿げています。
ちなみに、私もに変更しようとprivate
しprotected
ましstruct
たunion
: コンパイラは、別の匿名構造体またはユニオン内にネストされている匿名構造体およびユニオンのアクセス修飾子を受け入れることを拒否しているようです。
誰かがこの機能を説明できますか?