[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 06/16 09:47 / Filesize : 198 KB / Number-of Response : 952
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Boost総合スレ part9



1 名前:デフォルトの名無しさん [2010/05/28(金) 11:49:47 ]
過去スレ
Part 8 pc12.2ch.net/test/read.cgi/tech/1251446016/
part 7 pc12.2ch.net/test/read.cgi/tech/1232367742/
part 6 pc11.2ch.net/test/read.cgi/tech/1207749841/
part 5 pc11.2ch.net/test/read.cgi/tech/1192662575/
part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/
part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/

■関連サイト■
Boost C++ Libraries
www.boost.org/

Boost 翻訳プロジェクト
boost.cppll.jp/HEAD/

Let's Boost
www.kmonos.net/alang/boost/

boost info
shinh.skr.jp/boost/

820 名前:デフォルトの名無しさん mailto:sage [2012/01/20(金) 08:58:09.76 ]
ああ!constついてました

821 名前:デフォルトの名無しさん mailto:sage [2012/01/21(土) 05:12:42.79 ]
boost::fusion::list a の先頭要素が
a.begin()
で参照できないのがちょっと気持ち悪い

822 名前:デフォルトの名無しさん mailto:sage [2012/02/01(水) 23:49:52.05 ]
bjamの利点がわからないのですが、autoconfとかを用いずbjamを利用してるのは何故でしょうか?

823 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 00:18:21.01 ]
POCOとほとんど同じ機能持つライブラリ
ありませんか?

824 名前:デフォルトの名無しさん mailto:age [2012/02/02(木) 16:01:00.05 ]
ubuntuでboost入れたら一瞬でインスコ完了で使えるようになった
一方、Windowsではサイズがでかい上にビルドにかなり時間がかかる。
この差はなんでつか?ちなみにWindowsではVCで使う感じです

825 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 16:32:49.79 ]
apt-get とかでパッケージをインストールしたんのなら、既にバイナリが含まれてるからだろ。

826 名前:デフォルトの名無しさん mailto:sage [2012/02/02(木) 17:06:15.79 ]
なるへそ
Windowsでは全部落としてきて自分でビルドしたからか

827 名前:デフォルトの名無しさん mailto:sage [2012/02/03(金) 01:20:40.57 ]
>>823
なんでpoco不可?

828 名前:デフォルトの名無しさん mailto:age [2012/02/03(金) 08:07:34.00 ]
ポコチン



829 名前:デフォルトの名無しさん mailto:age [2012/02/05(日) 22:05:47.61 ]
ちんぽこ

830 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 23:10:55.09 ]
ちんぽこ商用ライセンスだと制限きついしなぁ

831 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:01:35.59 ]
VC2010 Essentialsを使っています。
boost::serializationを使うと、アプリケーションを作成するためのプロジェクトでも
.libと.expを作ってくれるようになるのですが、これを抑制する方法はないでしょうか?

832 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 00:02:11.18 ]
ちんぼ

833 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 01:54:03.78 ]
っぽ

834 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 02:07:40.85 ]
ぬるぽ

835 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 12:57:55.72 ]
>>831
前に別のライブラリで同じ症状に遭ったことがあるけど、解決策見つからず

本当にどうしても嫌なら、ビルド後のプロセスでdelするとか・・・

836 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 15:29:48.48 ]
libが生成されるってことはエクスポートテーブルもできてるんだから
ファイルを消せばいいってもんじゃないだろ

どこかで間違えて__delcspec(dllexport)が定義されてるんだろうね

837 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 18:34:24.22 ]
serializationがらみで
ttp://codepad.org/bp6RCbxw

boost::shared_ptrのシリアライズコードを改造して、std::shared_ptr用の物を書いたのですが、
コレにカスタムデリータのサポートを追加するいいアイデア無いでしょうか?


838 名前:デフォルトの名無しさん mailto:sage [2012/02/09(木) 22:45:06.20 ]
poco高すぎだろ
pro買わないとネットワーク系全滅だし



839 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 12:34:22.38 ]
>>824
linuxでC++やるときってエディタ何使うんですか
emacsのタグジャンプの設定で苦労した覚えが
今はもっといいのあるんだろうか

