良いスタイルよりも議論がありません。標準的なC++では正当なものに興味があります。これははるかに大きなコードで出てきた小さな例です。メンバ変数の型名と同じ名前を持つことは合法ですか?
ClangとVisual Studioはこれをエラーなくコンパイルし、完全にうまく動作しているようです。私はどちらからも警告をもらえません。
GCCは次のエラーを与え、さらには、コードをコンパイルすることを拒否...
test.cpp:1:8: error: changes meaning of 'test' from 'struct test' [-fpermissive]
は、この法律上のコードであり、そうでありませんか? 私はgccが何を言っているのか理解していますが、このコードは実際には間違っていますか?
struct test
{
int data;
};
struct app
{
test test;
};
int main()
{
app myapp;
myapp.test.data = 123;
}
データメンバーと変数だけに違いはありません。 –
@ Cheersandhth.-Alf:もちろんあります。 –
@LightnessRacesinOrbit:いいえ。 –