Показать сообщение отдельно
Старый 19.01.2008, 18:52   #16  
petr is offline
petr
Участник
Соотечественники
 
557 / 201 (8) ++++++
Регистрация: 30.05.2005
Адрес: Швейцария
Ну, я может не самый удачный пример привел. Просто хотел показать, что конструкция:
X++:
    classObj = new SysDictClass(_classNum);

    if (classObj &&
        classObj.hasStaticMethod(staticName))
    {
        casPerm.assert();

        //BP Deviation Documented
        return classObj.callStatic(staticName);
    }
или
X++:
    classObj = new SysDictClass(_classNum);
    object   = classObj.makeObject();

    if (classObj &&
        classObj.hasObjectMethod(objectName))
    {
        casPerm.assert();

        //BP Deviation Documented
        return classObj.callObject(objectName, object);
    }
имеет право на существование, и без нее не реализовать некоторые вещи проблематично (я ухожу от кванвора всеобщности), а уж как она получит название метода (либо из константы, либо как параметр функции) - это не так уж и важно.

И во втором случае, как раз и получается передача функции (в нашем случае ее имени) как параметр.

Вообще, в своей практике использовал только вызов по имени метода таблицы, т.к. от этого уж точно никуда не деться, пример выше привел Delfins.

Цитата:
Сообщение от belugin Посмотреть сообщение
Кстати, из за статичности метода main, его приходится дублировать во всех потомках....
Мне вот только немного непонятно про дублирование метода main.

Если наследник по сути делает тоже самое, что и родитель (только немного иначе), у него метод main я и не перекрываю, просто в construct родителя инициализирую класс наследника.

Если же наследник делает что-то другое, то и menuitem другая, и в наследнике свой main и я не считаю, что в данном случае это будет дублированием.
За это сообщение автора поблагодарили: alex55 (1).