840 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 17:27:39.08 ]
現在Boostのthreadを使って、ワークパイルを管理するクラス、各スレッドに付随するクラス(ワーカーとします)を作っています。
ワーカーは仕事を一通り終えた後、管理クラスが終了許可を出すまで「待ち」を行うようにするため、mutexとconditionを用いています。
管理クラスが終了許可を出せば「待ち」が解除されてスレッドとして動作していた関数を完了するのですが、待ちが解除されるときにmutexにロックがかけられてしまいます(それより前でmutexにロックはかけていない)。
そのため、ワーカーが破棄されるときにmutexでunlock()関数を使わないとエラーが生じます。

ワーカーで行いたいことは通知が来るまで待つだけで、排他制御の必要はありませんが、わざわざunlock()を使わなければならないのでしょうか。
イメージ的にはconditionにmutexを渡さないwait()があれば期待通りになりそうなのですが、それは存在しません。

よろしくお願いします。また私の解釈に間違いがあれば指摘いただけると幸いです。

841 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 16:10:52.17 ]
待つだけでいいならミューテックスでもいいのでは…そういう話ではない…?
#include <iostream>
#include <boost/thread.hpp>
#include <unistd.h>
void f( boost::mutex* guard )
{
std::cout << "worker: working" << std::endl;
std::cout << "worker: waiting until the mutex was unlocked" << std::endl; guard->lock();
std::cout << "worker: finished" << std::endl; guard->unlock();
}
int main()
{
boost::mutex m;
std::cout << "main: lock a mutex" << std::endl; m.lock();
std::cout << "main: create a worker" << std::endl; boost::thread worker(&f,&m);
std::cout << "main: sleeping 3 seconds" << std::endl; sleep(3);
std::cout << "main: unlock the mutex" << std::endl; m.unlock();
std::cout << "main: waiting for join" << std::endl; worker.join();
std::cout << "main: finished" << std::endl;
return 0;
}

$ ./sample
main: lock a mutex
main: create a worker
main: sleeping 3 seconds
worker: working
worker: waiting until the mutex was unlocked
main: unlock the mutex
main: waiting for join
worker: finished
main: finished

842 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 17:00:53.33 ]
>>841
返信ありがとうございます。
管理側は仕事追加・終了許可時に、ワーカーのインスタンスそれぞれのメンバー変数であるconditionでnotifyすることで待ちを解除させています。
ワーカーは、管理側が仕事を追加すると通知を受けて仕事を開始するためにwhileループ内で待ちを行っています。(終了許可待ちと仕事待ちは共通のconditionとmutex)
void Worker::run() {
 while (true) {
   TaskData* task = NULL;
   while (_taskBag->getTasks(&task)) {
     job(task);
   }
   if (_finishable && _taskBag->numTasks() == 0) {
     _mtx.unlock();
     break;
   }
   _cond.wait(_mtx);
 }
}
ワーカーが複数いるので、mutexロック解除で待ち解除の通知を行うと、「仕事追加→いずれかのワーカーが仕事に着手」の後にmutexの所有権が管理側に戻ってこないかもしれないので難しそうです。
まぁ実装の仕方次第でmutexだけでもいけそうですが。

あとよくよく考えると_cond.wait(_mtx)の時に暗黙的に_cond.wait(mutex::scoped_lock(_mtx))のようになっているんでしょうか。
となると、ロックがwait解除後に再度かけられてしまうのはある意味当たり前ですね。

申し訳ありません。簡潔な文章で伝えるのがもの凄く難しいですねw

843 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 07:46:49.88 ]
waitにはmutexをロック済みのunique_lock渡す必要がある。直接mutexをwaitの渡せているのはたぶんVCのせい。
unique_lockのローカル変数を作ればunlockを呼び出す必要は無い。
condition_variableは他の変数と一緒に使うことが前提。
waitはnotifyの通知以外でも誤って解除されるのでbool変数などと合わせて使わないとだめ。
bool変数で確認するからにはmutexでの排他制御が必要。

844 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 09:57:29.58 ]
>>843
ありがとうございます。
排他制御が要らなく見えていたので、待ちの実現だけにcondition、mutex両方を使うことに冗長さを感じていたのですが、conditionはそもそも単体では使わないものなんですね。

ちなみに_cond.wait(_mtx)の記述はXcode4.2でもできています。C++の引数1つの場合の暗黙的なコンストラクターですね。
こういう場合に暗黙的にできてしまうと見落としてしまう場合があって危険だと感じます。

845 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 11:57:41.20 ]
>>844
それじゃあboostのバージョンが低いだけじゃないの?一時変数は非const参照に拘束できない。

