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

我已经尝试过了,但是行不通! :(

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

void function(int i, QSet<MyEnum> MySet = QSet<MyEnum>() << One << Two << Four);

我也发现了这种方法:
QSet<MyEnum> const& foo();
void function(int i, QSet<MyEnum> MySet = foo());

但是,对此我不满意。

环境:

最佳答案

您可以使用initializer-list作为默认参数,如下所示:

void function(int i, QSet<int> MySet = { 1, 2, 3 });

更新:

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

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

void function(int i, QSet<MyEnum> MySet = { MyEnum::ONE, MyEnum::TWO });

关于c++ - 已将QSet填充为可选参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51966067/

10-11 16:06