gpt4 book ai didi

c++ - 调用命名空间列表中具有相同名称的函数

转载 作者:行者123 更新时间:2023-12-02 07:47:26 26 4
gpt4 key购买 nike

我有几个命名空间,每个命名空间都有相同的函数名称集:

namespace one {
void a();
void b();
void c();
}

namespace two {
void a();
void b();
void c();
}

namespace three {
void a();
void b();
void c();
}

有没有一种好的方法可以重构以下代码以避免重复?

one::a();
two::a();
three::a();

one::b();
two::b();
three::b();

while(true) {
one::c();
two::c();
three::c();
}

例如,在伪代码中,有没有一种方法可以表达

for (name: {one, two, three}) {
name::a();
}

干净吗?

如果有更惯用的方式来表达相同的想法,我还可以重写/重构函数定义。

最佳答案

您无法迭代这样的命名空间,但您可以通过显式列出不同的函数来迭代它们:

for (auto f : {one::a, two::a, three::a})
{
f();
}

如果您需要经常这样做,我可能会在全局范围内编写一个函数来调用所有其他函数。或者您可以编写一个宏来简写上面的列表:

#define func_list(name) {one::name, two::name, three::name}

for (auto f : func_list(a))
{
f();
}

这在某种程度上取决于您在特定情况下需要做什么。不过,我只是建议将它们重命名为不同的名称,或者在全局范围内创建不同名称的包装函数。

关于c++ - 调用命名空间列表中具有相同名称的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59763179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com