作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
<分区>
假设我有一个类层次结构:
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++ 中有没有更好的方法来处理这种情况?
我是一名优秀的程序员,十分优秀!