[解決済み] クラス宣言中括弧の後のセミコロン
2023-05-08 23:29:03
質問
C++のクラスでは、なぜ閉じ中括弧の後にセミコロンがあるのですか?私は定期的にそれを忘れて、コンパイラのエラーが発生し、それ故に時間が失われます。私にはやや余計なことのように思えますが、そうである可能性は低いでしょう。人々は本当にこのようなことをするのでしょうか?
class MyClass
{
.
.
.
} MyInstance;
構造体や列挙型の場合はCとの互換性の観点から理解できますが、クラスはC言語の一部ではないので、主に類似の宣言構造間の一貫性を保つためにあるのだと思われます。
私が探していたのは、何かを変更できるというよりも、設計の合理性に関連するものでした。
どのように解決するのですか?
型宣言の閉じ中括弧の後のセミコロンは、言語が要求しているものです。 C の最も古いバージョンからそうなっています。
そして、そう、人々はあなたが今そこに置いた宣言を実際に行います。 これはメソッドの中にスコープされた型を作成するのに便利です。
void Example() {
struct { int x; } s1;
s1.x = 42;
struct ADifferentType { int x; };
}
この場合、なぜセミコロンが必要なのかは明らかだと思います。 ヘッダーファイルで宣言する一般的なケースでなぜセミコロンが必要なのかについては、私にはよくわかりません。 私の 推測 は、歴史的なものであり、コンパイラーを書くことを容易にするために行われたのだと思います。
関連
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] C++でクラスと構造体はいつ使い分けるべきか?
-
[解決済み] JavaScriptのオブジェクトのクラスを取得する方法は?
-
[解決済み] 派生クラス関数から親クラス関数を呼び出すには?
-
[解決済み] JavaScriptでクラスを定義するために使用できるテクニックと、そのトレードオフとは?
-
[解決済み】定義と宣言の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】C++の変数はイニシャライザーを持っているが、不完全な型?
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】Eclipse IDEでC++エラー「nullptrはこのスコープで宣言されていません」が発生する件