1. ホーム
  2. C++

エラー: コンストラクタ、デストラクタ、または '.' トークンの前に型変換が必要です。

2022-02-14 08:42:29

最近のプロジェクトで、error: expected constructor, destructor, or type conversion before '. tokenというエラーが出たのですが、ようやく原因がわかりました。

<スパン C++では、グローバルスレッショルドは変数の宣言と初期化にのみ使用でき、代入、操作、関数呼び出しなどには使用できません!


初期化・代入について。(質問してくれたmonsionさんに感謝)

<スパン 初期化された変数の説明のため。
プログラム中の変数は複数回宣言できますが、定義は一度だけです。
なぜなら、定義だけがストレージを割り当て、初期化は初期化するためのストレージを持たなければならないからです。
宣言にイニシャライザがある場合は、定義として扱うことができる。
代入の理解のために:代入は演算であり、代入の等号は右から左への演算であり、グローバル変数には使用できない。
<スパン 分かりやすいかどうか分かりませんが、遠慮なくどんどん話してくださいね。

<スパン

私のプログラムでは、いくつかのグローバル変数を定義しています。


定義されたbool変数 aiml_load = aimlLoad(); の後に aiml_load = true という文を追加すると、タイトルのようにエラーが報告されるので、これを削除するとコンパイルできるようになります。この例は必ずしも適切ではありませんが、原理は同じです。エラーに遭遇した時に詳しく文書化しなかったことを後悔しているが、今はこのように生々しい例を挙げるしかない。