0

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;
		
		}
	}
}
3
Contributors
3
Replies
4
Views
8 Years
Discussion Span
Last Post by shadowfire36
0

At those points in the code you are sending a pointer to a pointer to an object when the function/method wants a pointer to an object.

This looks like you want to send a particular element of the array but you are passing a pointer to the entire thing.


(Arrays are pointers)

0

It's just as the error says. The variable you pass to SearchMatches is an array of Match pointers, not an array of Match objects:

//initailze the matches ( array of strcuts )
Match *matches[2000];

There's no conversion from Match *matches[2000] to Match *matches . The only way to fix your code is to modify RunFootball so that it uses the expected type, or modify SearchMatches so that it expects the type you're actually passing.

0

so would this be the correct syntax ?
SearchMatches(Season,Team1,Team2 ,Result ,matchesCounter,TeamName)??

or should i do this

string seasonResults;
string team1Results;
string team2Results;
string AllResultsSaved;


Season-> seasonResults;
Team1-> team1Results;
Team2-> team2Results;
Result -> AllResultsSaved;

then

SearchMatches(seasonResults, team1Results,team2Results ,AllResultsSaved,matchesCounter,TeamName)????

This article has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.