09/01/24 14:13:31
C++/CLIでWPF
862:デフォルトの名無しさん
09/01/24 14:18:21
C++&wxWidgets
863:デフォルトの名無しさん
09/01/24 14:27:41
Qt !
864:デフォルトの名無しさん
09/01/24 14:57:59
そういうことを決めるのは上級者ではないことが多いと思う。
ともかく案件による。配布の問題もあるし。
865:デフォルトの名無しさん
09/01/24 15:07:41
オラ、おまいらここ行ってマイナーな奴を楽しんで来い。
スレリンク(tech板)
866:デフォルトの名無しさん
09/01/24 15:46:39
誰も反応してくれないけど、boost::any用のMC++D風マルチメソッドを実装してみました。
(実装)URLリンク(cvs.sourceforge.jp)
(使い方)URLリンク(cvs.sourceforge.jp)
一応、boost::any以外でも使えるように汎用化しています。
#下半分がboost::anyをこのマルチメソッド用に最適化したクラスね。
まだ使い込んでないから何とも言えないけど、なんかヤバそうなところある?
867:デフォルトの名無しさん
09/01/24 15:48:46
>>866
さみしいからて出張してくんなよ、素にもどれ
868:デフォルトの名無しさん
09/01/24 16:02:24
スレ違いじゃないからいいじゃない。あっちは誰も相手にしてくれんのよ。
けっこう適当に作ってるので、変な落とし穴にはまってないかけっこう不安なんだよね。
869:デフォルトの名無しさん
09/01/24 16:30:56
なんで反応が無いんだろうねぇ。
こういうの好きそうな人っていそうだけどね。
みんな今忙しいのかな。
ちなみに俺はそういうのは Excel とかで管理するから興味ない。
バリデータ書くにも楽だし。
870:デフォルトの名無しさん
09/01/24 16:51:54
Excel(笑)
871:デフォルトの名無しさん
09/01/24 17:10:21
>>868
それはなんなの?
872:デフォルトの名無しさん
09/01/24 17:32:32
マルチメソッドという便利ツール。実行時にオブジェクトの種類に応じて実行するメソッドを変更してくれる。
あらかじめ関数オブジェクトを作って登録しておく必要があるのが面倒だけど。
struct TestAnyMethod0 {
// transfer member function
string operator()(any& arg1) { return MultiMethod::apply<string>(*this, arg1); };
// multi method
string operator()(int value) const { return string("int"); };
string operator()(double value) const { return string("double"); };
};
bool m00(MultiMethod::entry<std::string, TestAnyMethod0, boost::any, int>());
bool m01(MultiMethod::entry<std::string, TestAnyMethod0, boost::any, double>());
int main() {
TestAnyMethod0 m0;
any m(m0);
any a(0);
BOOST_CHECK_EQUAL(boost::any_cast<std::string>(MultiMethod::apply(m, a)), "int");
a = 0.0;
BOOST_CHECK_EQUAL(boost::any_cast<std::string>(MultiMethod::apply(m, a)), "double");
}
873:デフォルトの名無しさん
09/01/24 17:35:03
ただのポリモーフィズムとどう違うの?
874:デフォルトの名無しさん
09/01/24 17:35:14
あっとこれを忘れてた。
int main() {
TestAnyMethod0 m0;
any m(m0);
any a(0);
BOOST_CHECK_EQUAL(m(a), "int");
BOOST_CHECK_EQUAL(boost::any_cast<std::string>(MultiMethod::apply(m, a)), "int");
a = 0.0;
BOOST_CHECK_EQUAL(m(a), "double");
BOOST_CHECK_EQUAL(boost::any_cast<std::string>(MultiMethod::apply(m, a)), "double");
}
875:デフォルトの名無しさん
09/01/24 17:36:10
バグってた…… ×m(a) -> ○m0(a)
876:デフォルトの名無しさん
09/01/24 17:39:23
>873
普通の多態だと引数の実行時多態ができないけど、これだとできる。
さらに関数オブジェクト自体の多態もできるように作ってみた。
877:866
09/01/24 17:46:30
boost::anyって、データを処理しようとするとデータの中身が何かを知らないといけないから、
けっこう不便なんだよね。
boost::variantだと(visitorを活用して)中身を知らなくても処理を行えるようにしているので、
これをboost::anyに応用できないか、と思って拵えたのが>866
878:866
09/01/24 17:48:51
>872はバクってるな……面倒なのでサンプルはこっち見て。
(使い方)URLリンク(cvs.sourceforge.jp)
879:デフォルトの名無しさん
09/01/31 16:14:29
>>878
みんなの現場はそういうの使わしてくれるん?
うちはboostも無理っぽいのだけど
880:デフォルトの名無しさん
09/02/05 19:44:31
マ板でやれ
881:デフォルトの名無しさん
09/02/05 23:04:39
最終的にboostを目指すんだ