■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
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とか.