C++のreturn文で複数の戻り値を得る方法 【なんちゃって編】


概要

  • iOSアプリ開発で使用されるSwiftは戻り値が複数指定できるなんて聞いたことが無いでしょうか?
  • C++はできないとか言われていますね。
  • でも、自前でなんちゃってで作れるんですよ。
  • 今回はそれについて記事にします。

方法

準備
1. 自前のStructure(構造体)を作る。
2. 構造体のメンバ変数は、戻り値で必要なものにする。

簡単です。これだけです。
あとは、メソッドの戻り値を自前の構造体にするだけ。
こんな簡素な説明じゃわからないよって方に、サンプルソースを記載します。

サンプル

// 1. 自前のStructure(構造体)を作る。
typedef struct myresult {
    // 2. 構造体のメンバ変数は、戻り値で必要なものにする。
    std::wstring sString;    // 文字列
    int          iValue;     // 整数
    double       dValue      // 小数点
} MyResult;

後は、適当に自分が使うメソッドの戻り値にこの構造体を設定するだけです。

class MyClass
{
public:
    MyClass();
    ~MyClass();
    MyResult MyMethod();
}

// ★戻り値の型が自前の構造体だよ。
MyResult MyClass::MyMethod()
{
    // 何か処理をする
    auto result = XXXXXXXX();
    if(0 == result){
        return {  L"成功したよ~", 0, 0.0 };
    }else{
        return {  L"残念でした", -1, 9.9 };
    }
}

// Main関数
void main()
{
    auto myclass = new MyClass();
    auto myresult = myclass->MyMethod()
    // これでなんちゃって複数戻り値を作れる。
    printf("%s\n", myresult.sString().c_str());
    printf("%d\n", myresult.iValue);
    printf("%f\n", myresult.dValue);
    delete myclass;
}