まとめstruct
: aと aclass
を同じ名前で宣言するとどうなるか。
詳細:
いくつかのコードを見直しているところ、次のような警告が表示されました。
warning: struct 'foo' was previously declared as a class
clang でコンパイルすると、clang が次のようなメモを追加する場所がいくつかありました。
foo.h:29:1: note: did you mean struct here?
class foo;
^~~~~
struct
明らかに、同じ名前の構造体とクラスを持つことは、適切なコーディング方法ではありません。何が起こったのかというと、開発者が自分のクラスを書いていて、彼がインクルードしていた別のファイルで既に使用されている名前を使用していたのに、彼はそれに気付かなかったようです。
ただし、私の質問は、コンパイラがとして宣言された変数とそうであった変数の違いを伝えることができるclass foo
でしょstruct foo
うか?
編集:
実際に起こっていたことは、開発者が作成した を使用してclass foo
いたclass bar
ことです。class foo
その間にが宣言されていた場所が に変更されたと思いますstruct bar
。そのため、コードがコンパイルされていました。したがって、私の質問に対する答えは、オブジェクトを宣言するときにstruct
とは交換可能であると思います。class
それでも、一貫して使用することは良い考えだと思います。