Понял, что бесконечность - это не фича, а баг. Устранил это недоразумение - теперь всё работает чётко.
Разобрался с тем, как именно должны работать ссылки на массивы. Теперь они тоже работают как надо.
Но пришёл к выводу, что в функции start класса Console снова намешалась жуткая мешанина. Всё потому, что разные типы параметров я присваиваю одним и тем же переменным, а это нужно делать, если делать так, создавая классы с виртуальным предком.
Вся проблема в том, что после выполнения очередной команды эти временные объекты нужно удалить, если они создавались, а у меня они в некоторых случаях создаются, в других случаях берутся указатели на значения в стеке - в общем, сижу теперь и гадаю, каким местом я думал, когда писал этот код.
Видимо, всё дело в спешке. Вроде я совсем не спешу, но мозг всё равно перестаёт видеть картину происходящего. Начинается программирование особых случаев. Которое в итоге приводит к мешанине.
С одной стороны так программировать проще. Меньше задумываешься, больше пишешь код. С другой стороны потом всегда приходится переписывать получившуюся мешанину.
Ну, что ж, переписывать так переписывать. Уже то хорошо, что не придётся переписывать вообще всё.
От версии к версии код программы всё больше становится реюзабельным. Но до совершенства ему конечно ещё пока далеко.
Комментариев нет:
Отправить комментарий