Frage

Pointers einige spezielle Probleme für die Überladungsauflösung vor.

Nehmen wir zum Beispiel,

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

Was mit Aufruf f (0) falsch ist? Wie kann ich den Funktionsaufruf für f fix (0)?

War es hilfreich?

Lösung

f((int*) 0) oder f((char *) 0)

Aber wenn Sie sich diese finden tun würde ich noch einen Blick auf Ihr Design nehmen.

Andere Tipps

Wirf ihn, oder verwenden Sie es nicht:

f((int*)0);

Was mit Aufruf f (0) falsch ist, ist die Auflösung nicht eindeutig ist. Ihre beiden überladenen Funktionen nehmen einen Zeiger, der in diesem Fall nur über Guss gelöst werden.

f((int*)0)

Je nachdem, was Sie versuchen, hier zu tun gibt es andere Optionen, die nicht eindeutig sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top