指针存在一些特殊的问题为过载的分辨率。

说,例如,

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)

根据你想在这里做的有一些不模糊的其他选择是什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top