C++ - 如何"Fill"函数调用并对参数使用默认值



假设第三方库公开了一个类。它的构造函数没有默认实参,且所有实参的类型相同。

class Something{
public: 
Something(int a, int b, int c, int d);
}; 

是否有任何语法允许用每个参数的相同默认值实例化该类?

,

Something s( sugar_stuff(42) ...) ; // <-> Something s(42,42,42,42);

谢谢你,史蒂文

写一个函数:

Something createSomething(int v) { 
return {v,v,v,v};
}

PS:我想构造函数实际上是公共的,而不是私有的。

class SomethingElse : public Something{
public:
using Something::Something;
SomethingElse (int a)
: Something{a, a, a, a}
{}
}; 

您可以尝试创建一个调用原始函数的新函数:

void Something_new(int a = 42, int b = 42, int c = 42, int d = 42){
Something(a,b,c,d);
}

我最喜欢的是

class Something {
int a = 0, b = a, c = b, d = c;
}
Something x0{};
Something x1{1};
Something x2{1, 2};
Something x3{1, 2, 3};
Something x4{1, 2, 3, 4};

如果你愿意,你也可以初始化为a0,而不是前一个成员。

https://godbolt.org/z/Yxj883zsr

x4:
.long   1
.long   2
.long   3
.long   4
x3:
.long   1
.long   2
.long   3
.long   3
x2:
.long   1
.long   2
.long   2
.long   2
x1:
.long   1
.long   1
.long   1
.long   1
x0:
.zero   16

最新更新