■掲示板に戻る■
■過去ログ倉庫めにゅーに戻る■
mem_fun
- 1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/18(月) 13:44
- C++ のメンバ関数アダプタ mem_fun をつかって
クラスXのリスト xlist のすべての要素に対して、Xのメンバ関数
func() を呼び出そうとして
for_each(xlist.begin(), xlist.end(), mem_fun(&X::func));
としたのですが、X::func() の戻り値が void だと
エラーが出てしまいます。
X::func() の戻り値を void 意外にするしかないのでしょうか?
- 2 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/18(月) 17:53
- 自己レス
http://lmj.nagaokaut.ac.jp/~lu/programming/stl-manual/mem_fun_t.html#1
によると標準C++ドラフトでは戻り値が void の関数は "return void" と
いうふうに void を返してもよいことになっているが
現時点ではそのような書き方が許されるコンパイラは少ない。
とありました。
VC++はまだだめみたいです。
- 3 名前: >1 投稿日: 2000/09/18(月) 18:17
- 翔泳社の「STL標準講座」という本には
boolにしてtrue返せとありました。(P240)
>X::func() の戻り値を void 意外にするしかないのでしょうか?
そのようです
- 4 名前: 1 投稿日: 2000/09/18(月) 20:29
- なるほど、ありがとうございます。
VC++ には const_mem_fun_t がないなど、まだつかい難いところが
あるみたいですね。
- 5 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/19(火) 01:35
- STLでコンパイラ対応してない部分って,つらいよね.
ポインタ用のiterator_traitsとか.