1. ホーム
  2. c++

[解決済み] エラー: ';'トークンの前にコンストラクタ、デストラクタ、または型変換を期待しますか?

2022-02-11 13:59:56

質問

データファイルを読み込んで印刷する関数をテストするためにコードをコンパイルしようとしていますが、理解できないコンパイルエラーが発生します - "error: expect constructor, destructor, or type conversion before ';' token". 以下、関連するコードテキストの壁です。

struct Day
{
  int DayNum;
  int TempMax;
  int TempMin;
  double Precip;
  int TempRange;
};

struct Month
{
  Day Days[31];
  int MonthMaxTemp;
  int MonthMinTemp;
  double TotalPrecip;
  int MonthMaxTempRange;
  int MonthMinTempRange;
  double AverageMaxTemp;
  double AverageMinTemp;
  int RainyDays;
  double AveragePrecip;
}theMonth;

double GetMonth();

double GetMonth()
{
  for (int Today = 1; Today < 31; Today++)
    {
      cout << theMonth.Days[Today].TempMax << theMonth.Days[Today].TempMin;
      cout << theMonth.Days[Today].Precip;
    }
  return 0;
}

GetMonth();  // compile error reported here

解決方法は?

エラーのある行は、GetMonthを呼び出そうとしているように見えますが、グローバルレベルでは、C++のプログラムは一連の宣言で構成されています。関数呼び出しは宣言ではないので、グローバルレベルでは孤立して存在することはできません。宣言は定義でもあり、その場合、初期化の一部として関数を呼び出すことができます。

しかし、関数呼び出し自体は、他の関数の中に含まれていなければなりません。

#ifdef TEST
int main() { 
    GetMonth();
}
#endif