well my struct is fix but i have new errors i hve never seen before :
here are the errors
football.cpp(194) : error C2664: 'void Football::SearchMatches(Match *,int,std::string)' : cannot convert parameter 1 from 'Match *[2000]' to 'Match *'
football.cpp(205) : error C2664: 'void Football::SearchMatches(Match *,int,std::string,int)' : cannot convert parameter 1 from 'Match *[2000]' to 'Match *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
new code FOR FOOTBALL.H after adjustments
#ifndef FOOTBALL_H
#define FOOTBALL_H
#include <iostream>
#include <fstream>
#include <string>
#include "Message.h"
using namespace std;
// definition of strct that will hold all information of match
struct Match
{
string Season;
string Team1;
string Team2;
string Result;
};
class Football : public Message
{
public:
void WriteLastSearchWord(string word);
void ReadLastSearchWord(string &team, int &record);
void SearchMatches(Match *matches,int size,string TeamName);
void SearchMatches(Match *matches,int size,string TeamName, int record);
void RunFootball();
Football(string *footBallData);
protected:
string &footBallSave;
string team;
};
#endif
new football .cpp
#include <iostream>
#include <fstream>
#include <string>
#include "Football.h"
#include "Message.h"
using namespace std;
//Search within array of matches and display the results
void SearchMatches(Match* matches,int size,string TeamName)
{
//declare the result array
Match SearchResult[2000];
//initalize the result counter
int SearchResultCount=0;
int SelectedNumber;
//search within the matches array
for(int i=0;i<size;i++)
{
//check if the entered name is the team1 or team2 in the match
if(matches[i].Team1==TeamName || matches[i].Team2==TeamName)
{
//update the search result counter
SearchResultCount++;
//display the seasons
cout<<endl<<"("<<SearchResultCount<<") "<<matches[i].Season;
//store the matched match in the search result array
SearchResult[SearchResultCount] = matches[i];
}
}
cout << endl;
//check for results
if(SearchResultCount>0)
{
cout << "which year would you like to view results "<<endl;
cin>>SelectedNumber;
SelectedNumber;
ofstream myfile;
myfile.open("nflSave.txt",ios::app);
myfile << endl << SelectedNumber;
myfile.close();
//display the match information
cout<<SearchResult[SelectedNumber].Season<<endl;
cout<<SearchResult[SelectedNumber].Team1<<endl;
cout<<"Over"<<endl;
cout<<SearchResult[SelectedNumber].Team2<<endl;
cout<<SearchResult[SelectedNumber].Result<<endl;
}
else cout<<"No search result";
cout<<endl;
}
void SearchMatches(Match* matches,int size,string TeamName, int record)
{
//declare the result array
Match SearchResult;
//initalize the result counter
int SearchResultCount=0;
//int SelectedNumber;
//search within the matches array
for(int i=0;i<size;i++)
{
//check if the entered name is the team1 or team2 in the match
if(matches[i].Team1==TeamName || matches[i].Team2==TeamName)
{
//update the search result counter
SearchResultCount++;
if (SearchResultCount == record)
{
//store the
//display the seasons
//cout<<endl<<"("<<SearchResultCount<<") "<<matches[i].Season;
//store the matched match in the search result array
SearchResult = matches[i];
break;
}
}
}
cout<<endl;
//check for results
if(SearchResultCount>0)
{
//display the match information
cout<<SearchResult.Season<<endl;
cout<<SearchResult.Team1<<endl;
cout<<"Over"<<endl;
cout<<SearchResult.Team2<<endl;
cout<<SearchResult.Result<<endl;
}
else cout<<"No search result";
cout<<endl;
}
// This function is used for storing the last search keyword entered to the recallteam.txt
void WriteLastSearchWord(string word)
{
ofstream myfile;
myfile.open("nflSave.txt");
myfile << word;
myfile.close();
}
// This function is used for read the last search keyword enter from the recallteam.txt
void ReadLastSearchWord(string &team, int &record)
{
ifstream inFile("nflSave.txt");
getline(inFile, team);
inFile >> record;
inFile.close();
}
void Football::RunFootball()
{
ifstream inFile("nfl.txt");
//initailze the matches ( array of strcuts )
Match *matches[2000];
// create input stream for file
//It will holds the read lines from the file
string Buffer;
// check if the file is exist
if(!inFile.is_open())
{
//display the error message
//cout<<"Failed to open file"<<endl;
cerr << " File is Missing";
}
// initalize the counter
int matchesCounter=0;
while(!inFile.eof())
{ //&Match::operator =(const Match &)
//read season
matches[matchesCounter] = new Match;
getline(inFile,Buffer);
matches[matchesCounter]->Season = Buffer;
//read team1 name
getline(inFile,Buffer);
matches[matchesCounter]->Team1 = Buffer;
//read the "over" string
getline(inFile,Buffer);
//read team2 name
getline(inFile,Buffer);
matches[matchesCounter]->Team2 = Buffer;
//read result
getline(inFile,Buffer);
matches[matchesCounter]->Result = Buffer;
//read the empty line
getline(inFile,Buffer);
//update the matches counter
matchesCounter++;
}
//its used for Main menu selection
char Check='1';
while(Check !='3')
{
//Display the main menu
cin>>Check;
switch(Check)
{
//Search
case '1':
{
string TeamName="";
getline(cin,TeamName);
system("cls");
cout << "Please Enter Team City And Team Name" <<endl;
getline(cin,TeamName);//free's buffer
WriteLastSearchWord(TeamName);
SearchMatches(matches,matchesCounter,TeamName);
break;
}
//Display the last search team
case '2':
{
string team;
int record;
ReadLastSearchWord(team, record);
system("cls");
cout << "Last Recorded Viewed" <<endl;
SearchMatches(matches,matchesCounter ,team , record);
break;
}
//Exit the program
case '3':
{
exit(0);
}
default:continue;
}
}
}