DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   Composition problem "'XXX' is not a base or member" (http://www.daniweb.com/forums/thread114821.html)

knight fyre Mar 20th, 2008 2:15 am
Composition problem "'XXX' is not a base or member"
 
I'm trying to use composition. I included the header file and made a type of the class that is contained within the owner class but I keep getting errors like this:

Quote:

c:\documents and settings\cheryl\desktop\parking lot system\person.cpp(7) : error C2614: 'PERSON' : illegal member initialization: 'DATE' is not a base or member
c:\documents and settings\cheryl\desktop\parking lot system\person.cpp(7) : error C2614: 'PERSON' : illegal member initialization: 'DATE' is not a base or member
c:\documents and settings\cheryl\desktop\parking lot system\person.cpp(7) : error C2614: 'PERSON' : illegal member initialization: 'CARD' is not a base or member
What am I missing? Here's the code:

PERSON HAS DATE AND CARD
#ifndef PERSON_H
#define PERSON_H

#include <iostream>
#include <string>
#include "date.h"
#include "card.h"

using std::string;
using std::cout;
using std::endl;

class PERSON
{
protected:
        CARD DETAILS;
        DATE DOB;
        DATE DOR;

private:
        string FirstName;
        string LastName;
        string MI;
        string Gender;

public:
        PERSON();
        PERSON(CARD &, string, string, string, string, DATE &, DATE &);

        PERSON(const PERSON &);
        ~PERSON();
       

       
        void setID(int);
        void setFname(string );
        void setLname(string );
        void setMi(string);

        void setGender(string );


        inline string getFname() const;
        inline string getLname() const;
        inline string getMi() const;
       

        string getGender() const;

        virtual void Show() const;
};
#endif

PERSON IMPLEMENTATION

#include "person.h"
#include "date.h"


PERSON::PERSON()
: CARD(123456, "Staff"), DATE(01,01,2000), DATE(01,01,2008)
{
        FirstName = "John";
        LastName = "Doe";
        MI = "D";
        Gender = "Male";
}

PERSON::PERSON(CARD &DETAILS, string fName, string lName, string mi, string sex, DATE &DOB, DATE &DOR)
: CARD(DETAILS), DATE(DOB), DATE(DOR)
{
        FirstName = fName;
        LastName = lName;
        MI = mi;
        Gender = sex;
}

PERSON::PERSON(const PERSON &cpy)
: CARD(DETAILS), DATE(DOB), DATE(DOR)
{
        setFname(cpy.getFname());
        setLname(cpy.getLname());
        setMi(cpy.getMi());
        setGender(cpy.getGender());
}


/*PERSON::PERSON(const PERSON &obj)
{
        sID=obj.sID;
        DOB = obj.DOB;
        DOR = obj.DOR;
        FirstName=obj.FirstName;
        LastName=obj.LastName;
        //MI=obj.MI;
        Department = obj.Department;
        Gender=obj.Gender;
        count++;
}*/

PERSON::~PERSON()
{
}
       

void PERSON::setFname(string fname)
{
        FirstName=fname;
}

void PERSON::setLname(string lname)
{
        LastName=lname;
}

void PERSON::setMi(string  mi)
{
        MI=mi;
}



void PERSON::setGender(string gen)
{
        Gender=gen;
}


inline string PERSON::getFname() const{return FirstName;}

inline string PERSON::getLname() const{return LastName;}

inline string  PERSON::getMi() const{return MI;}

inline string PERSON::getGender() const{return Gender;}


void PERSON::Show() const
{
        DETAILS.Show();
        cout<<endl
                <<"Name: " <<FirstName <<" " <<MI <<". " <<LastName  <<endl
                <<"Gender: " <<Gender <<endl
                <<"Date of Birth: ";
        DOB.Show();
        cout<<endl
                <<"Date of Reg.: ";
        DOR.Show();
        cout<<endl;
}

// DATE CLASS
#ifndef DATE_H
#define DATE_H


#include <iostream>

using std::cout;

class DATE
{
private:
        int Day;
        int Month;
        int Year;
public:
        //DATE();//Default constructor
        DATE(int d=1, int m=1, int y=2008) //constructor
        {
                Day=d;
                Month=m;
                Year=y;
        }

        //~ DATE();
        void setDay (int d)
        {
                Day = d;
        }
       
        void setMonth(int m)
        {
                Month=m;
        }

        void setYear(int y)
        {
                Year = y;
        }

        int getDay() const
        {
                return Day;
        }

        int getMonth() const
        {
                return Month;
        }

        int getYear() const
        {
                return Year;
        }

        void Show() const
        {
                cout<<Day <<"/" <<Month <<"/" <<Year;
        }
};
#endif


//CARD CLASS
#ifndef CARD_H
#define CARD_H

#include <iostream>
#include <string>

using std::cout;
using std::endl;
using std::string;

class CARD
{
private:
        int IDNo;
        string Type;
public:
        CARD(int id=0, string type="")//constructor with default arguments
        {
                IDNo=id;
                Type=type;
        }
        //CARD(const CARD &);//copy constructor
        //~CARD();
                //Mutators
        void setIdNo(int id)
        {
                IDNo = id;
        }

        void setType(string type)
        {
                Type=type;
        }

                //Accessors
        int getIdNo() const
        {
                return IDNo;
        }

        string getType() const
        {
                return Type;
        }

        void Show() const
        {
                cout<<"ID #: " <<IDNo <<endl
                        <<"Type: " <<Type;
        }

        bool AuthorizeEntry(char parkingLot)
        {
                bool authorized;
                if(Type=="Student" && (parkingLot=='C' || parkingLot=='D' || parkingLot=='E'))
                        authorized=true;
                else
                        authorized=false;

                return authorized;
        }
};

#endif

// MAIN FUNCTION
#include "person.h"
#include "student.h"
#include "staff.h"
#include "card.h"

#include <iostream>

using std::cout;
using std::endl;

int main()
{

        return 0;
}

knight fyre Mar 20th, 2008 2:28 am
Re: Composition problem "'XXX' is not a base or member"
 
Problem solved, no worries.


All times are GMT -4. The time now is 3:39 pm.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC