#include <iostream> class Foo final { public: Foo() = default; ~Foo() = default; private: int value; struct { int x; int y; }; union { int a; float b; }; union { int v[2]; struct { int z; int w; }; }; }; void main() { Foo foo; //foo.value; // NG. //foo.x = 10; // NG //foo.a = 10; // NG // foo.v[0] = 10; // NG // foo.v[1] = 10; // NG foo.z = 10; // !? foo.w = 11; // !? std::cout << foo.z << std::endl; // !? std::cout << foo.w << std::endl; // !? }
Error(Active)
特に問題はなし。
※ 9行目の private を public にすれば表示はされない。
Error message
エラーメッセージが出力されない。
ビルドに成功し実行ファイルが生成される。
Console out
!?
この状態で他のエラー要因(なんでもよい)を挿入すれば、
それに誘発されて本件もエラーメッセージに出力はされる。
が、他のエラー要因がなくなると元通り(Debug / Release 関係なし)。
※ 追記
Intellisenseには表示されないので見落としてしまう上、
private としているので直感もあてにならない・・・。
3年程前の Stack Overflow に同問題があるのを見つけた。
Stack Overflow: C++ private modifier ignored on nested anonymous struct
放置かい!
0 件のコメント :
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。