gpt4 book ai didi

c++ - 由于缺乏反射,在 C++ 中不可避免地会有一个大的 switch block 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:46 24 4
gpt4 key购买 nike

<分区>

假设我有一个类层次结构:

class Shape {
};

class Circle : public Shape {
}

class Square : public Shape {
}

... hundreds of other shapes continue on...

当给定形状类的名称作为字符串时,我需要实例化该类的对象。

在 java 中,我可以做这样的事情(伪代码!)

Shape createShape(String name) {
return new Class.forName(name);
}

但在 C++ 中,我必须这样做:(伪代码!)

Shape * createShape(const string &name) {
if (name.compare("Circle") == 0) {
return new Circle();
}
else if (name.compare("Square") == 0) {
return new Square();
}
else if ... //hundreds of else if continues, one for each shape
}

在 C++ 中有没有更好的方法来处理这种情况?

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