0
我有幾類:使用發電機類來生成對象
class Item;
class Component;
class BrokenItem;
我需要能夠從Component
小號
這裏不同的組合產生Item
期不同配置的是我做了什麼:
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;
問題:我這樣做是錯誤的嗎?如果是這樣,有什麼更好的方法?如果不是,我該怎麼做才能讓它變得更好?
是否需要一個類?如果你沒有存儲狀態,這可能只是一個獨立的函數在命名空間。 – DanDan
@DanDan我以爲我可以將類似的功能組合在一起。它不好嗎? – Xan
@Xan C++中「類似函數」的更自然的表達就是使用一個名稱空間,而不是強制使用無用的類層次結構(這在Java中是必需的)。 – Dennis