简体   繁体   中英

Class “error identifier is undefined”

I'm assuming this is a small syntax issue for when I remove the class and work in only my cpp file it runs without problems...

I need to use class which will be called by the main function. The problem I'm running into is that they are not recoginized in the .cpp file.

if it would work better to have array or constants declared in header file let me know as well...

#include '<iostream>'
#include "Menu.h"
using namespace std;


const double RestaurantCheck::MINTAX=.01, RestaurantCheck::MAXTAX=.12,RestaurantCheck::MINTIP=.05,RestaurantCheck::MAXTIP=.20,RestaurantCheck::DEFAULTTAX=.065,RestaurantCheck::DEFAULTTIP=.15;

//Error nonstatic data member may not be defiend outside of its class
RestaurantCheck::MexicanMenu[10].ItemName="Marisco El Sol";
RestaurantCheck::MexicanMenu[10].ItemDesc="Mouth watering seafood     appetizer made with shrimp, octopus, scallops, mushrooms, red and green peppers. Garnished with lettuce and avocado.";
RestaurantCheck::MexicanMenu[10].ItemCost=10.95;

RestaurantCheck::MexicanMenu[1].ItemName="Taquitos";
RestaurantCheck::MexicanMenu[1].ItemDesc="Rolled flour tortilla fried with your choice of chicken, shredded beef or shredded pork. Served over a bed of lettuce with Parmesan, tomatoes, guacamole & sour cream.";
RestaurantCheck::MexicanMenu[1].ItemCost=7.95;

            ...

            RestaurantCheck::MexicanMenu[0].ItemName=" ";//my null set.
            RestaurantCheck::MexicanMenu[0].ItemDesc=" ";
            RestaurantCheck::MexicanMenu[0].ItemCost=0;

void main()
{
    double ITax=0,ITip=0,Subtotal=0,UserTip=0,UserTax=0;
    bool exit=false;

    int count=0;//delete me after tests

    while (exit=false)
    {
        cout<<"Please input all tips as floating numbers 1% = .01 and 12% = .12\n";
        cout<<"What value do you want to set the tip? ";
            cin>>UserTip;
        cout<<endl<<"What value do you want to set the tax? ";
            cin>>UserTax;

        setFee(UserTip,UserTax);//error: Identifier is undefined
        placeOrder();...

Header

#ifndef Menu_H
#define Menu_H
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;


class RestaurantCheck
{
    struct Restaurant
    {
        string ItemName;
        string ItemDesc;
        double ItemCost;
    };

    static const double MINTAX,MAXTAX,MINTIP,MAXTIP, DEFAULTTAX,DEFAULTTIP;
    double Subtotal,CTax,TaxAmt,CTip,TipAmt;
    Restaurant Order[10],MexicanMenu[4];

    void presentMenu(Restaurant DispMenu[],int NumOfItems);

public:
    double calculateTax(double Subtotal,double CTax);
    double calculateTip(double Subtotal,double CTip);
    void setFee(double ,double );
    double issueCheck(Restaurant Order[],double ITax,double ITip,double Subtotal);
    void placeOrder(Restaurant Menu[],int Num_Menu,Restaurant IOrder[],int Num_Order);
    //void setMenu();


};
void RestaurantCheck::setFee(double UTip,double UTax)
{
    if (UTip>=MINTIP&&UTip<=MAXTIP)
        CTip=UTip;
    else
        CTip=DEFAULTTIP;

    if  (UTax>=MINTAX&&UTax<=MAXTAX)
        CTax=UTax;
    else
        CTax=DEFAULTTAX;
    //return(true);
};`

setFee() is a member function of class RestaurantCheck , so you need an instance of that class in order to call that method.

RestaurantCheck r;
r.setFee(x,y);

Once you have fixed that, you will find many, many more errors.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM