在C++中有没有一种方法可以像python一样通过名称传递参数?

0aydgbwb  于 11个月前  发布在  Python
关注(0)|答案(2)|浏览(104)

此问题在此处已有答案

Does C++ support named parameters?(1个答案)
去年关闭。
在C++中有没有一种方法可以像python一样通过名字传递参数?例如,我有一个函数:

void foo(int a, int b = 1, int c = 3, int d = 5);

字符串
我可以这样称呼它:

foo(5 /* a */, c = 5, d = 8);


foo(5, /* a */, d = 1);

sd2nnvve

sd2nnvve1#

在C中没有命名的函数参数,但是你可以用C20中指定的初始化器来实现类似的效果。
获取所有函数参数并将其放入结构体中:

struct S 
{
    int a{}, b{}, c{}, d{};
};

字符串
现在修改你的函数以获取该结构体的一个示例(为了提高效率,使用const&

void foo(S s) 
{
    std::cout << s.a << " " << s.b << " " << s.c << " " << s.d;  // for example
}


现在你可以像这样调用函数:

foo({.a = 2, .c = 3});  // prints 2 0 3 0 
                        // b and d get default values of 0


这里有一个demo

wgx48brx

wgx48brx2#

没有

必须按顺序传递参数,因此,要为d指定一个值,还必须为c指定一个值,因为它是在c之前声明的。

相关问题