ポインタは、過負荷解決のためのいくつかの特別な問題を提示します。C++でのオーバーロードに関するポインタの問題?
セイF(0)を呼び出すと間違っている何例えば、
void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
f(0);
}
? f(0)の関数呼び出しを修正するにはどうすればよいですか?
ポインタは、過負荷解決のためのいくつかの特別な問題を提示します。C++でのオーバーロードに関するポインタの問題?
セイF(0)を呼び出すと間違っている何例えば、
void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
f(0);
}
? f(0)の関数呼び出しを修正するにはどうすればよいですか?
f((int*) 0)
またはf((char *) 0)
しかし、あなた自身がこれをやって見つけた場合、私はあなたのデザインをもう一度見てかかるだろう。
、またはまったく使用しないでください。
f((int*)0);
(0)は、fを呼び出すと間違っている何が解像度が曖昧です。両方のオーバーロードされた関数はポインタを受け取ります。この場合、キャストによってのみ解決できます。
f((int*)0)
ここでは何をしようとしているかによって、あいまいではない他のオプションがあります。
文字は数字または? –
ちょうど0からタイプを推論することができないからです。 –
0はC++のヌルポインタを意味します。つまり、null int *またはnull char *になります。コンパイラはどちらを決定することはできません。 – Michael