### Общий подход:
- Создать массив или `std::vector` структур с именем команды и функцией фабрики (или типом, если используете шаблоны).
- В цикле проходить по этому массиву и вызывать `registerCommand`.
### Пример:
```cpp
Код: Выделить всё
#include <vector>
#include <string>
#include <memory>
// Предположим, что у вас есть функция registerCommand
// и классы Test1Command .. Test6Command, наследующиеся от общего интерфейса
struct CommandRegistration {
std::string name;
std::function<std::shared_ptr<Command>()> factory;
};
int main() {
// Массив или вектор с регистрациями
std::vector<CommandRegistration> commands = {
{"test1", [](){ return std::make_shared<Test1Command>(); }},
{"test2", [](){ return std::make_shared<Test2Command>(); }},
{"test3", [](){ return std::make_shared<Test3Command>(); }},
{"test4", [](){ return std::make_shared<Test4Command>(); }},
{"test5", [](){ return std::make_shared<Test5Command>(); }},
{"test6", [](){ return std::make_shared<Test6Command>(); }}
};
// Цикл регистрации
for (const auto& cmd : commands) {
registerCommand(cmd.name, cmd.factory());
}
return 0;
}
### Обратите внимание:
- В примере используется `std::function` и лямбда-выражения для фабрики.
- Если `registerCommand` принимает `shared_ptr`, то мы создаем его через `std::make_shared` внутри лямбды.