{}を使った関数の作り方?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
manntera
記事: 13
登録日時: 11年前

{}を使った関数の作り方?

#1

投稿記事 by manntera » 10年前

おはようございます。
今回質問したい内容は、
if(うんぬん)
{
 かんぬん
}

等の関数に{}を付けれる様な関数をC++で自作するにはどうすれば良いのでしょうか?

今やりたいのが、

void hoge(void)
{
初期化処理内容

メイン処理内容
  ↓
   終了処理処理
}

という関数があったとして、

void main(void)
{
hoge()
{
メイン処理内容を記述
}


メインでこんな感じに活用できる関数を作りたいと思っております。

初期化と終了処理を色々な場所で使い回し、メイン処理を{}の中に記述出来るみたいな感じですかね…?

回答お願いします!!

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: {}を使った関数の作り方?

#2

投稿記事 by みけCAT » 10年前

C++のifは関数ではありません。
完全に提示された仕様通りにできるかはわかりませんが、ラムダ式を使うと似たことができると思います。

コード:

#include <cstdio>

template<typename Func>
void hoge(Func f) {
	puts("初期化処理内容");
	f(); // メイン処理内容
	puts("終了処理処理");
}

int main(void) {
	hoge([]{
		puts("メイン処理内容");
	});
	return 0;
}
https://ideone.com/qjyIIe

参考:ラムダ式 - C++入門
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: {}を使った関数の作り方?

#3

投稿記事 by softya(ソフト屋) » 10年前

> 初期化と終了処理を色々な場所で使い回し、メイン処理を{}の中に記述出来るみたいな感じですかね…?

使い回しと言うのが気になりますね。どういうのを意図されてますか?
C++なら継承とか、委譲あたりをまず検討されるべきかと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

manntera
記事: 13
登録日時: 11年前

Re: {}を使った関数の作り方?

#4

投稿記事 by manntera » 10年前

すみません><
C++の継承は今勉強してる途中なのです・・・

継承を勉強すれば似たような感じの事が出来るんですかね?
そこらへんを勉強してもなお出来ないならまた質問させて頂きます!

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: {}を使った関数の作り方?

#5

投稿記事 by usao » 10年前

まず やりたいことの意味が伝わってないような気がしますが,どうなのでしょう.
オフトピック
全く同じ初期化と終了処理を行うということは,

初期化
処理A
終了処理

初期化
処理B
終了処理



で,処理Aと処理Bは同じ変数か何か(初期化と終了処理が必要な何か)を使いまわす,ということ?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: {}を使った関数の作り方?

#6

投稿記事 by softya(ソフト屋) » 10年前

私も意図を説明して欲しかったです。
場合によっては、一般的な関数で片付く問題かも知れません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る