Здравствуйте, Centaur, Вы писали:
C>А что, под DOS таки существуют компиляторы C++?
Я использую BC++ 5.0. Поскольку у меня контроллер на 386SX, то получается достаточно удобно и оптимизация поддерживается где-то до 150-го Пентиума. Не надо писать неудобный код на ассемблере (в смысле основные блоки у меня описаны классами). Для самих-же модулей ввода-вывода (используется кристал Atmel 8015) приходится писать на asm-е, хотя там и есть подобие C, но у меня нет компилятора (лень скачать).
C>Я так понимаю, в редакторе у этих классов одно поведение, в трансляторе другое? И набор методов разный. И всё разное, кроме представления данных. Так зачем хотеть реализовать оба проекта на одних и тех же классах?
Идея в том, что эти классы являются контейнерами для данных. Они должны выдавать описание свойств тех или инных объектов. Поведение-же этих объектов отличается, по-этому, методы реализованы на основе других классов. Единственными методами могут быть методы проверки корректности данных в этом классе (по идее, конечно).
C>Любой мало-мальски уважающий себя компилятор выбросит неиспользуемый код и не будет включать его в финальный бинарник.
Я согласен, но во-первых не уверен с данным утверждением для BC++ 5.0, а во-вторых, как правило, если ф-ция виртуальная, то она всеравно остается, поскольку очень тяжело на 100% определить, что не будет вызова этой ф-ции.
C>Ему не нужно определять, ему нужно подсунуть элементу соответствующим образом реализованного visitor’а.
Здесь я согласен, но нужно продумать механизм, какого визитора подсовывать. И если все это передается через некий поток (файл), то в нем всеравно надо сохранять типы элементов (может я конечно о чем-то не подозреваю). По этим типам, в принципе, конечно можно создать динамически создаваемые подклассы, хотя механизм получается достаточно сложный (скорее всего неоправданно).