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?

War es hilfreich?

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 .

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