Search code examples
c++abstract-factory

Can derived class have a data member in abstract factory design pattern


I am new to C++ and i have the below doubt. In abstract factory pattern, can derived class have its own data members. For example,

class AbstractBaseclass
{
    public:
       virtual void somemethod() = 0;
}

class derived1: public AbstractBaseclass
{
    public:
        void somemethod()
        {
           .......
        }
}

class derived2: public AbstractBaseclass
{
    public:
        int dataMember;      ------------------> Is this correct?
        void somemethod()
        {
           .......
        }
}

class factory
{
    public:
        static AbstractBaseclass *createObject(int type)
        {
             <code to create object based on the passed type>
        }
}

I have many derived classes in my case. Just providing layout here. My doubt here: is it possible to have one data member in class derived2? and acccess it like below

 factory *fObj = new factory();
 AbstractBaseclass *baseObj = fObj->createObject(2);
 baseObj.dataMember = 3;

Solution

  • The derived class can have additional members in form of methods or variables.

    As for accessing dataMember via pointer to your base class - it's not allowed as dataMember variable is not within the scope of your base class.