Может ли производный класс иметь член данных в абстрактном шаблоне проектирования фабрики - PullRequest
0 голосов
/ 22 февраля 2020

Я новичок в C ++, и у меня есть следующие сомнения. В абстрактном шаблоне фабрики может производный класс иметь свои собственные члены данных. Например,

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>
        }
}

У меня есть много производных классов в моем случае. Просто предоставлю макет здесь. Мои сомнения здесь: возможно ли иметь один элемент данных в классе производном 2? и доступ к нему, как показано ниже

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

1 Ответ

0 голосов
/ 22 февраля 2020

Производный класс может иметь дополнительные члены в виде методов или переменных.

Что касается доступа к dataMember через указатель на ваш базовый класс - это недопустимо, поскольку переменная dataMember не входит в область действия вашего базового класса.

...