是否可以编写一个在编译时将任何 C 字符串文字转换"XY..."为类型的构造?std::integer_sequence<char, 'X', 'Y', ...>我真的想要一个角色包,而不是std::array.
就像是
using MyStringType = magic_const_expr("MyString");
Run Code Online (Sandbox Code Playgroud)
这里演示了一种使用文字运算符的好方法,但不幸的是它需要非标准编译器扩展。
我有一个SingletonBaseClass在 C++ 中定义并随后在 QML 中扩展的类。在 qmldir 文件中,它被标记为 Singleton:
// qmldir file
singleton SingletonClass 1.0 SingletonClass.qml
// SingletonClass.qml
import QtQml 2.0
pragma Singleton
SingletonBaseClass {
// ...
}
Run Code Online (Sandbox Code Playgroud)
这是基类:
class SingletonBaseClass : public QObject
{
Q_OBJECT
public:
SingletonBaseClass(QObject* parent = nullptr) {}
// Get the owner engine
Q_INVOKABLE void someMethodCalledFromQml()
{
QQmlEngine* ownerEngine = ?
}
// Get the single instance of the given engine
static SingletonBaseClass* instance(QQmlEngine* engine)
{
SingletonBaseClass* instance = ?
return instance;
}
};
Run Code Online (Sandbox Code Playgroud)