Ответ 1
Lazy С++, как представляется, предназначен для решения именно этой проблемы.
У меня есть куча файлов заголовков С++ с различными объявлениями классов и функций. До сих пор, когда я писал исходные файлы на С++ объявленных классов и функций, я вручную:
Только после всей этой работы, которая на самом деле ничего не делает, могу ли я начать реализацию функций. Мне интересно, есть ли там где-нибудь инструмент, который может автоматически генерировать ".cpp" файл из файла ".h", где полученный ".cpp" содержит пустые заглушки для функций, объявленных в файле ".h" (и для которых встроенное определение не дано). Предпочтительным будет командный инструмент командной строки UNIX. Спасибо.
ОБНОВЛЕНИЕ: идеальный кросс-платформенный инструмент. Если нет, я работаю над Mac OS X 10.6.
Lazy С++, как представляется, предназначен для решения именно этой проблемы.
В последнее время я оказался в вашей ситуации и укомплектовал свой собственный инструмент - impl_me. Это небольшой Ruby script, который использует SWIG в качестве бэкэнд-анализатора. Он записывает на stdout, поэтому вы можете комбинировать с вашим любимым набором инструментов nix find
/grep
/sed
/awk
для настройки для ваших собственных настроек.
Поскольку он написан на Ruby, он должен быть перекрестной платформой. SWIG также является кросс-платформой, поэтому все должно быть в порядке.
Он довольно примитивен на данном этапе и не настолько устойчив, как Lazy С++, в плане анализа странных шаблонов и материалов. Взносы приветствуются:)
eclipse CDT имеет функцию "Использовать метод", которая делает именно это (по одному методу за раз). Существует также функция "Generate Getters and Setters", которая также генерирует соответствующий код в телах функций.
Я пробовал Lazy С++, но, похоже, он устарел и больше не поддерживается. Он также не поддерживает новейший стандарт С++ 14.
Вот почему я решил написать свой собственный инструмент на Java, используя ANTLR4. Он называется Score, и вы можете найти его здесь: https://github.com/underrated/Score
На данный момент он находится в зачаточном состоянии и может быть заполнен ошибками, но я планирую его улучшить. Поэтому попробуйте, если хотите, и сообщите о любых ошибках на странице github проекта. Я попытаюсь исправить их как можно быстрее.