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;
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.