Pointer Probleme mit in C ++ Überlastung?
-
22-07-2019 - |
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)?
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