gpt4 book ai didi

c++ - 我可以在 C++ 中将类作为对象处理吗

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:27 25 4
gpt4 key购买 nike

这是我想要实现的目标:我有一个从主类继承的类(Class1 到 Classn)列表我希望能够实例化任何 n 个类的对象,而不必做一个大的 switch case(或等效的)。类似的东西:

static ClassPointerType const * const ArrayOfClassTypes[]={ Class1, Class2, .. Classn }; 

static Class *GetObjectOfClass(int i)
{
return new ArrayOfClassTypes[i](some parameters for the constructor);
}

您可以在其他 OO 语言(如 Delphi)中执行此操作,其中您具有 TClass 类型并可以获得对象的类...但我无法在 C++ 中找到等效功能。

最佳答案

你在找这样的东西吗?

template<typename T>
std::unique_ptr<base> make()
{
return std::unique_ptr<base>(new T);
}

class factory
{
static constexpr std::unique_ptr<Base> (*fns[])(){make<derived_a>, make<derived_b>};

std::unique_ptr<base> get_object_of_class(int const i)
{
if (i < 0 || sizeof fns / sizeof *fns <= i) {
return nullptr;
}

return fns[i]();
}
};

关于c++ - 我可以在 C++ 中将类作为对象处理吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475926/

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