cocos2dxicon

【cocos2d-x】可変長引数を取る関数について

LINEで送る
Pocket

CCLOGの様に、引数の個数をその時に応じて変えたくなる時があります。

その様な関数はどうやって作るのでしょうか?


与えられたint型の引数全てを乗算して返すメソッドmultiplyを作ってみましょう。

結論この様な形になります。


さて、少しずつ見ていきましょう。

宣言部


この「…」を付けると可変長引数を取る関数を宣言出来ます。簡単ですね。
さて、それではこのいっぱい受け取った引数(実装部分からは何個来ているか分かりません。)は、どうやって扱うのでしょうか?

実装部


まず、va_list型の変数argsを用意します。


argsをnから始めますって感じですね。


そして、va_argで次の引数を読み取ります。
第二引数のintは受け取る変数の型です。
実は仮引数はポインタ上に並んでいます。
なので、この様に簡単にポインタを進めていき、次々に引数を読み取る事が出来ると言う訳です。
引数に変数の型を受け取るのはポインタを進めるためのデータ長を取得するためでしょうね。


これでargsを使えなくしています。

誰かのお役に立てば。

この記事のcocos記事一覧

LINEで送る
Pocket

Dalt

translimit, Inc. Application Engineer. Twitter: @daiki1003 Facebok: Daiki Asahi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です