gpt4 book ai didi

C++ - 使用类名作为函数参数

转载 作者:行者123 更新时间:2023-11-28 07:44:30 32 4
gpt4 key购买 nike

假设我有名为 ItemOne、ItemTwo、ItemThree 和 ItemFour 的类列表,它们都是 ItemBase 的子类。

我想在另一个名为 ItemGenerator 的类中有一个构造函数,它接受任何这些类的名称。我该怎么做?

ItemGenerator *someItem = new ItemGenerator(ItemThree);

另一种选择是在其中一个类上传递静态函数,但同样,我不知道该怎么做。

ItemGenerator *someItem = new ItemGenerator(ItemOne::start());

谢谢。

最佳答案

您可以使用模板:

struct ItemBase {virtual ~ItemBase();};
struct ItemOne : ItemBase {};
struct ItemTwo : ItemBase {};
struct ItemThree : ItemBase {};
struct ItemFour : ItemBase {};

struct ItemGeneratorBase {
virtual unique_ptr<ItemBase> generate() {}
virtual ~ItemGeneratorBase() {}
};
template<typename Item>
struct ItemGenerator : ItemGeneratorBase {
virtual unique_ptr<ItemBase> generate() {
return unique_ptr<ItemBase>(new Item());
}
};

std::unique_ptr<ItemGeneratorBase> someItem(new ItemGenerator<ItemThree>());

关于C++ - 使用类名作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15162256/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com