0

ポインターは、オーバーロードの解決に関していくつかの特別な問題を引き起こします。

たとえば、

void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
    f(0);
}

f(0) を呼び出すことの何が問題になっていますか? f(0) の関数呼び出しを修正するにはどうすればよいですか?

4

3 に答える 3

0

f(0) の呼び出しの問題点は、解決策があいまいであることです。オーバーロードされた関数はどちらもポインターを取り、この場合はキャストによってのみ解決できます。

f((int*)0)

ここで何をしようとしているかに応じて、あいまいではない他のオプションがあります。

于 2009-03-13T00:54:33.793 に答える