iOS の NSClassFromStringは、BlackBerry 10 SDK に同等のものがありますか?
user1999360
質問する
202 次
2 に答える
0
これを C++ でネイティブに行うことはできません。C++ はかなり静的な言語であり、Objective-C が持つランタイム機能を備えていません。テンプレートメカニズムを使用して、すべてのクラス名をインスタンスにマップすると、少し難しい移植が可能です。これについては、「クラス名を保持する文字列からオブジェクトをインスタンス化する方法はありますか?」で説明されています。
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 でも使用されていると思います。たとえば、attachedObjectsセクションなどです。
于 2013-02-09T12:47:13.930 に答える