0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

概要

  • 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;
}
0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?