3

グローバル名前空間でラッパー関数自体とまったく同じ名前とパラメーターを持つ別の関数を呼び出すラッパー関数を実行するにはどうすればよいですか?

たとえば、私は Ah foo(int bar); にあります。A.cpp ではその実装、Bh foo(int bar); では そして B.cpp で foo(int bar) { foo(bar) }

B.cpp の foo(bar) が、それ自体を再帰的に呼び出すのではなく、Ah の foo(int bar) を呼び出すようにしたいのです。

これどうやってするの?foo の名前を変更したくありません。

アップデート:

ああ、グローバル名前空間にあり、それを変更できないので、名前空間を使用することはオプションではないと思いますか?

アップデート:

名前空間は問題を解決します。::foo() でグローバル名前空間関数を呼び出すことができるとは知りませんでした

4

5 に答える 5

4

名前空間を使用する

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

名前空間 A を使用して記述することもできます。ただし、ヘッダーにネームスペースを使用して記述しないことを強くお勧めします。

于 2009-02-19T14:12:39.013 に答える
1

これは、名前空間が解決しようとする問題です。問題の foo に名前空間を追加できますか? 次に、これを解決する方法があります。いずれにせよ、両方がグローバル名前空間にある場合、リンカーの問題が発生します。

于 2009-02-19T14:12:55.300 に答える