你能在C++中定义同义词吗?

Can you define synonyms in C++?

本文关键字:同义词 定义 C++      更新时间:2023-10-16

我有这个问题:我的一个类有一个名为f的函数。某些成员函数需要调用名为 f 的全局函数。据我所知,这是不可能的。要从类访问全局函数,我需要用另一个名称调用它。如何为其分配其他名称?

C++中是否存在同义词?定义预处理器符号在这里不起作用:预处理后名称必须不同。所以我有这个全局函数:

double f(double x)
{
return x;
}

我当然可以用另一个名字编写函数的另一个副本:

double f_(double x)
{
return x;
}

但这很丑陋。一个优雅的解决方案,请。我正在考虑定义一个全局函数指针:

double (*f_)(double x) = &f;

或内联包装器函数:

inline double f_(double x)
{
return f(x);
}

但这些并不是真正的同义词。有没有更好的方法?

我有这个问题:我的一个类有一个名为 f 的函数。某些成员函数需要调用名为 f 的全局函数。据我所知,这是不可能的。

这并非不可能。只需使用完全限定名::f来引用隐藏的全局函数。

至于为函数提供别名,函数本身没有办法,但是如果您将函数放在命名空间中,则可以为命名空间提供别名,从而为函数的限定名称提供别名。