Beispiel #1
0
int
main()
{
    Animal *dog  = initDog("Rocky", "Maltese");
    Animal *cat  = initCat("Felix", true);
    Animal *duck = initDuck("Daffy", 11903);
    Animal *animals[3] = {dog, cat, duck};

    ((DogFunctions *) dog->functions)->guards();
    ((CatFunctions *) cat->functions)->eats_mice();
    ((DuckFunctions *) duck->functions)->are_smart();
    printf("\n");
 
    int i;
    for (i = 0; i < sizeof(animals)/sizeof(animals[0]); i++) {
        printf("%s the %s says %s!\n", animals[i]->name, say_type(animals[i]), animals[i]->functions->says());
        if (animals[i]->type == DOG)
            printf("Breed: %s\n", ((DogData *) animals[i]->data)->breed);
        else if (animals[i]->type == CAT)
            ((CatData *) animals[i]->data)->is_friendly ? printf("Friendly cat\n") : printf("Unfriendly cat\n");
        else if (animals[i]->type == DUCK)
            printf("Number of feathers: %d\n", ((DuckData *) animals[i]->data)->number_of_feathers);
        printf("\n");
        animals[i]->del(animals[i]); 
    }
    return 0;
}
Beispiel #2
0
/*!
 * \en 	Creates catalog editor widget. \_en
 * \ru 	Создает виджет для редактирования каталога.
 * 	В принципе он не предусмотрен использоваться ни как иначе, кроме как часть
 * 	объекта wField, т.е его родительский объект должен быть wField
 * 	или его наследник для обеспечения корректной инициализации.
 * 	При создании объекта runtime не предусмотрено, за исключением случая,
 * 	когда виджет используется в составе wField в объекте wDBTable.
 * 	\param parent - \en parent object. \_en \ru родительский объект. \_ru
 * 	\param name - \en name \_en \ru имя \_ru
 * 	\param catname \en not used \_en \ru не используется \_ru
 */
wCatalogEditor::wCatalogEditor(	wField *parent,
				const char *name,
				const char *catname) : QWidget(parent, name)
{
  QWidget* w =0;
  md = NULL;
  QString str;
  label = new QLabel(parent, name);
	label->setFrameShape(QFrame::Box);
	w =(QWidget*) parent->parent()->parent();
	str = parent->getFieldType();
	catId = atoi(str.remove(0,2));// gets catalog id.
   	if(w)
   	{
		if(strcmp(w->className(),"wDBTable")==0) // wField is element wDBTable
		{
			initCat(((wDBTable*)w)->db);
		}
   }
}