C ++のオーバーロードに関するポインターの問題?
-
22-07-2019 - |
質問
ポインターは、オーバーロード解決にいくつかの特別な問題を提示します。
たとえば、
void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
f(0);
}
f(0)の呼び出しの何が問題になっていますか? f(0)の関数呼び出しを修正するにはどうすればよいですか?
解決
f((int *)0)
または f((char *)0)
しかし、あなたがこれをしていることに気付いたら、あなたのデザインをもう一度見てみましょう。
他のヒント
キャストするか、まったく使用しないでください:
f((int*)0);
f(0)の呼び出しの何が問題なのか、解像度があいまいです。オーバーロードされた関数は両方ともポインターを取りますが、この場合はキャストによってのみ解決できます。
f((int*)0)
ここでやろうとしていることに応じて、あいまいではない他のオプションがあります。
所属していません StackOverflow