#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 () в заголовке