4

行でエラーが発生します102, 115, and 128。私は何を間違っていますか?それは言います:

数値定数の前に unqualified-id が必要です

そして、それが何を意味するのかわかりません。私はこれを 1 週間修正しようとしましたが、今週の水曜日に私の C++ クラスで修正する予定です。ここで外部のアドバイスを実際に使用できます。私は何を間違っていますか:

#include <iostream>
#include <fstream>
#include <iomanip>
#include <conio.h>
#include <string>

using namespace std;

double qMeter = 0;
double hMeter = 0;
double oneMeter = 0;
int solDay = 0;
string garbage;
string localTime;
string decSol;
ifstream input;
ofstream output;

//function prototypes
double low(double lowTemp);
double high(double highTemp);
float average(double avgTemp);

int main()
{

input.open("curiosity234x.dat"); //opens input data file
output.open("output.dat"); //opens output data file


  for (int i = 0; i < 4; i++) //gets rid of the first four lines
{
  getline(input,garbage);
  cout << endl;
}

while (!input.eof())
{
    int count; 
    double newOneMeter;
    double newHMeter;
    double newQMeter;

    if (solDay == 2) //processes data for the second solar day
    {
     input >> solDay >> localTime >> decSol 
     >> newOneMeter >> newHMeter >> newQMeter;

     oneMeter = oneMeter + newOneMeter;
     hMeter = hMeter + newHMeter;
     qMeter = qMeter + newQMeter;
     count++;

     output << solDay << fixed << setprecision(1) << setw(5)
        << "Solar" << "Average" << "Low" << "High"
        << "Average" << "Low" << "High" 
        << "Average" << "Low" << "High" 
        << "Day" << "Temp" << "Temp" << "Temp" << "Temp" << "Temp"
        << "Temp" << "Temp" << "Temp" << "Temp"
        << fixed << setprecision(15) << "1 meter" << ".5 meters"
        << ".25 meters"
        << average(oneMeter) << low(oneMeter) << high(oneMeter)
        << average(hMeter) << low(hMeter) << high(hMeter)
        << average(qMeter) << low(qMeter) << high(qMeter);
    }

    if (solDay == 3) //processes data for the third solar day
    {
     input >> solDay >> localTime >> decSol 
     >> newOneMeter >> newHMeter >> newQMeter;

     oneMeter = oneMeter + newOneMeter;
     hMeter = hMeter + newHMeter;
     qMeter = qMeter + newQMeter;
     count++;

     output << solDay << fixed << setprecision(1) << setw(5)
        << "Solar" << "Average" << "Low" << "High" 
        << average(oneMeter) << low(oneMeter) << high(oneMeter)
        << average(hMeter) << low(hMeter) << high(hMeter)
        << average(qMeter) << low(qMeter) << high(qMeter);
    }
  }

  cout << endl << "The output.dat file has been written and transmitted.";
  /*
  reads first line. Assigns first string to 'int solDay' 
  second to 'string time', third to decSol, fourth to oneMeter, 
  fifth to hMeter and sixth to qmeter. Meters should have setw().
  */
getch();
return 0;

input.close();
output.close();
}


//functions used in main
double low(double lowTemp)
{
   int test = 10,000;
   double least;

   if (lowTemp < test)
   {
     lowTemp = test;
     lowTemp = least;       
    }
    return least;
}

double high(double highTemp)
{
   int test = 10,000;
   double most;

   if (highTemp < test)
   {
      highTemp = test;
      highTemp = most;        
    }
   return most;
}

float average(double avgTemp)
{
   avgTemp = avgTemp / count;
   return avgTemp;
}
4

2 に答える 2

8

このエラーに遭遇したとき、私はこのエラーを検索しました。私の悩みの原因は?サードパーティ API ヘッダーからプロジェクトに含まれていた #define 値と同じ名前をクラスに付けようとしていました。別のクラス名を試してみたら、コンパイルできました!

于 2013-08-29T03:22:37.190 に答える
4

102 行目と 115 行目のエラーは、 にコンマが含まれていることが原因ですが、そうで10,000ある必要があります。コンマは数値区切り文字として使用できません。実際に使用しているのは、式を左から右に評価し、最後の式のみを返すコンマ演算子です。したがって、この場合:10000

int test = 10,000;
           ^  ^
           |  Expression 2
           Expression 1

優先順位が高いため、=最初に発生し、構文エラーが残ります。

int test = (10,000);

10が破棄され、 8 進リテラル 000が に代入されtestます。

行 128 の最後のエラーは、count がローカルであるにもかかわらず、でmain使用しようとしているという事実によるものです。2 番目のパラメーターとしてaverage渡す必要がありcountます。

于 2013-02-25T04:01:08.193 に答える