質問: cocos2d-xでiphone用のアプリを開発しているものです。 今回クロスプラットフォームに対応するため、端末の画面の大きさを取得し、**表示する文字サイズと位置を取得**するメソッドを作成しました。 そのメソッドをメインプログラムから呼び出して、return fontsize position;としているのですが その値がそのままメインに返ってこないのです。 例) **ヘッダ** ``` public int serifuSize(int fontsize,int position); ``` **メイン** main.cpp ``` int fontsize; int position; this ->serifu(fontsize,position); ``` **serifメソッド** ``` int MainScene::serifu(int fontsize,int position){ //ここで画面幅から端末の情報を受け取り、それを元にfontsizeとpositionを設定する処理(省略) return fontsize,position; } ``` としており、serifu内ではきちんとした値が入っているのにもかかわらず、メインの方に処理が戻り、fontsize内の値とpositionの値を確認したところ、-1074098144こんな感じのデタラメな数字が入っています。 引数のあるメソッドの呼び出し方を調べてみたところCC_CALLBACK_2というものがあり、それを使ってみたのですが this -> CC_CALLBACK_2(MainScene::serifu, this); Qualified member access refers to a member in namesepace 'std' というエラーが出ます。 今一度目的だけを書き出すと、 *int値(引数は2つ)をメソッドで取得 *取得したその値を呼び出し元のクラスで使いたい なのですが、上の内容でどのような問題があるでしょうか。 お願いします。
回答: その書き方だと、どちらの変数も値は変化しません。試しに初期値を与えてみれば分かります。 ``` int fontsize = 12345; int position = 67890; this ->serifu(fontsize,position); ``` 正しい書き方ですが、とりあえず参照渡しで書いてみます。 ``` void MainScene::serifu(int& fontsize, int& position) { /* いろいろ求める */ fontsize = (求めたフォントサイズ); position = (求めたポジション); return; } ```