Gibt es etwas wie Methode / Funktion sentinels in C ++ / C?
-
29-09-2019 - |
Frage
In Objective-C kann man sagen, so etwas wie:
NSArray *anArray = [NSArray arrayWithObjects:obj,obj2, nil];
Falls Sie nicht vertraut mit Objective-C wird sagen, dass ich ein Objekt vom Typ von NSArray will, anArray, und ich mag die Methode arraywithobjects rufen und dann wirkt es als Wächter und nimmt so viele Parameter (die in dieser Fall sind Objekte), bis er Null erreicht hat.
Gibt es eine Möglichkeit, so etwas zu erreichen:
createObjects(o1,o2,o3,o4,-1);
Wenn das Verfahren der Funktion als viele Parameter annehmen kann, bis es einige Schlüsselwerte erreicht?
Nun, ich bin mir bewusst, Sie Sentinel Sachen in C und C ++ tun, aber ist es eine Möglichkeit, so etwas zu einem Verfahren zu schaffen, wie sie in Objective-C tun?
Lösung
können Sie schreiben eine variadische Funktion und Verwendung ein Wächter das letzte wirkliche Argument zu finden.
Doch in C ++, ist dies in der Regel eine schlechte Idee, weil variadische Funktionen nicht typsicher sind. Es ist in C ++ bevorzugt die Elemente setzen Sie in einen Behälter, Array übergeben werden soll, oder Klassenobjekt irgendeiner Art und dann das passieren an die Funktion. Es ist viel weniger fehleranfällig und viel einfacher zu überprüfen.
Andere Tipps
Ich denke, was Sie suchen varargs .