By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,402 Members | 1,127 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,402 IT Pros & Developers. It's quick & easy.

error C2228: left of '.rent' must have class/struct/union type

P: 1
I was wondering if anyone can help me with this programming code as i keep getting errors and am not sure how to fix them. The error code displayed now is error: C2228: left of '.rent' must have class/struct/union type.The problem area is underlined. Any help will be greatly appreciated.

Expand|Select|Wrap|Line Numbers
  1. #include <c:\cpp\input.h>
  2. #include < time.h>
  3.  
  4. #define SIZE 20
  5.  
  6. struct Cust{
  7.         int custno;
  8.         char fname[16];
  9.         char surname[16];
  10.         char street[26];
  11.         char town[16];
  12.         char postcode[9];
  13.         char areacode[5];
  14.         char phoneno[6];
  15.         char rentaltype;
  16.         int noofpeople;
  17.         float rentalcost;
  18.         float electricalcost;
  19.         float total;
  20.         char rent;
  21.  
  22. };
  23.  
  24.  
  25. void StartMenu(int &option);
  26. void DisplayMenu1();
  27. void DisplayTown(Cust record[],int count);
  28. void EnterDetails(Cust record[], int &count);
  29. void EnterCust(Cust &record);
  30. void CalcRentalCost (Cust &record);
  31. void DisplayDetails(Cust record[],int count);
  32. void DisplayCustomer(Cust record);
  33. void CalculateAverage(Cust record[],int count);
  34. void CalculateTotal(Cust record[],int count);
  35. void DisplayInvoice(Cust record[], int count);
  36. void PressKey();
  37. void GetYesNo(char &yesno);
  38. void Error (char msg[]);
  39.  
  40.  
  41.  
  42.  
  43. void main()
  44. {
  45. setupio();
  46.  
  47. // write your code here
  48.  
  49. struct Cust record[SIZE];
  50. int count =0;
  51. int option =0;
  52. do
  53. {
  54.     StartMenu(option);
  55.     switch(option)
  56.     {
  57.     case 1:
  58.     EnterDetails(record,count);
  59.     break;
  60.     case 2:
  61.     DisplayDetails(record,count);
  62.     break;
  63.     case 3:
  64.     DisplayTown(record,count);
  65.     break;
  66.     case 4:
  67.     CalculateAverage(record,count);
  68.     break;
  69.     case 5:
  70.     CalculateTotal(record, count);
  71.     break;
  72.     case 6:
  73.     DisplayInvoice(record,count);
  74.     break;
  75.     case 7:
  76.     cout << "Finished\n";
  77.     break;
  78.  
  79.     default:
  80.     cout <<"Invalid Option";
  81.     }
  82.     } while (option !=7);
  83.  
  84.  
  85. }
  86.  
  87. void EnterDetails (Cust record[], int &count)
  88. {
  89.     clrscr();
  90.     char yesno;
  91.     GetYesNo (yesno);
  92.  
  93.     while (yesno != 'N' && count < SIZE)
  94.     {
  95.         EnterCust (record [count]);
  96.         count++;
  97.         GetYesNo(yesno);
  98.     }
  99.         PressKey();
  100. }
  101.  
  102. //Enter Customer Details
  103.  
  104. void EnterCust (Cust &record)
  105. {
  106.     clrscr();
  107.     cout << "Cust No : ";
  108.     Input (record.custno);
  109.  
  110.     while ( record.custno < 1 || record.custno >500 )
  111.     {
  112.         cout << "Invalid Customer Number\n";
  113.         gotoxy (20,4);
  114.         cout << "Cust No : ";
  115.         Input (record.custno);
  116.     }
  117.  
  118.         gotoxy (20,6);
  119.         cout << "First Name : ";
  120.         Input (record.fname,15);
  121.         gotoxy (20,8);
  122.         cout << "Surname : ";
  123.         Input (record.surname,15);
  124.         gotoxy (20,10);
  125.         cout << "Street : ";
  126.         Input (record.street,25);
  127.         gotoxy (20,12);
  128.         cout << "Town : ";
  129.         Input (record.town,15);
  130.         gotoxy (20,14);
  131.         cout << "PostCode :";
  132.         Input (record.postcode,8);
  133.         gotoxy (20,16);
  134.         cout << "Phone Area Code :";
  135.         Input (record.areacode,5);
  136.         gotoxy (20,18);
  137.         cout << "Phone Number :";
  138.         Input (record.phoneno,6);
  139.         gotoxy (20,20);
  140.         cout << "Number of people :";
  141.         Input (record.noofpeople);
  142.     while ( record.noofpeople < 1 || record.noofpeople >8 )
  143.     {
  144.         cout << "The number of people is Invalid/n";
  145.         cout << "Number of people : ";
  146.         Input (record.noofpeople);
  147.     }    
  148.         gotoxy (20,22);
  149.         cout << "Rental Type :";
  150.         Input (record.rentaltype);
  151.     }
  152.  
  153. //Calculate Hire Cost
  154.  
  155. void CalcRentalCost (Cust record)
  156.  
  157.     {
  158.  
  159.     if (record.rentaltype =='v'||record.rentaltype=='V')
  160.         {
  161.             record.rentalcost = (float)10.00;
  162.     }
  163.  
  164.     if (record.rentaltype =='m'||record.rentaltype=='M')
  165.         {
  166.             record.rentalcost = (float)15.00;
  167.     }        
  168.  
  169.     if (record.rentaltype =='c'||record.rentaltype=='C')
  170.         {
  171.             record.rentalcost = (float)25.00;
  172.     }
  173.  
  174. }
  175.  
  176. // Calculate Total Cost
  177.  
  178. void CalculateTotal(Cust record[],int count)
  179. {
  180.     int sub =0;
  181.     float total =0;
  182.     while (sub < count)
  183.     {
  184.          total = total +(record[sub].total);
  185.         sub++;
  186.     }
  187.  
  188.     cout << "Total is: " << total;
  189. }
  190.  
  191. // Calculate Average
  192.  
  193. void CalculateAverage(Cust record[],int count)
  194.  
  195. {    int sub=0;
  196.     float average =0;
  197.     float total;
  198.     while (sub < count)
  199.     {
  200.         average = total/sub;
  201.         sub++;
  202.     }
  203.  
  204.     cout << "Average is: " <<average;
  205.  
  206. }
  207.  
  208. void DisplayDetails (Cust record[],int count)
  209. {
  210.     char rentalt[16];
  211.  
  212.     if (record.rent == 'v')
  213.         strcpy (rentalt, "Caravan");
  214.  
  215.     if (record.rent == 'm')
  216.         strcpy (rentalt, "Mobile Home");
  217.  
  218.     if (record.rent == 'c')
  219.         strcpy (rentalt, "Chalet");[/u]
  220.     cout << "Rental Type is: " << rentalt <<endl;
  221.  
  222.  
  223.     int sub=0;
  224.     while (sub < count)
  225.     {
  226.         DisplayCustomer (record[sub] );
  227.         sub++;
  228.     }
  229.  
  230.  
  231. }
  232.  
  233. void DisplayCustomer(Cust record)
  234.  
  235. {
  236.     clrscr();
  237.  
  238.     cout << "Customer Number :" << record.custno;
  239.     cout << endl;
  240.     cout << "Name : " << " " << record.fname << " " << record.surname <<endl;
  241.     cout << "Street :" << record.street <<endl;
  242.     cout << "Town :" <<record.town << endl;
  243.     cout << "Post code :" << record.postcode <<endl;
  244.     cout << "Phone Number :" << record.areacode <<" " << record.phoneno <<endl;
  245.     cout << "Rental Type :" <<record.rentaltype << endl;
  246.     cout << "Number of people :" <<record.noofpeople <<endl;
  247.     cout << "Electrical Charge :" <<record.electricalcost << endl;
  248.     PressKey();
  249.  
  250. }
  251. void PressKey()
  252. {
  253.     gotoxy(1,24);
  254.     cout << "Press Return Key To Continue";
  255.     getchar();
  256. }
  257.  
  258. void GetYesNo (char &yesno)
  259. {
  260.     cout << "Add a new customer (Y/N):";
  261.     Input (yesno);
  262.     yesno = toupper (yesno);
  263.  
  264. }
  265. void Error (char msg[])
  266. {
  267.     gotoxy (1,23);
  268.     cout << msg;
  269.     gotoxy (1,24);
  270.     PressKey();
  271.     gotoxy (1,24);
  272.     clreol();
  273.     gotoxy(1,23);
  274.     clreol();
  275. }
  276.  
  277. void DisplayTown(Cust record[], int count)
  278. {
  279.     clrscr();
  280.     char twn[16];
  281.     int result =0;
  282.     int sub =0;
  283.     bool custfound = false;
  284.  
  285.     cout << "Please Enter Town :";
  286.     Input (twn,15);
  287.  
  288.     while (sub < count)
  289.     {
  290.         result = (_strnicmp(twn,record[sub].town, strlen(twn)));
  291.  
  292.         if (result ==0)
  293.         {
  294.             DisplayCustomer(record[sub]);
  295.             custfound = true;
  296.         }
  297.         sub++;
  298.     }
  299.     if (custfound ==false)
  300.     {
  301.         Error ("Town Not Found");
  302.         PressKey();
  303.     }
  304.  
  305.  
  306. }
