16587


cocos2d-xでiphone用のアプリを開発しているものです。  
今回クロスプラットフォームに対応するため、端末の画面の大きさを取得し、 **表示する文字サイズと位置を取得** するメソッドを作成しました。  
そのメソッドをメインプログラムから呼び出して、return fontsize position;としているのですが  
その値がそのままメインに返ってこないのです。

例)  
**ヘッダ**

[code]

    public    int serifuSize(int fontsize,int position);
    
[/code]

**メイン**  
main.cpp

[code]

    int fontsize;
    int position;
    
    this ->serifu(fontsize,position);
    
[/code]

**serifメソッド**

[code]

    int MainScene::serifu(int fontsize,int position){
    
        //ここで画面幅から端末の情報を受け取り、それを元にfontsizeとpositionを設定する処理(省略)
    
        return fontsize,position;
    }
    
[/code]

としており、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値（引数は２つ）をメソッドで取得  
＊取得したその値を呼び出し元のクラスで使いたい

なのですが、上の内容でどのような問題があるでしょうか。

お願いします。


CC BY-SA 3.0
2015-09-14T06:15:26.343
16586
2015-09-14T07:56:21.277
2015-09-14T07:56:21.277
2383
10529
question
c++ cocos2d-x
メソッドの返り値が変な値になる


その書き方だと、どちらの変数も値は変化しません。試しに初期値を与えてみれば分かります。

[code]

    int fontsize = 12345;
    int position = 67890;
    this ->serifu(fontsize,position);
    
[/code]

正しい書き方ですが、とりあえず参照渡しで書いてみます。

[code]

    void MainScene::serifu(int& fontsize, int& position)
    {
        /*
            いろいろ求める
        */
        fontsize = (求めたフォントサイズ);
        position = (求めたポジション);
        return;
    }
    
[/code]


CC BY-SA 3.0
2015-09-14T06:49:56.233
16587
2015-09-14T06:49:56.233
10966
16586
answer