Hey everyone,
I am using Visual Studio 2008 to debug some code where the goal is create a linked list using pointer variables. Here is the main error I am getting when trying to compile:
error C2227: left of '->Account' must point to class/struct/union/generic type type is 'Link_t'
If I can figure out what it means, I will be able to get like 98% of the code debugged.
At any rate here is my code, any help would be appreciated because linked lists are giving be a great bit of trouble
//Assignment 8
//Linked Lists
//Pointer Variable Implementation
//Devang Joshi
#include <iostream>
#include <iomanip>
#include <cstring>
#include <cmath>
#include <fstream>
using namespace std;
//*************************************************************************************************
/* Global Variables */
//*************************************************************************************************
const int NAMESIZE=25;
const int FILENAME=51;
const int MAXLISTSIZE=200;
typedef char Name_t[NAMESIZE];
typedef char Filename_t[FILENAME];
typedef int ID_t;
typedef double Bal_t;
typedef fstream Infile_t;
typedef fstream Outfile_t;
typedef int Link_t;
//*************************************************************************************************
/* Class Declerations */
//*************************************************************************************************
class cAccount
{
private:
Name_t fname;
Name_t lname;
ID_t aID;
Bal_t aBal;
public:
cAccount();
void Read (Infile_t &Infile);
void Print (Outfile_t &Outfile);
void Display();
int compID2ID(cAccount NewAccount);
};// end cAccount
//*************************************************************************************************
/* Struct Declerations */
//*************************************************************************************************
struct LLEle_t
{
cAccount Account;
LLEle_t * Link_t;
};// end ListEle_t
//*************************************************************************************************
/* Link Decleration */
//*************************************************************************************************
typedef LLEle_t * Link;
//*************************************************************************************************
/* Class Function Implementations */
//*************************************************************************************************
cAccount::cAccount()
{
strcpy(fname,"");
strcpy(lname,"");
aID=0;
aBal=0;
}// end cAccount::cAccount
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void cAccount::Read(Infile_t &Infile)
{ Infile>>aID>>lname>>fname>>aBal;}// end cAccount::Read
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void cAccount::Print(Outfile_t &Outfile)
{
Outfile<<setw(10)<<"ACCOUNT-ID: "<<aID<<endl;
Outfile<<setw(10)<<"ACCOUNT NAME: "<<lname<<","<<fname<<endl;
Outfile<<setw(10)<<"ACCOUNT BALANCE: $"<<aBal<<endl;
Outfile<<"------------------------------------------------"<<endl;
}// end cAccount::Print
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void cAccount::Display()
{
cout<<setw(10)<<"ACCOUNT-ID: "<<aID<<endl;
cout<<setw(10)<<"ACCOUNT NAME: "<<lname<<","<<fname<<endl;
cout<<setw(10)<<"ACCOUNT BALANCE: $"<<aBal<<endl;
cout<<"------------------------------------------------"<<endl;
}// end cAccount::Display
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
int cAccount::compID2ID(cAccount NewAccount)
{
int count;
count=0;
if(this->aID > NewAccount.aID)
{ count=-1;}// end if
else if(this->aID < NewAccount.aID)
{ count=1; }// end else if
else
{ count=0;}//end else
return count;
}// end cAccount::compID2ID
//*************************************************************************************************
/* Function Prototypes */
//*************************************************************************************************
void Insert(Link_t &Head, Link_t &Pred,cAccount NewAccount);
void Search4Pred(Link_t &Pred,Link_t List,Link_t Start, cAccount Account);
void Add(Link_t &Avail,Link_t &Start, cAccount NewAccount);
void Load(Link_t &Start,Link_t &Avail);
void Display(Link_t Start, Link_t Avail);
void Print(Link_t Start,Link_t Avail);
//*************************************************************************************************
/* MAIN */
//*************************************************************************************************
int main()
{
int COUNT=0;
Link_t Start=0;
Link_t Avail=0;
cAccount Account;
Infile_t Infile;
/* FUNCTION CALLS */
Load(Start,Avail);
Display(Start,Avail);
Print(Start,Avail);
return 0;
}// end main
//*************************************************************************************************
/* Function Implementations */
//*************************************************************************************************
void Insert(Link_t &Head, Link_t &Pred,cAccount NewAccount)
{
Link_t Curr;
Curr=Link;
Curr->Account=NewAccount;
if(Pred!=NULL)
{
Curr->Link=Pred->Link;
Pred->Link=Curr;
}
else
{
Curr->Link = Start;
Start = Curr;
}
};// end Insert
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void Search4Pred(Link_t &Pred,Link_t Start, cAccount Account)
{
bool Done=false;
Link_t Curr;
Curr=Start;
Pred=NULL;
while((Done!=true)&&(Curr!=NULL))
{
if(Curr->Account.compID2ID(Account)>0)
{
Pred=Curr;
Curr=Pred->Link;
}
else
{ Done=true;}
}//end while
}// end Search4Pred
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void Add(Link_t &Avail,Link_t &Start, cAccount NewAccount)
{
Link_t Pred;
Search4Pred(Pred,Start,NewAccount);
Insert(Start,Pred,Avail,NewAccount);
}// end Add
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void Load(Link_t &Start,Link_t &Avail)
{
Filename_t Filename;
Infile_t Infile;
Link_t Curr=0;
Link_t Pred=0;
cout<<"Program Starting.........."<<endl;
cout<<"Begining Load.........."<<endl<<endl;
cout<<"Enter the name of the data file to be used:"<<endl;
cin>>Filename;
Infile.open(Filename,ios::in);
cAccount NewAccount;
NewAccount.Read(Infile);
while(!Infile.eof())
{
Add(Avail,Start,NewAccount);
NewAccount.Read(Infile);
}//end while
Infile.close();
cout<<"Read Complete........."<<endl;
cout<<"Load Complete........."<<endl;
};//end load
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void Display(Link_t Start, Link_t Avail)
{
Link_t Curr;
Curr=Start;
Name_t choice;
cout<<"Would you like to view the output file?"<<endl;
cout<<"(YES or NO)"<<endl;
cin>>choice;
if(strcmp(choice,"YES")==0||strcmp(choice,"Yes")==0||strcmp(choice,"yes")==0)
{
cout<<setw(20)<<"ACCOUNT-DATA"<<endl<<endl;
while(Curr!=NULL)
{
Curr->Account.Display();
Curr=Curr->Link;
}//end while
cout<<endl;
cout<<"Moving to next process.........."<<endl<<endl;
}//end if
else
{
cout<<"Very Well.........."<<endl;
cout<<"Moving to next process.........."<<endl<<endl;
}
};// end Display
//_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
void Print(Link_t Start,Link_t Avail)
{
Link_t Curr;
Curr=Start;
Filename_t Filename;
Outfile_t Outfile;
cout<<"Enter the name of the output file: "<<endl;
cin>>Filename;
Outfile.open(Filename,ios::out);
Outfile<<setw(20)<<"ACCOUNT-DATA"<<endl<<endl;
while(Curr!=NULL)
{
Curr->Account.Print(Outfile);
Curr=Curr->Link;
}//end while
Outfile.close();
cout<<"Write Sucessful.........."<<endl<<endl;
};// end Print
//*************************************************************************************************
/* END OF SOURCE CODE */
//*************************************************************************************************