May 7 '07 #1
Share this Question
Share on Google+
2 Replies


ilikepython
Expert 100+
P: 844
I was wondering if anyone can help me with this programming code as i keep getting errors and am not sure how to fix them. The error code displayed now is error: C2228: left of '.rent' must have class/struct/union type.The problem area is underlined. Any help will be greatly appreciated.

Expand|Select|Wrap|Line Numbers
  1. #include <c:\cpp\input.h>
  2. #include < time.h>
  3.  
  4. #define SIZE 20
  5.  
  6. struct Cust{
  7.         int custno;
  8.         char fname[16];
  9.         char surname[16];
  10.         char street[26];
  11.         char town[16];
  12.         char postcode[9];
  13.         char areacode[5];
  14.         char phoneno[6];
  15.         char rentaltype;
  16.         int noofpeople;
  17.         float rentalcost;
  18.         float electricalcost;
  19.         float total;
  20.         char rent;
  21.  
  22. };
  23.  
  24.  
  25. void StartMenu(int &option);
  26. void DisplayMenu1();
  27. void DisplayTown(Cust record[],int count);
  28. void EnterDetails(Cust record[], int &count);
  29. void EnterCust(Cust &record);
  30. void CalcRentalCost (Cust &record);
  31. void DisplayDetails(Cust record[],int count);
  32. void DisplayCustomer(Cust record);
  33. void CalculateAverage(Cust record[],int count);
  34. void CalculateTotal(Cust record[],int count);
  35. void DisplayInvoice(Cust record[], int count);
  36. void PressKey();
  37. void GetYesNo(char &yesno);
  38. void Error (char msg[]);
  39.  
  40.  
  41.  
  42.  
  43. void main()
  44. {
  45. setupio();
  46.  
  47. // write your code here
  48.  
  49. struct Cust record[SIZE];
  50. int count =0;
  51. int option =0;
  52. do
  53. {
  54.     StartMenu(option);
  55.     switch(option)
  56.     {
  57.     case 1:
  58.     EnterDetails(record,count);
  59.     break;
  60.     case 2:
  61.     DisplayDetails(record,count);
  62.     break;
  63.     case 3:
  64.     DisplayTown(record,count);
  65.     break;
  66.     case 4:
  67.     CalculateAverage(record,count);
  68.     break;
  69.     case 5:
  70.     CalculateTotal(record, count);
  71.     break;
  72.     case 6:
  73.     DisplayInvoice(record,count);
  74.     break;
  75.     case 7:
  76.     cout << "Finished\n";
  77.     break;
  78.  
  79.     default:
  80.     cout <<"Invalid Option";
  81.     }
  82.     } while (option !=7);
  83.  
  84.  
  85. }
  86.  
  87. void EnterDetails (Cust record[], int &count)
  88. {
  89.     clrscr();
  90.     char yesno;
  91.     GetYesNo (yesno);
  92.  
  93.     while (yesno != 'N' && count < SIZE)
  94.     {
  95.         EnterCust (record [count]);
  96.         count++;
  97.         GetYesNo(yesno);
  98.     }
  99.         PressKey();
  100. }
  101.  
  102. //Enter Customer Details
  103.  
  104. void EnterCust (Cust &record)
  105. {
  106.     clrscr();
  107.     cout << "Cust No : ";
  108.     Input (record.custno);
  109.  
  110.     while ( record.custno < 1 || record.custno >500 )
  111.     {
  112.         cout << "Invalid Customer Number\n";
  113.         gotoxy (20,4);
  114.         cout << "Cust No : ";
  115.         Input (record.custno);
  116.     }
  117.  
  118.         gotoxy (20,6);
  119.         cout << "First Name : ";
  120.         Input (record.fname,15);
  121.         gotoxy (20,8);
  122.         cout << "Surname : ";
  123.         Input (record.surname,15);
  124.         gotoxy (20,10);
  125.         cout << "Street : ";
  126.         Input (record.street,25);
  127.         gotoxy (20,12);
  128.         cout << "Town : ";
  129.         Input (record.town,15);
  130.         gotoxy (20,14);
  131.         cout << "PostCode :";
  132.         Input (record.postcode,8);
  133.         gotoxy (20,16);
  134.         cout << "Phone Area Code :";
  135.         Input (record.areacode,5);
  136.         gotoxy (20,18);
  137.         cout << "Phone Number :";
  138.         Input (record.phoneno,6);
  139.         gotoxy (20,20);
  140.         cout << "Number of people :";
  141.         Input (record.noofpeople);
  142.     while ( record.noofpeople < 1 || record.noofpeople >8 )
  143.     {
  144.         cout << "The number of people is Invalid/n";
  145.         cout << "Number of people : ";
  146.         Input (record.noofpeople);
  147.     }    
  148.         gotoxy (20,22);
  149.         cout << "Rental Type :";
  150.         Input (record.rentaltype);
  151.     }
  152.  
  153. //Calculate Hire Cost
  154.  
  155. void CalcRentalCost (Cust record)
  156.  
  157.     {
  158.  
  159.     if (record.rentaltype =='v'||record.rentaltype=='V')
  160.         {
  161.             record.rentalcost = (float)10.00;
  162.     }
  163.  
  164.     if (record.rentaltype =='m'||record.rentaltype=='M')
  165.         {
  166.             record.rentalcost = (float)15.00;
  167.     }        
  168.  
  169.     if (record.rentaltype =='c'||record.rentaltype=='C')
  170.         {
  171.             record.rentalcost = (float)25.00;
  172.     }
  173.  
  174. }
  175.  
  176. // Calculate Total Cost
  177.  
  178. void CalculateTotal(Cust record[],int count)
  179. {
  180.     int sub =0;
  181.     float total =0;
  182.     while (sub < count)
  183.     {
  184.          total = total +(record[sub].total);
  185.         sub++;
  186.     }
  187.  
  188.     cout << "Total is: " << total;
  189. }
  190.  
  191. // Calculate Average
  192.  
  193. void CalculateAverage(Cust record[],int count)
  194.  
  195. {    int sub=0;
  196.     float average =0;
  197.     float total;
  198.     while (sub < count)
  199.     {
  200.         average = total/sub;
  201.         sub++;
  202.     }
  203.  
  204.     cout << "Average is: " <<average;
  205.  
  206. }
  207.  
  208. void DisplayDetails (Cust record[],int count)
  209. {
  210.     char rentalt[16];
  211.  
  212.     if (record.rent == 'v')
  213.         strcpy (rentalt, "Caravan");
  214.  
  215.     if (record.rent == 'm')
  216.         strcpy (rentalt, "Mobile Home");
  217.  
  218.     if (record.rent == 'c')
  219.         strcpy (rentalt, "Chalet");[/u]
  220.     cout << "Rental Type is: " << rentalt <<endl;
  221.  
  222.  
  223.     int sub=0;
  224.     while (sub < count)
  225.     {
  226.         DisplayCustomer (record[sub] );
  227.         sub++;
  228.     }
  229.  
  230.  
  231. }
  232.  
  233. void DisplayCustomer(Cust record)
  234.  
  235. {
  236.     clrscr();
  237.  
  238.     cout << "Customer Number :" << record.custno;
  239.     cout << endl;
  240.     cout << "Name : " << " " << record.fname << " " << record.surname <<endl;
  241.     cout << "Street :" << record.street <<endl;
  242.     cout << "Town :" <<record.town << endl;
  243.     cout << "Post code :" << record.postcode <<endl;
  244.     cout << "Phone Number :" << record.areacode <<" " << record.phoneno <<endl;
  245.     cout << "Rental Type :" <<record.rentaltype << endl;
  246.     cout << "Number of people :" <<record.noofpeople <<endl;
  247.     cout << "Electrical Charge :" <<record.electricalcost << endl;
  248.     PressKey();
  249.  
  250. }
  251. void PressKey()
  252. {
  253.     gotoxy(1,24);
  254.     cout << "Press Return Key To Continue";
  255.     getchar();
  256. }
  257.  
  258. void GetYesNo (char &yesno)
  259. {
  260.     cout << "Add a new customer (Y/N):";
  261.     Input (yesno);
  262.     yesno = toupper (yesno);
  263.  
  264. }
  265. void Error (char msg[])
  266. {
  267.     gotoxy (1,23);
  268.     cout << msg;
  269.     gotoxy (1,24);
  270.     PressKey();
  271.     gotoxy (1,24);
  272.     clreol();
  273.     gotoxy(1,23);
  274.     clreol();
  275. }
  276.  
  277. void DisplayTown(Cust record[], int count)
  278. {
  279.     clrscr();
  280.     char twn[16];
  281.     int result =0;
  282.     int sub =0;
  283.     bool custfound = false;
  284.  
  285.     cout << "Please Enter Town :";
  286.     Input (twn,15);
  287.  
  288.     while (sub < count)
  289.     {
  290.         result = (_strnicmp(twn,record[sub].town, strlen(twn)));
  291.  
  292.         if (result ==0)
  293.         {
  294.             DisplayCustomer(record[sub]);
  295.             custfound = true;
  296.         }
  297.         sub++;
  298.     }
  299.     if (custfound ==false)
  300.     {
  301.         Error ("Town Not Found");
  302.         PressKey();
  303.     }
  304.  
  305.  
  306. }
In your DisplayDetails() function, you take an array of "Custs" as an arguement:
Expand|Select|Wrap|Line Numbers
  1. void DisplayDetails(Cust record[],int count);
  2.  
but then you have record.rent. I don't think you can do that since record is an array. Try indexing it like you did with the others:
Expand|Select|Wrap|Line Numbers
  1. record[sub].rent
  2.  
or remove your brackets from the arguement being taken.

Also, try to post only the code that is relevant to your problem.
May 7 '07 #2

Banfa
Expert Mod 5K+
P: 8,916
In your DisplayDetails() function, you take an array of "Custs" as an arguement:
Expand|Select|Wrap|Line Numbers
  1. void DisplayDetails(Cust record[],int count);
  2.  
Strictly speaking that syntax in a function declaration/definition indicates a pointer not an array. Normally it would be used (it at all) if the pointer was in fact a pointer to the first element of any array (i.e. a pointer to an array by convention rather than by language rules) but it is functionally equivalent to (and interchangeable with)

Expand|Select|Wrap|Line Numbers
  1. void DisplayDetails(Cust *record,int count);
  2.  
May 7 '07 #3

Post your reply

Sign in to post your reply or Sign up for a free account.