У меня мало классов:
class Item;
class Component;
class BrokenItem;
Мне нужно создать Item
разных конфигураций из разных комбинаций Component
Вот что я сделал:
class ItemGenerator
{
public:
ItemGenerator(const std::vector<Component>& components_);
ItemGenerator(const BrokenItem& brokenItem_);
// and a few more ways to generate
const std::vector<Item>& getGeneratedItems() const;
private:
// vector to store generated objects
// a vector is used because multiple combination of
// configuration can be generated
std::vector<Item> generatedItems_;
}
Я намерен использовать его так:
std::vector<Component> comps { 1000, 1020, 1040, 1080 };
ItemGenerator ig(comps);
std::vector<Item> vi = ig.getGeneratedItems();
for (auto i : vi)
std::cout << "generated item: " << i << std::endl;
Вопрос: Я делаю это неправильно? Если да, то какой лучший подход? Если нет, что я могу сделать, чтобы сделать его лучше?
Вы можете группировать подобные функции с помощью пространства имен:
namespace ItemGenerator
{
std::vector<Item> FromComponents(const std::vector<Component>& components);
Item FromBrokenItem(const BrokenItem& brokenItem);
}