846 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:45:57.66 ]
>>845
Boost 1.48です。ちなみに上記の_mtxはワーカークラスのメンバー変数です。

847 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 19:55:58.52 ]
>>846
そうか。あとはコードを実際に追わないと分からないわ。

848 名前:デフォルトの名無しさん mailto:sage [2012/02/14(火) 07:34:07.70 ]
boost::asioの非同期通信でhttpクライアントつくろうと思ってasync_read_someでデータ取ってるんだけど、何故か5kbくらいでデータが途中で切れちゃうんだ
誰かピンとくる人居ないか…助けてくれ



849 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 01:04:19.29 ]
>>848
async_read_until使えば?

850 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 15:40:45.11 ]
今作成中のプログラムに<boost/thread.hpp>と<boost/thread/condition.hpp>をインクルードすると、システムのlocale_facets.tccとboostのshared_count.hppにおいて大量のエラーが発生します。
これらのファイル自体には問題は無く、何らかの依存関係でエラーが出ているんだろうということは想像がつくのですが、全く原因がわかりません。

何かこのような現象について心当たりのある方は居られないでしょうか。

Xcode4.2で、ヘッダーサーチパスには/opt/local/includeを(boostはこの下にインストール)設定しています。ライブラリーファイルのリンクも行っています。

よろしくお願いします。

851 名前:デフォルトの名無しさん [2012/02/15(水) 19:46:15.26 ]
>>850ですが、自己解決しました。申し訳有りません。

原因はboostを使っているソースファイルとは別のファイル内で定義した「swap」という名称のマクロでした。
それぞれのソースファイルを最終的にmain関数で参照する形となっていたためにboost内の何かとマクロ名が衝突したようです。

自分で定義したswapをユニークな名称に変更することで解決しました。

今後どなたかの参考になれば幸いです。

852 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 19:49:52.51 ]
こらたかし!マクロは全部大文字にって言ったでしょ!

853 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 21:30:41.91 ]
さすがにswapをマクロ名にするのはないな

854 名前:デフォルトの名無しさん [2012/02/15(水) 22:26:50.21 ]
cpp側なら問題なかったのですが、実装も含めたヘッダーに書いてしまったのが盲点の原因でした...

855 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:40:49.07 ]
気が、狂っとる

856 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:45:19.13 ]
君は優秀な人材だぜひマイクロソフトに就職しなさい

857 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 22:53:13.67 ]
>cpp側なら問題なかったのですが
よくねぇよ。
規格にちゃんと、

「標準ライブラリーのヘッダーをincludeする翻訳単位は、全標準ライブラリーヘッダーで宣言されている名前を#defineもしくは#undefしてはならない。」

と書いてある。
だから、ひとつでもどれか標準ライブラリーのヘッダーをincludeしたならば、swapという名前は#defineも#undefもできない。

858 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:06:42.94 ]
min
max



859 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:27:50.00 ]
>>857
swapって名前標準ライブラリーにあるの?

860 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:29:27.19 ]
あぁalgorithmにあるのか。使ったこと無かったわ。

861 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:29:55.03 ]
嘘だろ…

862 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:34:09.02 ]
iostreamをインクルードするだけで使えるというのに・・・。

863 名前:デフォルトの名無しさん mailto:sage [2012/02/15(水) 23:44:50.77 ]
>>859
名前だぞ名前。
クラスのメンバーにも等しく適用されると何故わからないんだ。
多くの標準ライブラリのクラスがswapという名前のメンバーを持っているのを知らないのか。

864 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 00:11:46.32 ]
>>858
MSは禿にごめんなさいしないといけないよね

865 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 03:25:04.66 ]
C++にテンプレートが無い様な時代から既に用意されてたんだから
後出しのハゲが謝りお願いすべき

866 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 03:49:30.66 ]
小文字が入ってるマクロ名は紛らわしいから
コンパイラが警告吐いてくれたらいいのにな

867 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 07:22:59.71 ]
assertみたいなマクロ実装関数で警告が出ることになるか
ところでassertをキーワードに昇格させて定数式なら
コンパイル時エラー出す設計にはできなかったのかな
そうするとstatic_assertと書き分けなくて良いような気もするけれど

868 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 12:13:03.95 ]
例によってCとの互換性が



869 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 12:38:53.66 ]
staticの方はともかくassertってあんまし使わなくねーか?

870 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 12:38:56.08 ]
iOS開発でObjCのコンテナクラス類使わずにどうもSTL/boost多用してしまうんだけど
果たしてこれはよくないのかどうか・・・

