Russian Qt Forum

Qt => Общие вопросы => Тема начата: Viliam_Volos_V от Июль 04, 2008, 15:54



Название: [QT 3.3] Создание классов в цикле
Отправлено: Viliam_Volos_V от Июль 04, 2008, 15:54
Ну подскажите плиз
Есть цикл в котором создаётся класс
И при каждом проходе должен создавать новый клас с новым именем например:
Class0
Class1
Class2
и тд

т.е. чтобы имя класса динамически менялось

Спасибо


Название: Re: [QT 3.3] Создание классов в цикле
Отправлено: Tonal от Июль 04, 2008, 17:24
А ты на чём пишешь? На python-е это может выглядеть так:
Код:
for n in xrange(10):
  cls = type('Class%d' % n, (object,), dict(...))
Только не понятно, какое отношение это к Qt имеет, и зачем может понадобиться...


Название: Re: [QT 3.3] Создание классов в цикле
Отправлено: Red Devil от Июль 05, 2008, 13:36
Тебе нужно использовать паттерн типа фабричного метода. Кроме того создаваемые классы должны быть унаследованы от одного класса.

Код:
enum 
{
     TYPE_A, TYPE_B, TYPE_C
};
class Base
{
public:
     virtual int Type() = 0;
};

class A : public Base
{
public:
      virtual int Type() { return TYPE_A; }
};

class B : public Base
{
public:
      virtual int Type() { return TYPE_B; }
};

class C : public Base
{
public:
      virtual int Type() { return TYPE_C; }
};

Base * CreateObject(int nType)
{
       switch (nType)
       {
             case TYPE_A : return new A;
             case TYPE_B : return new B;
             case TYPE_C : return new C;
             default : return 0;
       }
}

for (int i = 0; i < 3; ++i)
{
        Base * p = CreateObject(i);
}


Примерно вот так вообщем. Для классов Qt это конечно будет сложнее, если используются абсолютно разные классы. Опиши задачу подробнее, потому что слету ее вряд ли можно решить.