ok i have wrote this program and been trying to break into a class called football , but i keep getting an:
error error C2228: left of '.Season' must have class/struct/union
i have tried moving my stuct around in and out of the class but im not sure how to cure this problem any help and remmendations would be great
im going to leave my original code and my current code with header
football.h
#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);
int RunFootball();
Football(string *footBallData);
protected:
string &footBallSave;
string team;
};
#endif
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();
}
int 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;
return 0;
}
// initalize the counter
int matchesCounter=0;
while(!inFile.eof())
{
//read season
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;
}
}
}
|
shadowfire36 May 15, 2008 at 12:33am
here is the original code
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// definition of strct that will hold all information of match
struct Match
{
string Season;
string Team1;
string Team2;
string Result;
};
// Display the main menu on screen
void DisplayMainMenu()
{
cout<<"1- Please enter team name"<<endl;
cout<<"2- View last record"<<endl;
cout<<"3- Exit program"<<endl;
cout<<"Please select number"<<endl;
}
//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("recallTeam.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("recallTeam.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("recallTeam.txt");
getline(inFile, team);
inFile >> record;
inFile.close();
}
int main()
{
ifstream inFile("nfl.txt");
//initailze the matches ( array of strcuts )
Match matches[2000];
// create input stream to nba.txt 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;
return 0;
}
// initalize the counter
int matchesCounter=0;
while(!inFile.eof())
{
//read season
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
DisplayMainMenu();
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;
}
}
}