dealing with protected data members

Discussion in 'C++' started by CuTe_Engineer, Oct 26, 2007.

  1. hii,

    i have problem in dealing with protected data members & array
    this is my prog i make it as a project file

    my errors are mainly about declaration like :
    c:\documents and settings\xppresp3\desktop
    \ass2\ass2\gymnasiumimp.cpp(56) : error C2065: 'exercises' :
    undeclared identifier

    i didn`t understand why its undeclared while it`s a struct data
    members and it should be public, but i use it in a class as an
    protected array , so how can i declare it now ?

    the header files :

    #include<string>

    #ifndef H_Gymnasium
    #define H_Gymnasium

    using namespace std;

    struct activities
    {
    string exercises;
    int time;
    };

    class Gymnasium
    {
    protected:
    activities gymarray[5];
    int gymlength;
    public:
    void set(string,int,int);
    void getActivities(string&,int&,int&)const;
    double calories();
    void print();
    Gymnasium(string, int , int);
    };
    #endif

    #include<string>

    #ifndef H_Gymnasium
    #define H_Gymnasium

    using namespace std;

    struct activities
    {
    string exercises;
    int time;
    };

    class Gymnasium
    {
    protected:
    activities gymarray[5];
    int gymlength;
    public:
    void set(string,int,int);
    void getActivities(string&,int&,int&)const;
    double calories();
    void print();
    Gymnasium(string, int , int);
    };
    #endif

    #include <string>
    #include"Regime.h"
    #include"Gymnasium.h"
    #include"Nutrition.h"

    #ifndef H_Patient
    #define H_Patient

    using namespace std;

    struct person
    {
    string name;
    double energy;
    };

    class Patient:public Gymnasium , public Nutrition
    {

    public:
    void set(string,int,int,string,int,int,string,double);
    void get(string&,int&,
    int& ,string& ,int&,int&,string&,double&)const;
    void print();
    Patient(string=
    "",int=0,int=0,string="",int=0,int=0,string=0,double=0);
    double calories(); // find the difference between gained & lost
    calories and
    //and sub. it from the energy
    private:
    person info;
    Regime regimePlan;
    };
    #endif
    #include<string>
    #include"Gymnasium.h"
    #include"Nutrition.h"

    #ifndef H_Regime
    #define H_Regime

    using namespace std;

    class Regime
    {
    public:
    void set(string,int,int,string,int,int);
    void print();
    Regime(string ,int,int,string,int,int);
    double calories();

    private:
    Gymnasium exercisePlan ;
    Nutrition dietPlan;
    };
    #endif

    ++++++++++++++++++++++++++++++++++++

    & these are the implitation files

    #include <iostream>
    #include <string>
    #include "Gymnasium.h"

    using namespace std;

    const int OpenGym =680;
    const int Treadmill =820;
    const int Bike=620;
    const int Fitness=740;
    const int Hoop=210;

    const int gymlength=5;

    void Gymnasium::set(string ex , int T , int length1 )
    {
    activities b;

    b.exercises=ex;
    b.time=T;
    gymlength=length1;

    }

    void Gymnasium::getActivities(string& ex , int& T ,int&length1 )const
    {
    activities b;

    ex=b.exercises;
    T=b.time;
    length1=gymlength;
    }

    void Gymnasium::print()
    {
    cout<<"He/She lost "<<calories()<<"calories"<<endl;
    }

    Gymnasium::Gymnasium(string ex , int T , int length1 )
    {
    activities b;

    b.exercises=ex;
    b.time=T;
    gymlength=length1;

    }

    double Gymnasium:: calories()
    {
    int totalLost,Lostcalories ,i;


    for(i=0 ,i<gymlength , i++)

    gymarray=exercises*time;
    totalLost+=gymarray;
    Lostcalories=totalLost/60;

    }

    #include<iostream>
    #include<string>
    #include"Nutrition.h"

    using namespace std;

    const int Carbohydrates=90;
    const int Protein=70;
    const int Vitamins=50;
    const int Water=10;

    const int Nutritionlength=5;

    void Nutrition::set(string f , int p , int length2)
    {
    food=f;
    portion=p;
    nutritionLength=length2;
    }

    void Nutrition ::getMeals(string&f , int&p ,int&length2)const
    {
    f=food;
    p=portion;
    length2=Nutritionlength;
    }

    Nutrition::Nutrition(string f , int p , int length2)
    {
    set(f,p,length2);
    }

    double Nutrition::calories()
    {
    int gainedcalories,totalgained;

    for(int i=0 , i>Nutritionlength , i++)
    Nutritionarray=food*portion;
    totalgained+=Nutritionarray;
    gainedcalories=totalgained/100;

    return gainedcalories;
    }
    void print()
    {
    cout<<"He/She gained "<<calories()<<"calories"<<endl;
    }

    #include<iostream>
    #include <string>
    #include"Patient.h"


    using namespace std;

    void Patient::set(string ex,int T,int length1,string f,int p,int
    length2,string n,double e)
    {
    b.exercises=ex;
    b.time=T;
    gymlength=length1;
    food=f;
    portion=p;
    nutritionLength=length2;
    name=n;
    energy=e;

    }

    void Patient::get(string& exe,int& T, int& length1 ,string& f ,int&
    p,int& length2,string& n,double&e)const;
    {
    Regime::get(ex,T,length1,f,p,length2);
    n=name;
    e=energy;
    }

    void Patient::print()
    {
    cout<<"Before the regime"<<name<<"energy was
    "<<calories()<<"calories"<<endl;
    Regime::print();
    Gymnasium::print();
    Nutrition::print();
    }

    Patient::patient(string ex,int T,int length1,string f,int p,int
    length2,string n,double e)
    {
    set(ex,T,length1,f,p,length2,n,e);
    }

    double Patient::calories()
    {
    int before;

    before=Regime::calories()+600;

    return before;
    }

    #include<iostream>
    #include<string>
    #include"Regime.h"

    using namespace std;

    void Regime::set(string exe,int t,int lenght1,string f,int p,int
    lenght2)
    {
    Gymnasium::set(exe,t,length1);
    Nutrition::set(f,p,length2);
    }

    void Regime::print()
    {
    cout<<"After the regime Ahmed energy is
    "<<calories()<<"calories"<<endl;
    }

    Regime::Regime(string exe,int t,int lenght1,string f,int p,int
    lenght2)
    {
    Gymnasium::set(exe,t,length1);
    Nutrition::set(f,p,length2);
    }

    double Regime::calories()
    {
    After=Gymnasium::calories()-Nutrition::calories();

    return After;
    }

    +++++++++++++++++++++

    the driver

    #include<iostream>
    #include <string>
    #include<fstream>
    #include "Gymnasium.h"
    #include "Nutrition.h"
    #include "Patient.h"
    #include "Regime.h"

    using namespace std;


    int main()
    {
    Patient A;
    activities b;
    int T,p ,length1,length2;
    string f , ex , n;
    double e;


    cin>>n>>e;
    cout<<endl;

    ifstream inFile;
    inFile.open("patientActivities.txt");

    inFile>>b.exercises>>b.time;

    inFile.close();



    inFile.open("patientMeals.txt");


    inFile>>f>>p;

    inFile.close();

    A.set(ex,T,length1,f,p,length2,n,e);
    A.print();

    return 0;

    }
    CuTe_Engineer, Oct 26, 2007
    #1
    1. Advertising

  2. CuTe_Engineer a écrit :
    > hii,
    >
    > i have problem in dealing with protected data members & array
    > this is my prog i make it as a project file
    >
    > my errors are mainly about declaration like :
    > c:\documents and settings\xppresp3\desktop
    > \ass2\ass2\gymnasiumimp.cpp(56) : error C2065: 'exercises' :
    > undeclared identifier
    >
    > i didn`t understand why its undeclared while it`s a struct data
    > members and it should be public, but i use it in a class as an
    > protected array , so how can i declare it now ?

    [snip]
    > class Gymnasium
    > {
    > protected:
    > activities gymarray[5];
    > int gymlength;
    > public:
    > void set(string,int,int);
    > void getActivities(string&,int&,int&)const;
    > double calories();
    > void print();
    > Gymnasium(string, int , int);
    > };

    [snip]
    > double Gymnasium:: calories()
    > {
    > int totalLost,Lostcalories ,i;
    >
    >
    > for(i=0 ,i<gymlength , i++)
    >
    > gymarray=exercises*time;


    Here, exercises is unknown.

    > totalLost+=gymarray;
    > Lostcalories=totalLost/60;
    >
    > }

    [snip]

    Michael
    Michael DOUBEZ, Oct 26, 2007
    #2
    1. Advertising

  3. On 2007-10-26 09:30, CuTe_Engineer wrote:
    > hii,
    >
    > i have problem in dealing with protected data members & array
    > this is my prog i make it as a project file
    >
    > my errors are mainly about declaration like :
    > c:\documents and settings\xppresp3\desktop
    > \ass2\ass2\gymnasiumimp.cpp(56) : error C2065: 'exercises' :
    > undeclared identifier
    >
    > i didn`t understand why its undeclared while it`s a struct data
    > members and it should be public, but i use it in a class as an
    > protected array , so how can i declare it now ?
    >
    > the header files :
    >
    > #include<string>
    >
    > #ifndef H_Gymnasium
    > #define H_Gymnasium


    Move the include-guards above other includes.

    > using namespace std;


    Do not use this in header-files, all files that includes your header
    will have to live with the effects.

    > struct activities
    > {
    > string exercises;
    > int time;
    > };
    >
    > class Gymnasium
    > {
    > protected:
    > activities gymarray[5];
    > int gymlength;
    > public:
    > void set(string,int,int);
    > void getActivities(string&,int&,int&)const;
    > double calories();
    > void print();
    > Gymnasium(string, int , int);
    > };
    > #endif



    > double Gymnasium:: calories()
    > {
    > int totalLost,Lostcalories ,i;
    >
    >
    > for(i=0 ,i<gymlength , i++)
    >
    > gymarray=exercises*time;


    Like you said, exercises is a member in a struct, that means that you
    have to have an instance of that struct to access it:

    activities a;
    a.exercises = "Jump";

    As can be seen from the above example, exercises is a string, you can
    not multiply a string with an integer.

    --
    Erik Wikström
    =?UTF-8?B?RXJpayBXaWtzdHLDtm0=?=, Oct 26, 2007
    #3
  4. i know that`s my problem , i don`t know why it`s known
    exercises is a member of the struct activities and i declare an array
    in the class of type activities ( a struct)

    struct activities
    {
    string exercises;
    int time;
    };

    class Gymnasium
    {
    private:
    activities gymarray[5];
    int gymlength;
    public:
    void set(string,int,int);
    void getActivities(string&,int&,int&)const;
    double calories();
    void print();
    Gymnasium(string, int , int);
    };

    so why it`s known ?
    CuTe_Engineer, Oct 26, 2007
    #4
  5. On Oct 26, 10:39 am, Erik Wikström <> wrote:
    > On 2007-10-26 09:30, CuTe_Engineer wrote:
    >
    >
    >
    >
    >
    > > hii,

    >
    > > i have problem in dealing with protected data members & array
    > > this is my prog i make it as a project file

    >
    > > my errors are mainly about declaration like :
    > > c:\documents and settings\xppresp3\desktop
    > > \ass2\ass2\gymnasiumimp.cpp(56) : error C2065: 'exercises' :
    > > undeclared identifier

    >
    > > i didn`t understand why its undeclared while it`s a struct data
    > > members and it should be public, but i use it in a class as an
    > > protected array , so how can i declare it now ?

    >
    > > the header files :

    >
    > > #include<string>

    >
    > > #ifndef H_Gymnasium
    > > #define H_Gymnasium

    >
    > Move the include-guards above other includes.
    >
    > > using namespace std;

    >
    > Do not use this in header-files, all files that includes your header
    > will have to live with the effects.
    >
    >
    >
    >
    >
    > > struct activities
    > > {
    > > string exercises;
    > > int time;
    > > };

    >
    > > class Gymnasium
    > > {
    > > protected:
    > > activities gymarray[5];
    > > int gymlength;
    > > public:
    > > void set(string,int,int);
    > > void getActivities(string&,int&,int&)const;
    > > double calories();
    > > void print();
    > > Gymnasium(string, int , int);
    > > };
    > > #endif
    > > double Gymnasium:: calories()
    > > {
    > > int totalLost,Lostcalories ,i;

    >
    > > for(i=0 ,i<gymlength , i++)

    >
    > > gymarray=exercises*time;

    >
    > Like you said, exercises is a member in a struct, that means that you
    > have to have an instance of that struct to access it:
    >
    > activities a;
    > a.exercises = "Jump";
    >
    > As can be seen from the above example, exercises is a string, you can
    > not multiply a string with an integer.
    >
    > --
    > Erik Wikström- Hide quoted text -
    >
    > - Show quoted text -- Hide quoted text -
    >
    > - Show quoted text -


    ok i got it

    now my Question is should i pass exercises in the set function , if
    the answer is yes ,how shoul i pass it bacuase i`m gettitng error

    this is the set function

    void Gymnasium::set(string ex , int T , int length1 )
    {


    exercises=ex;
    time=T;
    gymlength=length1;

    }

    && exercises and time are protected member of a type activites
    ( struct)
    CuTe_Engineer, Oct 26, 2007
    #5
  6. On 2007-10-26 11:37, CuTe_Engineer wrote:
    > On Oct 26, 10:39 am, Erik Wikström <> wrote:
    >> On 2007-10-26 09:30, CuTe_Engineer wrote:
    >>
    >>
    >>
    >>
    >>
    >> > hii,

    >>
    >> > i have problem in dealing with protected data members & array
    >> > this is my prog i make it as a project file

    >>
    >> > my errors are mainly about declaration like :
    >> > c:\documents and settings\xppresp3\desktop
    >> > \ass2\ass2\gymnasiumimp.cpp(56) : error C2065: 'exercises' :
    >> > undeclared identifier

    >>
    >> > i didn`t understand why its undeclared while it`s a struct data
    >> > members and it should be public, but i use it in a class as an
    >> > protected array , so how can i declare it now ?

    >>
    >> > the header files :

    >>
    >> > #include<string>

    >>
    >> > #ifndef H_Gymnasium
    >> > #define H_Gymnasium

    >>
    >> Move the include-guards above other includes.
    >>
    >> > using namespace std;

    >>
    >> Do not use this in header-files, all files that includes your header
    >> will have to live with the effects.
    >>
    >>
    >>
    >>
    >>
    >> > struct activities
    >> > {
    >> > string exercises;
    >> > int time;
    >> > };

    >>
    >> > class Gymnasium
    >> > {
    >> > protected:
    >> > activities gymarray[5];
    >> > int gymlength;
    >> > public:
    >> > void set(string,int,int);
    >> > void getActivities(string&,int&,int&)const;
    >> > double calories();
    >> > void print();
    >> > Gymnasium(string, int , int);
    >> > };
    >> > #endif
    >> > double Gymnasium:: calories()
    >> > {
    >> > int totalLost,Lostcalories ,i;

    >>
    >> > for(i=0 ,i<gymlength , i++)

    >>
    >> > gymarray=exercises*time;

    >>
    >> Like you said, exercises is a member in a struct, that means that you
    >> have to have an instance of that struct to access it:
    >>
    >> activities a;
    >> a.exercises = "Jump";
    >>
    >> As can be seen from the above example, exercises is a string, you can
    >> not multiply a string with an integer.
    >>
    >> --
    >> Erik Wikström- Hide quoted text -
    >>
    >> - Show quoted text -- Hide quoted text -
    >>
    >> - Show quoted text -

    >
    > ok i got it


    No you did not.

    > now my Question is should i pass exercises in the set function , if
    > the answer is yes ,how shoul i pass it bacuase i`m gettitng error
    >
    > this is the set function


    Since I do not know what set is supposed to do I can only guess

    > void Gymnasium::set(string ex , int T , int length1 )
    > {

    activities[T].exercise = ex;
    activities[T].time = length1;
    > }
    >
    > && exercises and time are protected member of a type activites
    > ( struct)


    No, they are public members.

    --
    Erik Wikström
    =?UTF-8?B?RXJpayBXaWtzdHLDtm0=?=, Oct 26, 2007
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Andreas Klemt
    Replies:
    2
    Views:
    556
    Andreas Klemt
    Jul 5, 2003
  2. Praveen
    Replies:
    1
    Views:
    368
    Woebegone
    Nov 21, 2003
  3. Suzanne Vogel
    Replies:
    5
    Views:
    2,353
    Dan W.
    Dec 9, 2003
  4. Chris Mantoulidis
    Replies:
    6
    Views:
    637
    Grimble Gromble
    Jan 3, 2004
  5. Act
    Replies:
    28
    Views:
    4,416
    David Hilsee
    Oct 5, 2004
Loading...

Share This Page