iOS 的NSClassFromString是否在 BlackBerry 10 SDK 中具有等效项?
user1999360
问问题
202 次
2 回答
0
你不能在 C++ 中原生地做到这一点,C++ 是一种相当静态的语言,它没有 Objective-C 所具有的运行时功能。如果您使用模板机制将所有类名称映射到实例,则可以通过一些硬移植来实现。这在“ Is there a way to instantiate objects from a string contains their class name? ”中有所描述。
至于BB10 SDK,基于它是Java的假设,这是可能的。
Class myClassName = Class.forName("ClassName");
ClassName myInstance = myClassName.newInstance();
更新: BB10 SDK 是 C++,因此除了上面提到的之外,没有本地方法可以做到这一点。
于 2013-02-05T15:49:13.460 回答
0
NSClassFromString
是的,只要您使用 Qt 元类型系统,就有一个等价物。
您需要使用Q_DECLARE_METATYPE
宏和qRegisterMetaType
:
class UserClass : public Superclass {
...
}
Q_DECLARE_METATYPE(UserClass)
int main(int argc, char *argv[]) {
qRegisterMetaType<UserClass>("UserClass");
....
}
然后您可以使用以下代码创建您的类的实例:
int id = QMetaType::type("UserClass");
UserClass *instance = (UserClass*)(QMetaType::construct(id));
我猜想这种创建对象的方法也被 QML 使用,例如在attachObjects部分。
于 2013-02-09T12:47:13.930 回答