トップページ⇒tech
5コメント1KB

mem_fun

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
C++ のメンバ関数アダプタ mem_fun をつかって
クラスXのリスト xlist のすべての要素に対して、Xのメンバ関数
func() を呼び出そうとして

for_each(xlist.begin()@` xlist.end()@` mem_fun(&X::func));

としたのですが、X::func() の戻り値が void だと
エラーが出てしまいます。

X::func() の戻り値を void 意外にするしかないのでしょうか?
0002名無しさん@お腹いっぱい。 NGNG
自己レス
http://lmj.nagaokaut.ac.jp/~lu/programming/stl-manual/mem_fun_t.html#1
によると標準C++ドラフトでは戻り値が void の関数は "return void" と
いうふうに void を返してもよいことになっているが
現時点ではそのような書き方が許されるコンパイラは少ない。
とありました。
VC++はまだだめみたいです。
0003>1 NGNG
翔泳社の「STL標準講座」という本には
boolにしてtrue返せとありました。(P240)

>X::func() の戻り値を void 意外にするしかないのでしょうか?
そのようです
00041 NGNG
なるほど、ありがとうございます。

VC++ には const_mem_fun_t がないなど、まだつかい難いところが
あるみたいですね。
0005名無しさん@お腹いっぱい。 NGNG
STLでコンパイラ対応してない部分って,つらいよね.
ポインタ用のiterator_traitsとか.
■ このスレッドは過去ログ倉庫に格納されています