871 名前:デフォルトの名無しさん [2012/02/16(木) 15:37:52.34 ]
threadのwaitってどこのサイトみても

while(!ready) {
 cond.wait(lock);
}

のようになっていますよね。これを起こす場合には
ready = true;
cond.notify_all();
とすると思うのですが、while分の!readyを判定してからcon.waitをかけるまでの間に上記の起こすコードが呼ばれた場合には、動かなくなってしまう気がします。

これを回避する方法などあるのでしょうか。timed_waitでしょうか。

872 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 18:47:36.71 ]
>>871
cond.wait(lock);でロックを要求している素晴らしい設計を無視するなよ

873 名前:デフォルトの名無しさん [2012/02/16(木) 19:01:27.73 ]
>>872
ありがとうございます。
よくよく考えてみるとwhile文の前と起こすコードの先頭でミューテックスをロックすればいいんですね。
今まで引っかかっていたものがスッキリとれました!

874 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 21:10:13.56 ]
>>872,873を理解するまで1時間かかってしまった

875 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 18:51:24.80 ]
1.49出たのに反応なしか

876 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 01:31:34.53 ]
小学生並みの発想だな

877 名前:デフォルトの名無しさん mailto:sage [2012/03/04(日) 14:05:48.47 ]
中学生並みの反応だな

878 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 21:26:03.54 ]
大学生並の考察だな



879 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 22:17:31.08 ]
院生並の皮肉だな

880 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:36:14.79 ]
社会人並みの判断だな

881 名前:デフォルトの名無しさん mailto:sage [2012/03/06(火) 23:51:07.07 ]
年金生活者は余裕だな。

882 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 00:00:44.76 ]
病院生活並の苦労だな

883 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 09:58:05.77 ]
世捨て人並の達観だな

884 名前:デフォルトの名無しさん mailto:sage [2012/03/07(水) 18:03:57.16 ]
銀河皇帝並みの独断だな

885 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 00:18:09.27 ]
原子核級の大志だな

886 名前:デフォルトの名無しさん mailto:sage [2012/03/10(土) 14:27:31.51 ]
風俗嬢並の偏屈だな

887 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 00:11:07.28 ]
俺並みの性欲だな

888 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 00:46:18.10 ]
風説の流布



889 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 02:29:45.81 ]
痛風の呂布

890 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 09:45:46.39 ]
風呂の風俗

891 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 18:41:57.17 ]
温泉の効能

892 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 20:16:36.14 ]
駄レスがスレをboostする!

893 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:11:17.86 ]
歌舞伎町の893

894 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:36:25.70 ]
ゲスの極み

895 名前:デフォルトの名無しさん mailto:sage [2012/03/11(日) 23:45:41.65 ]
お肉の厚み

896 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:07:56.91 ]
boostってC++11の要素は取り込みはじめてるの?

897 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:33:35.99 ]
C++11がBoostを取り込んだの間違いだろ
Boost.Moveのことなら知らん

898 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:37:49.12 ]
Boost.Chrono とかは C++11 からの逆輸入。



899 名前:デフォルトの名無しさん mailto:sage [2012/03/12(月) 00:49:09.56 ]
既存コンパイラで動くようにしてくれてるならいいことだ

900 名前:デフォルトの名無しさん mailto:sage [2012/03/13(火) 00:46:51.29 ]
◆ 便利な今までに出た風説の流布一覧
伝説の流川
伝説の呂布
解説の掛布
風疹の漁夫
ふーてんの流浪
妖鳥の流布
入れ墨の鯨布
風の谷の呂布
骨折に湿布
聖教新聞の配布
電設の鈴木
通風の湿布
テンセルの毛布
テンソルの分布
ピンサロの主婦
風雪ながれ旅
風雪の露天風呂
風俗で炉利
風俗の幕府
風てんのトラ
温泉の掛川
風の谷のナウシカ
季布の一諾
空席の椅子
秀策の棋譜
特攻の拓
ピンフの20符

901 名前:progress_display mailto:sage [2012/03/19(月) 23:18:49.04 ]
最近おれっちの話が出来ていないが、C++11先取りしておれっちを実装するコンパイラってまだ出てきてないの?

902 名前:デフォルトの名無しさん mailto:sage [2012/03/24(土) 20:20:56.52 ]
serialization を使ったときに、exe ファイルにいろんなシンボルがエクスポートされるのを防ぐ方法ってないでしょうか?

