具有相同名称的 C++ 包装器?

标签 c++ wrapper

我如何做一个包装函数,它调用另一个函数,其名称和参数与全局命名空间中的包装函数本身完全相同?

例如我在 A.h foo(int bar);在 A.cpp 中是它的实现,在 B.h foo(int bar) 中;在 B.cpp foo(int bar) { foo(bar) }

我希望 B.cpp 的 foo(bar) 调用 A.h 的 foo(int bar),而不是递归调用自身。

我该怎么做?我不想重命名 foo。

更新:

A.h 在全局命名空间中,我无法更改它,所以我猜想使用命名空间不是一个选项?

更新:

命名空间解决了这个问题。我不知道您可以使用::foo() 调用全局命名空间函数

最佳答案

B 是否完全继承/实现了 A?

如果是这样你可以使用

int B::foo(int bar) 
{ 
   ::foo(bar); 
}

访问全局命名空间中的foo

或者如果它不继承..你只能在 B 上使用命名空间

namespace B
{
int foo(int bar) { ::foo(bar); }
};

关于具有相同名称的 C++ 包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/565459/

相关文章:

c++ - 如何在 Linux 中检测 unicode 文件名

c++ - include guard 在.cpp 中的作用是什么(不是在.h 中)?

c# - 创建简单的 c++.net 包装器。一步步

java - 包装第三方库时包装异常

python - OpenCV中的img.copy(),img.shape()

c++ - Main 只接收参数的首字母

c++ - 调用构造函数的次数以及地址相同的原因

c++ - 重载 -> 运营商通过代理转发成员访问

python - 使用函数装饰器从集合中删除一个值

c++ - 自定义引用类型