Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用生成器类生成对象_C++_Class - Fatal编程技术网

C++ 使用生成器类生成对象

C++ 使用生成器类生成对象,c++,class,C++,Class,我有几门课: class Item; class Component; class BrokenItem; 我需要能够从组件的不同组合中生成不同配置的项 以下是我所做的: class ItemGenerator { public: ItemGenerator(const std::vector<Component>& components_); ItemGenerator(const BrokenItem& brokenItem_); //

我有几门课:

class Item;
class Component;
class BrokenItem;
我需要能够从
组件的不同组合中生成不同配置的

以下是我所做的:

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_;
}
类项目生成器
{
公众:
项目生成器(常量标准::向量和组件);
项目生成器(const-BrokenItem和BrokenItem);
//还有更多的方法来生成
const std::vector&getGeneratedItems()const;
私人:
//用于存储生成对象的向量
//使用向量是因为
//可以生成配置
std::向量生成器;
}
我打算这样使用它:

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;
std::向量comps{1000、1020、1040、1080};
项目发电机ig(comps);
std::vector vi=ig.getGeneratedItems();
用于(自动i:vi)

std::cout您可以使用名称空间对类似函数进行分组:

namespace ItemGenerator
{
    std::vector<Item> FromComponents(const std::vector<Component>& components);
    Item FromBrokenItem(const BrokenItem& brokenItem);
}
名称空间项生成器
{
std::vector FromComponents(const std::vector&components);
来自BrokenItem的项目(常量BrokenItem和BrokenItem);
}

它需要是一个类吗?如果您不存储状态,这可能只是命名空间中的独立函数。@DanDan我想我可以将类似的函数组合在一起。“XXX”是C++中更自然的“类似函数”表达式,只是使用命名空间,而不是强制一个不有用的类层次结构(如java中所需要的)。谢谢