Нужна помощь в выявлении проблемы с исходным кодом C (заголовок, структура, усложнение класса)

#c

#c

Вопрос:

ошибка: «прототип для WeatherForecaster ::WeatherForecaster (std ::все переменные) не соответствует ни одному классу в WeatherForecaster» У меня нет идей о том, как этого избежать. Кстати, мой основной код не имеет ничего общего с ошибкой.

САМАЯ ПОСЛЕДНЯЯ ОШИБКА, ОСТАЛЬНОЕ ИСПРАВЛЕНО. Теперь я получаю сообщение об ошибке в main «нет соответствующей функции для вызова WeatherForecast::WeatherForecast()». После того, как я создам переменную wf WeatherForecast.

Источник:

 #include "WeatherForecaster.h" //header being included
#include<iostream>
using namespace std;

//error comes here 
WeatherForecaster::WeatherForecaster(string d, string fd, int h, int l,      
int hum,int avgw, string avgwd, int maxw, string maxwd, double p)
{

string day=d;
string forecastDay=fd;
int highTemp=h;
int lowTemp =l;
int humidity=hum;
int avgWind= avgw;
string avgWindDir=avgwd;
int maxWind=maxw;
string maxWindDir= maxwd;
double recip=p;
}
WeatherForecaster::~WeatherForecaster(){

    //dtor
};//end of block of source code
 

Заголовок: я совершаю такую простую ошибку, я просто не уверен, что это такое.

 #ifndef WEATHERFORECASTER_H
#define WEATHERFORECASTER_H

#include <iostream>
using namespace std;

//does my code have a problem with how it interacts with this struct?
struct ForecastDay{
std::string day;
std::string forecastDay;
int highTemp;
int lowTemp;
int humidity;
int avgWind;
std::string avgWindDir;
int maxWind;
std::string maxWindDir;
double precip;

};

class WeatherForecaster

{
public://most recent error ") expected before 'd'"
    WeatherForecaster(string d, string fd, int h, int l,
 int hum,int avgw, string avgwd, int maxw, string maxwd, double p);
    ~WeatherForecaster();
    void addDayToData(ForecastDay);
    void printDaysInData(); 
    void printForecastForDay(std::string);
    void printFourDayForecast(std::string);
    double calculateTotalPrecipitation();
    void printLastDayItRained();
    void printLastDayAboveTemperature(int); //argument is the    
     temperature
    void printTemperatureForecastDifference(std::string);
    void printPredictedVsActualRainfall(int); 
    std::string getFirstDayInData();
    std::string getLastDayInData();

 protected:
 private:
    int arrayLength;
    int index;
    ForecastDay yearData[984]; 
 };

#endif // WEATHERFORECASTER_H
 

Комментарии:

1. Не вставляйте using namespace std; заголовочные файлы. Кто бы ни придумал этот заголовок, он не делает вам никаких одолжений, делая это.

2. Вы используете std::string без #include <string> . Это выдаст вам ошибку для d параметра.

Ответ №1:

Где ваше объявление конструктора, принимающего эти параметры (string d, string fd, int h, int l, int hum, int avgw, string avgwd, int maxw, string maxwd, double p) в заголовке?

Комментарии:

1. Разве это не структура в начале заголовка

2. Я думаю, вы неправильно поняли мой вопрос. Я не видел соответствующего объявления вашего реализованного «конструктора» в заголовочном файле. Так что, может быть, в этом и проблема.

3. Я не могу изменить заголовок. Должно быть, что-то не так с моим источником. Я определенно неправильно понял ваш вопрос

4. @grilam14 Я не могу изменить заголовок. — Тогда человек, написавший заголовок, выставляет вас дураком. Единственный способ устранить проблему — это исправить заголовочный файл.

5. Я был неправ. Я могу отредактировать его, неправильно прочитав инструкции, потратив столько часов.

Ответ №2:

Это точно так, как указано в сообщении об ошибке: вам нужно добавить прототип для «WeatherForecaster (строка d, строка fd, int h, int l, int hum, int avgw, string avgwd, int maxw, string maxwd, double p)» в ваш класс WeatherForecaster.

Комментарии:

1. Вероятно, это неодобрительный ответ, но я такой неопытный: как мне это сделать?

2. вы должны добавить конструктор в заголовок «неизменяемый».

3. Класс внутри вашего заголовочного файла имеет только один конструктор: WeatherForecaster() , этот конструктор не принимает аргументов. Вам нужно добавить строку с аргументами в заголовок.

4. Извините, что я неправильно понял свои инструкции. Теперь я получаю ошибку «), ожидаемую перед ‘d’) после ввода этих аргументов в конструктор WeatherForceaster () в заголовке