我如何做一个包装函数,它调用另一个函数,其名称和参数与全局命名空间中的包装函数本身完全相同?
例如我在 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/