903 名前:デフォルトの名無しさん mailto:sage [2012/03/25(日) 11:34:46.67 ]
仕様です

904 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/01(日) 06:51:48.14 ]
>>901
あれ、あなた風の噂で左遷されたって噂を聞いてたけど・・・?

905 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 19:36:20.60 ]
boost::optional<int> test () { return 1; }

void func {
if (auto i = test() && i.get() != -1) {
return ;
}
}
これコンパイル通らないけどどうして?

906 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 20:00:01.39 ]
funcの定義

907 名前:営利利用に関するLR審議中@詳細は自治スレへ mailto:sage [2012/04/11(水) 20:16:53.92 ]
void func () {
      ↑

908 名前:デフォルトの名無しさん mailto:sage [2012/04/11(水) 21:59:09.93 ]
>>905 エラーメッセージ見ろよ。



909 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 00:58:06.25 ]
>>906-908
そこじゃなくて
>if (auto i = test() && i.get() != -1) {
俺が言いたいのはこっちのほうだった
auto i = test()この段階で初期化されてるはずなんだけどどうして無理なんだろう

910 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 01:05:06.21 ]
>>909
規定された条件部の文法↓にマッチしないから。
condition:
  expression
  attribute-specifier-seq/opt decl-specifier-seq declarator = initializer-clause
  attribute-specifier-seq/opt decl-specifier-seq declarator braced-init-list

911 名前:デフォルトの名無しさん mailto:sage [2012/04/12(木) 01:25:55.07 ]
>>910
そもそも規格上無理なのね
ありがとう

912 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 16:18:52.52 ]
テンプレートクラスのメンバ関数を、
boost::threadとboost::bindで呼び出して、別スレッドで動かしたいのですが
うまくいきません。ご教授願います。

template<class T>
class TestClass : public T
{
public:
TestClass(void) : T() {}
};

class TestBase
{
public:
void print(TCHAR *str){ cout << str << endl; };
};

typedef TestClass<TestBase> MyTestClass;

int _tmain(int argc, _TCHAR* argv[])
{
TCHAR *char str = _T("test");
MyTestClass myTestClass;
myTestClass.print(str); // 正常に動作

boost::thread myThread(boost::bind(&MyTestClass::print,str)); // ←コンパイルエラー
// c:\Program Files\boost\boost_1_47\boost\bind\mem_fn.hpp(333): error C2296: '->*' : 無効な左オペランドです。

}

913 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 17:52:34.92 ]
>>912
boost::bindでクラスのメンバ関数ポインタを拘束した場合、第一引数はそのクラスのインスタンス(かインスタンスのポインタとか)になる
boost::bind(&MyTestClass::print, myTestClass, str)

914 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 18:08:58.52 ]
>>913
ありがとうございます。無事にコンパイルが通りました。

915 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 19:19:10.20 ]
boost::threadを使って、メンバ関数ではなくて、
クラスそのものを別スレッドで動かしたい場合は、どのように指定すればよいでしょうか?


916 名前:915 mailto:sage [2012/04/21(土) 20:04:05.95 ]
boost::threadに渡せるのは関数ポインタだけなのかな?
boost::threadにクラスのコンストラクタを渡せば、そのクラスは別スレッドで動いてくれるのかと思ったけど
勘違いでしょうか?

917 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 20:54:52.22 ]
クラスが動くってなんだ?
・・・って関数オブジェクトのことか?
関数オブジェクトのインスタンスを渡せばそのoperator()を別スレッドで実行させることはできる

918 名前:デフォルトの名無しさん mailto:sage [2012/04/21(土) 21:32:08.83 ]
>>916
具体的にどんなコードを書きたいのかここに出したほうが良いと思う。




919 名前:915 mailto:sage [2012/04/21(土) 21:36:19.05 ]
ウインドウクラスをクラス化したので、
そのクラスを別スレッドにして、プロシージャなどの処理をしたかったんです。

とりあえず、グローバル関数作って、その中でクラスのインスタンスを作って、
boost::threadでそのグローバル関数を呼び出す形にしてみました。
いちいち関数を作るのも面倒なので、無名関数でやってみようかな。
無名関数使ったことないけど。

920 名前:デフォルトの名無しさん mailto:sage [2012/04/22(日) 02:06:07.47 ]
JavaやFlashで使われている、イベント/リスナーをC++で実現したいのですが、
boostを使ってできますでしょうか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<198KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef