已填充 QSet 作为可选参数

Mar*_*cus 1 c++ qt optional-parameters

如何编写函数签名以使用QSet已填充QSet为默认值的可选参数。

我试过这个,但它不起作用!:(

enum MyEnum {
    One,
    Two,
    Three,
    Four
};

void function(int i, QSet<MyEnum> MySet = QSet<MyEnum>() << One << Two << Four);
Run Code Online (Sandbox Code Playgroud)

我还发现了这种方法:

QSet<MyEnum> const& foo();
void function(int i, QSet<MyEnum> MySet = foo());
Run Code Online (Sandbox Code Playgroud)

但是,我不高兴这个。


环境:

Qt:5.9.6
C++:11

Aze*_*eem 5

您可以使用初始化列表作为默认参数,如下所示:

void function(int i, QSet<int> MySet = { 1, 2, 3 });
Run Code Online (Sandbox Code Playgroud)

更新

使用enum class,它也可以正常工作。

这是示例:

enum class MyEnum : unsigned int
{
    ONE = 1,
    TWO,
    THREE,
    FOUR
};

void function(int i, QSet<MyEnum> MySet = { MyEnum::ONE, MyEnum::TWO });
Run Code Online (Sandbox Code Playgroud)

  • @JesperJuhl:QSet 还有一个带有初始化列表的构造函数(http://doc.qt.io/qt-5/qset.html#QSet-1)。 (2认同)