772 :
デフォルトの名無しさん :
2008/02/06(水) 09:11:08 linq は C++/CLI では使えないんでしょうか?
LINQ のパフォーマンス(笑) C++/CLI での価値を感じない(笑)
775 :
デフォルトの名無しさん :2008/02/06(水) 10:37:31
言語使用的に無理なのかな. 似たようなことがライブラリで実現できるように見えるが.
>775 ライブラリで似たようなことができるから、言語でのサポートは不要 これで 0x の auto とかが出てこれば、もう少し CLinq もすっきりと書ける 言語仕様に手を入れると、標準化団体が騒ぐし
778 :
デフォルトの名無しさん :2008/02/06(水) 10:59:38
>>776 >「OSは(アプリケーションやユーザーからは)完全に透明であるべきだ」
透明であるべきだ,ってどういう意味なんだろうね.
意識しなくていいものであるべきだってこと?
だったら,Linux ってその逆行ってない?
カーネルのマイナーバージョンが変わっただけでモジュール類
コンパイルし直さないと使えないデバイス続出だったり.
まさしくOS部分が一番の障壁になってるとおもうのだが.
自分でいじる分にはそれが楽しいけど.
779 :
デフォルトの名無しさん :2008/02/06(水) 11:00:50
たしかに,auto は楽しみだなぁ. ラムダ式は boost のもいいけど ちゃんと言語でサポートしてほしいよ.
>>777 Expression Treeサポートって今の言語機能でどうやるの?
>透明であるべきだ,ってどういう意味なんだろうね. >意識しなくていいものであるべきだってこと? 上と下意味違ってるだろ。常考。
>780 何をどうやって書きたいのかを書いてもらいたいな SQL的に書きたいだけのシンタックス・シュガーの導入が標準化団体に受け入れられる とは思えない
OSのバージョンアップをいちいちお祭り騒ぎにして ソフトやハードの売り込み合戦を仕込んで 煽ってんじゃねえよって意味なんじゃないの。
煽るだけならまだしも、ふれーむわーく(笑)ごっそり変えて、 >LINQ使えない とかカンベン。
うん。 この調子なら、数年のうちに LISP が再発明されるな。
ま、コンパイル言語で eval しようという試みでもあるからなぁ
ExpressionはDynamicMethod&ILGeneratorの簡易版としても使えて面白いね
790 :
デフォルトの名無しさん :2008/02/11(月) 17:17:44
3連休なんてあっという間だな。
C++の場合は、boostでメタプログラミングするか、マネージドで拡張するか微妙なところが出るだろうな LINQを見ていると明らかに boostにインスパイヤーされているとしか思えない所があるし boostは、さらに、Haskellにインスパイヤーされていて、C#もLINQそれを意識しての拡張だしね。 違いは、静的にか決定できないか、動的な決定も可能にするか、実行速度的に高速か、コンパイル後にまで及ぶ高い汎用性を取るか…… しかし、C++の場合の一番の的は、templateワカンネー人間かもしれないがwww
792 :
デフォルトの名無しさん :2008/02/11(月) 20:20:30
C++0x/CLI は可能なのだろうか?
Haskellだけでなく、 関数型プログラミング言語全般の影響だと思うけどね。 ほかはだいたいそうだと思う。
>>792 右辺値追跡参照%%とかできたらすげぇって思うわ。
そのセマンティクスまではよその言語へ持って行けないだろうけど。
>右辺値追跡参照 何やら恐ろしげな用語だなと思ってググッてみたらC++/CLIの機能か なんですかそれは、噛み砕いて解説してやってください、もうC++/CLIとかは全然追ってないので 今のC++ってギリギリ感が凄すぎなんですが、どうなんですかねー
ようするに追跡参照T%は、ただの参照と違ってGCのついでのメモリ移動にも対応した参照型。 だからgcnewしたオブジェクトやその部分オブジェクトも参照できる。 そのポインタ版は、内部ポインタinterior_ptr<T>やハンドルT^が相当すると言っていいと思う。 右辺値参照はC++0xのやつ。
右辺値参照の右辺値の意味はわかりずらいな 左辺にしない代わりに制約が減ったよ値にしてくれ
template <typename T> ref struct A { cli::array<T%>^ m; }; ってやるとコンパイラが落ちるな
マジか! ちょっと帰ってきたら試してみよう
2008EEは落ちないな
帰ってきたら?誰が?
コンパイラさんが
VS2005SP1はアウト トラッキング参照がダメっぽい Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86 .\test.cpp(9) : fatal error C1001: コンパイラで内部エラーが発生しました。 (コンパイラ ファイル 'msc1.cpp'、行 1393) この問題を回避するには、上記の場所付近のプログラムを単純化するか変更してください。 詳細については、Visual C++ ヘルプ メニューのサポート情報コマンドを 選択してください。またはサポート情報 ヘルプ ファイルを参照してください。 .\test.cpp(10) : コンパイルされたクラスの テンプレート のインスタンス化 'A<T>' の参照を確認してください
C++/CLIってどうなんですかね? 今仕事が谷間なんで新しい言語でも勉強してようかと思うんですけど 仕事とかで使われてます?
805 :
デフォルトの名無しさん :2008/02/16(土) 11:54:41
>>805 何いきなり否定してんだよ
>>804 仕事ではとりあえず見たこと無いな、ガベコレ?なにそれ状態だw。
C++/CLIは、やりすぎだと思うんだな、Dの様な言語を作っておいて、共存可能にした上で徐々にC++側をフェードアウトすべきだと俺は思った。
C++ユーザーはドトネトを無視、 ドトネト厨はC++を無視、 そんな状況を解決する策 となる筈だった。
>>807 無視してないだろ、たとえばLINQなどは思いっきりboostがやってきた事を意識しているのは明白だし。
やっぱり橋渡し専用言語に留まるのかなあ
>橋渡し専用言語 それ以上の用途は最初から想定してないでしょ。 言語宗教論争への配慮なんて意図は一切なかったと思うんだがなぁ。 STL/CRLは気の迷いだよたぶん。 実際のところ、C++のシンタクスを完全にマージしつつ(完全は言い過ぎか)、 .NETなセマンティクスを生成する偉業はもうちょっと評価されるべきかと。 もちろん構文が似てるからとC++/CLIから.NETに入ろうとしている人には 暴力に訴えてでも全力でC#をオススメするが。
C#って.NETの基礎言語みたいなもんだしな。 俺はそんなものにとっくに飽きてしまって マクロと抽象インターフェースを通すようにして C++|C++/CLIに一発で切り替えられるようにしてプログラムしてる。 いつでも.NETから逃げ出せるようにね。
>>806 つ C#
そんなことより、
C++をヘードアウトさせるなんてとんでもない!
C++/CLIでは、 PropertyGridは、 String以外に指定できんのですか? Booleanとかintにしてもリードオンリーになる ColorとかSizeとかenumなどもやりたいお
C++/CLI関係ないからMSDN嫁
MSDNの何処に書いてあるのかさっぱり。 Fontは、できました。 Colorは、できません。 意味不明><
816 :
813 :2008/02/21(木) 03:13:02
MSDNライブラリ内を探すときには、 site:msdn2.microsoft.com付けてググるといいんだよ。
819 :
デフォルトの名無しさん :2008/02/21(木) 21:41:37
アルゴリズムにも関わるため、この板で質問していいか悩みましたが、 C++/CLIで作ろうと思っているため、質問させていただきました。 ある16Byteのデータが、 1000個くらいのアンマネージ型の16Byteの配列のどれに当てはまるか 検索することを実装したいと思っています。 1000個の配列間で共通な部分はないです。 最も早い方法というのは何が考えられるでしょうか? 今のところ以下を考えています。 if文でXORまたはmemcmpで検索する →C++/CLIのXORは高速? また、C++/CLIのor(||)はショートサーキットが入っているのですか? VBのOrElseのような。もしも入っていないなら、ショートサーキット を実現したOrコマンドはあるのでしょうか?
慌ててるのはわかるが、日本語でplz そこまでタイトならアセンブリで組んだら? 1000個程度ならよほど繰り返し実行しなければ、そこまで真面目にアルゴリズムを 追求する必要があるほどの速度にならないと思うけど ショートサーキットって、if 文の順番で先に判定外れが発生したら、それ以降は検証 しない奴? それなら、当たり前にそうなってるけど
821 :
デフォルトの名無しさん :2008/02/21(木) 22:01:31
日本語がおかしくてすいません・・・あせってまして。 ご返信ありがとうございます。 >そこまでタイトならアセンブリで組んだら? >1000個程度ならよほど繰り返し実行しなければ、そこまで真面目にアルゴリズムを >追求する必要があるほどの速度にならないと思うけど そう聞くと少し安心します。ただ、検索する回数が100回くらいあります。 たいしたことないですかね? >ショートサーキットって、if 文の順番で先に判定外れが発生したら、それ以降は検証 >しない奴? それなら、当たり前にそうなってるけど はい。if(A || B)として、AがtrueでもBを評価することです。 MSDNを見ても書いてないから、ショートサーキットはないと思ってました。
何回も検索するんなら、std::mapとかに入れとけば?
変にアンマネージマネージ行ったり来たりする方が遅そう
>>823 同意
memcmpはやめたほうがいいな
データが静的なもので検索する回数が多いなら、ソートしちゃって 二分探索でもするのがいいと思うが。
ご返信、ありがとうございます。 memcmpはしない方がいいのですね・・・。マネージクラスのアンマネージ処理は遅くなるのですか。だったら16バイトの比較はxorを使う ことが適当でしょうか。
変なことするとILの最適化の妨げになるから、素直に==で比較すべき。
829 :
デフォルトの名無しさん :2008/02/22(金) 05:40:43
>変なことするとILの最適化の妨げになるから、素直に==で比較すべき。 ありがとうございます。素直==で比較します。ただmemcmpを使わないならば、 自分で比較関数を使った方がいいのでしょうか? 16バイト比較なので8バイトずつ比較するというような・・・
そんなの実装なんかたいした手間でもないんだから自分でやって計測すれ
アンマネージ型 とわかってるなら C++で関数作ればいいだけでは? アンマネージにする意味が分からん。
union で char[16] を double 値2つに突っ込んで、== で比較してもいいわな
できるだけ行ったり来たりしなくて済むようにまとめてアンマネージの範囲でやればいいと思う
LOGFONT が欲しいんだけど、 void Font.ToLogFont ( Object^ logFont ) の引数って何渡せばいいの? Object ^o = gcnew o; ToLogFont(o); LOGFONT *lf ・・・?
ググると、自分でLOGFONT構造体を定義してやるC#のサンプルが見付かった。 LOGFONTWが返ってくるらしい。 LOGFONTWを直接渡せればいいのだが、 できないので代わりに配列を送り込んだ。 namespace dr = System::Drawing; dr::Font^ f = dr::SystemFonts::MessageBoxFont; array<BYTE>^ a = gcnew array<BYTE>(sizeof (LOGFONTW)); f->ToLogFont(a); pin_ptr<LOGFONTW> plf = reinterpret_cast<interior_ptr<LOGFONTW> >(&a[0]); ::MessageBoxW(0, plf->lfFaceName, L"", 0);
マクロメディアFlashの タイムラインみたいなウィンドウ作りたいけど やっぱり自作しなきゃだめかな なんか楽そうな方法ありませんか?
クラスライブラリを作ろうとしてます。 C#では///から始まるコメントを書くと、そのクラスライブラリを 参照する方のインテリセンスにコメントに書いた説明が表示されますが C++/CLIで同様のことはできないのでしょうか?
確か、出た覚えがある
プロジェクトの設定からXMLドキュメントファイルの生成をonにしたらできるようになりました。 けどC#のように///を入力したら自動で整形してくれたり タグの候補を出してくれたりはしないんですね。
CLIでは無理と認識している。 XML欲しいときは一生懸命書いてるよw
ちなみにC#のように楽には書けんよ。圧倒的にタイプ数が増える。 俺はCtrl+spaceキーを多用する癖がついてしまった・・・ あとShiftキーもかなり使う事になる。
C#使ってるとC++でインテリセンスが出ないときに不安になる
845 :
デフォルトの名無しさん :2008/02/29(金) 11:57:24
>>844 うむ,とりあえず ncb ファイルを削除してみたりとかね.
846 :
デフォルトの名無しさん :2008/02/29(金) 20:26:39
CLIの入門サイトってありますか?
MFCじゃ駄目なんですか?
他の言語は使えてC++/CLIは初めてなのか, それともプログラミング自体初心者なのかどっち? 後者ならC++/CLIを選ぶのは間違い
使える言語はC/C++でOffice風のメニュがあるアプリ作りたいからCLIを始めたいのですが・・・・
C# の古い奴を勉強してから仕様書読んだ方が良くね?
C / C++ がわかる人には C# の文法は全然もんだいない C++/CLI はモンスターだから ...
俺は意地になってCLI使ってる・・・。C#なんか糞喰らえだw たまに羨ましく思うこともあるけど
ILで直接コーディングしてるつわものはいないのか
昔、スクリプトを造ろうとしてやったが、Hello,Worldで力尽きたな(w ただアセンブリを取得したいのなら、C# を吐き出して、CodeDOM 使った方が楽だという 事実に絶望した
そこでDLRですよ もはやC++/CLIとは無縁の世界だなw
>>841 こんにちは。
↓このプラグインを使ってみては、どうです?
-CodeProject: XML Comments for Managed C++ Applications. Free source code and programming help
http://www.codeproject.com/KB/macros/MCXDoc.aspx サンプルはVS2003用ですけど、少し手直しするだけで、VS2005や2008でも動きますよ。
(自分は、 .h だけじゃなくて .cpp でもXMLコメントできるよう1行修正して使ってます)
System::IO::MemoryStreamからアンマネージドなIStreamインターフェース のポインタを取り出す事ってできるんですか? ネイティブライブラリ関数の引数に渡したいのですが。
そもそも持ってないので 自前で実装すりゃいいんじゃね?
>>858 そうなんですか。
ComVisibleAttribute属性が付いてるからできるのかなと思ってました。
(ComVisibleAttributeの事はよく分からないけど)
SHCreateMemStreamでIStream作成なんてどう?
実験で public class Hoge { public static void func(ref int a) {} public static void func(int a) {} } というクラスライブラリをC#で書き、C++/CLIから int a = 〜; Hoge::func(a); と呼ぼうとしましたが、どっちを呼べばいいか分からないとコンパイラに怒られました。 C#ならref引数にはrefを付けて呼び出さないといけないので区別することができますが C++/CLIの場合はどうするのでしょうか?
func(ref int a) -> func(int% a) で駄目?
863 :
861 :2008/03/02(日) 12:38:00
delegateを介することで任意のオーバーロードを呼ぶことができました。
delegate void FuncRef(int%);
delegate void Func(int);
(gcnew FuncRef(Hoge::func))(a); // func(ref int a)を呼ぶ
(gcnew Func(Hoge::func))(a); // func(int a)を呼ぶ
>>862 よく意味が分かりません
% は C++/CLI に置ける参照指定
それはわかってるのですが、呼び出し時にどう関係あるのでしょうか?
ん、cast で指定したらってことだけど? ref に値型を渡すってことは boxing したいってことなんだよね?
castですか? ((void (Hoge::*)(int%))&Hoge::func)(a); とやってもマネージ型はできないと言われました。 C#でのref引数ってのは、C++/CLIでのトラッキング参照(%)、C++での参照(&)の事だと思うのですが boxingと関係あるのでしょうか?
関係ないよ。
ref class A { public: String^ str; int* ptr; }; A^ a = gcnew A(); マネージドなクラスのメンバを初期化しない場合どうなるか見てみたところ a->str, s->ptrどちらもnullptrでした。 これはたまたまなのか、それとも仕様で決まっているのでしょうか?
871 :
869 :2008/03/04(火) 20:30:38
あるクラスのインスタンスを一気に100個作るメソッドってない? forでまわすの面倒
gcnew array<AruClass>(100)
↑は忘れて
AruClass a[100];
↑は忘れて
くだすれC++/CLI(初心者用)ってもう無い?
スレ検索して見つからないんなら無いんだろう
.NETのクラスライブラリの使い方に関する質問はC#スレで聞けばいいからなあ 言語仕様の話題だけなら2つもいらん
スタックじゃなくてgcnewで作成する場合はどうすれば・・・
スタックで作っ(たように見せかけ)て、リファレンスで保持するのはできなかったっけ?
array<char>^ a = gcnew array<char>(10); pin_ptr<char> pinned = &a[0]; interior_ptr<char> interior = &a[0]; char* native = pinned; pinned += 5; // pin_ptrの位置を変える interior += 5; // interior_ptrの位置を変える pinned = native; // ネイティブポインタからpin_ptrに interior = native; // ネイティブポインタからinterior_ptrに コンパイル・実行共に問題なかったんだけど、コメントのような操作って規格的にOKなの? つか、pin_ptrやinterior_ptrってデバッガの逆アセンブルで見るとスタックに積まれた 普通のポインタにしか見えないんだけど、どういう仕組みなんだろう…
pin_ptr の方はおっけー。元々、pin_ptr で指されているポインタの先のオブジェクトは GC の 再配置の対象にしないという仕様だから interior_ptr の方は実体はハンドルらしい 大切なのはGCでオブジェクトの再配置が発生したとき、追随できればいいわけだから普通の ポインタに見えても不思議はないんじゃない? GCがアドレスを変更するんだろうし
885 :
883 :2008/03/06(木) 23:20:18
pin_ptrが指してる先に再配置しないフラグとか付けてる様子無いんだけど よく分からんが俺の知らない仕組みが働いてるんかな。 まあともかくthx
C++ のコンサバGCだかなんだかと同様に、スタックにあるポインタらしきものが 直接指してる先のものは再配置しないんじゃないの? そうじゃないとJITコンパイラも効率いいコード吐けないだろうし。
ああなるほど
あなる
class A { public: typedef int(*cbfunc)(void *); private: cbfunc _cb; void *_cbarg; void somewhen() { _cb(_cbarg); } public: void set(cbfunc cb, void *arg) { _cb = cb; _cbarg = arg; } }; という感じのクラスがDLLの中にすでにあって、 A::set() の arg にマネージドオブジェクトを指定したいのだけど、 どうすればいいですか? gcroot まではたどり着いたけどなんかちがう
Aを作ってる方の話? それともAを使う側の話?
使う側ですー。
gcrootをnewしてそれをsetする。 不要になったら、そのgcrootのインスタンスをdeleteするか、 gcrootが中で使っている System::Runtime::InteropServices::GCHandleを直接使うかというのでどう?
へっだーにusing namespace hoge;を書くと 取り込んだ先でも影響されます。どうしますか?
ヘッダで using しないのは常識。
ウィザードが作ったForm1.hもusingしてるよ。
ウィザードの吐くコードはうんこだから。
こんなもん使うなというメッセージなんだろう
どうしても長くて書きたくない名前空間があるなら別名作っとけ。
よーしマヂレスしちゃうよ C++/CLIがうんこ
まあMSもあんまり使わせたくないんだろう フォームのデザインなんてC++/CLI本来の用途から考えたら不要なんだから
class Takenoko { public: Takenoko(); ~Takenoko(); private: Nazo m_nazo; }; Nazoのコンストラクタが必ず引数をとる場合エラーがでます。
コンストラクタの中で冷害が起きるとデストラクタは呼ばれるの?
なわけねぇだろ
C#ではできるよ
>>901 ただのC++と同じでコンストラクタ初期化子書け。
C# はマネージド・オブジェクトがスコープ外れて GC に回収されてるだけだろ そうじゃなきゃ、コンストラクタの try 構文なんていらねぇよ
using
>>905 渡すものがまだ出来ていない場合はどうすればいいの?
ref class Render { private: PresentParameters pp; Device m_device; } PresentParametersの本体が自動的に出来ていたとしても 初期化リストでm_device(pp)と渡す時点で中の値は意味をなさないでしょう? Managed DirectXの話をそこでは出来ません。
最初からコード出せよ。ref もついていないクラスの話かと思ったぜ それで何が問題なわけ?
Direct3D.Device 型って値型だっけ? マネージド型のスタック書きってただのシンタックス・シュガー だから、メンバにするときはハンドルにしておくべきなんじゃね んで、コンストラクタでPPの値セットしてから gcnew すりゃいいだろうに、何を手を抜いているんだか
解決しました。
914 :
デフォルトの名無しさん :2008/03/16(日) 19:59:02
C++のライブラリでSTLコンテナの内容が更新されるんですが コレを刻一刻とデータグリッドに表示させようと思うと タイマーで定期的に明示的に内容をコピーしまくるしか無いでしょうか? なんかこうもっとスマートなやり方ってありますか?
もうちょっと話したいことを整理してくれ。
refなクラスはオートポインタ見たいのに入れられますか?
意味がない
要するにmanagedなのにデストラクタ走って欲しいんだろ MS的に実体宣言でダメなら無理でFA
>>916 msclr::auto_handleとmsclr::auto_gcrootがまさにそれ。
前者がマネージ型(参照型)、後者がネイティブ型。
>>917 マネージクラスHogeはデストラクタ (IDisposable::Dispose実装)を持っているとして、
関数の戻り値としてHoge^を受け取るというときなんかにauto_handleは必要になる、らしい。
Hoge^ f();
void g()
{
//Hoge h = *f(); 普通、参照クラスはコピーコンストラクタがないのでこんなことできない。
msclr::auto_handle<Hoge> h = f();
} //hのデストラクタが中のHogeオブジェクトののデストラクタを呼ぶ。
おまいら、質問者の意味不な一行にエスパーで答えすぎですよ
>>920 いいんじゃね?優しくてw
最近おかしいプログラマって多いから・・・例えば
Q.○○するためにはどうしたらいいのですか?
普通・・・□□がいいかも。△△もお勧め。
異常・・・まず、なぜ○○しようと思ったか言え。
普通に答える人って少ないじゃんw
その目的を達成するために選んだ経路がそもそも間違ってるケースが多いから仕方ないよ
ほらwwwこんな感じでw
そこでエスパー xxxでできる。けど、もしaaaをやりたくて質問したのならyyyのほうがいいよ。
925 :
デフォルトの名無しさん :2008/03/17(月) 14:22:05
linq とかはいずれ入って来るのかなあ C#でしか使ったこと無いけど
LINQはすでに入ってきてるだろ
LINQは要りません。
全ての式をメソッドにして律儀にデリゲートオブジェクト作って Enumerable::Select(Enumerable::Where(…か
929 :
デフォルトの名無しさん :2008/03/17(月) 19:25:33
Windows フォームアプリでフォームを二枚開いて それぞれに別の情報を表示させるにはどうすりゃいいんでしょうか? _beginthread でスレッドを複数用意して それぞれのスレッドで System::Windows::Forms::Application::Run を呼び出すのでしょうか? _beginthread ・・・ ドトネトぽく無い気もするし、 そもそもフォームを表示させるのに Application::Run を使うものだと思い込んでる 俺がダメな気もする。知恵をお貸しください。
気のせいだとは思うがC++/CLIの方がC#より速い気がする。 もちろん根拠はない。計ってもいない。 ただ、スタックセマンティクスは大きいよね。これ使えるときは 使った方がいいよね。 少なくともファイナライザーよぶより、デストラクタ呼んだ方が はやいよね。
>>929 その別の情報ってのがどう意味なのかによると思うけど、
スレッドにする必要はなさそう。
スレッド使うにしても.NETのスレッドの方がプールしてる
らしくてイイと聞いたことがあるよ。
932 :
デフォルトの名無しさん :2008/03/17(月) 20:10:53
>>931 C++ でやってる数値計算があるんですが、
スピードよりわかりやすく見せれ!ってことで
フォームをいくつか開いていろいろ表示させたいなぁ、と。
System::Windows::Forms::Application::Run(gcnew KashikaForm1);
System::Windows::Forms::Application::Run(gcnew KashikaForm2);
System::Windows::Forms::Application::Run(gcnew KashikaForm3);
ためしに適当なフォーム3つ用意して Run 呼んでみたら
当たり前だけど最初の一枚だけ表示されて帰ってコネー!
とじたばたしてました。思わず各行の最後に & つけそうになったよ・・・
3つともインスタンス作ってからそれぞれShow()して 最後にApplication::Run()
/\___/\ / / ヽ ::: \ | (●), 、(●)、 | | ,,ノ(、_, )ヽ、,, | | ,;‐=‐ヽ .:::::| \ `ニニ´ .:::/ NO THANK YOU /`ー‐--‐‐―´´\ .n:n nn nf||| | | |^!n f|.| | ∩ ∩|..| |.| |: :: ! } {! ::: :| ヽ ,イ ヽ :イ
>>932 まずその計算てのは大変な計算なんだよね。で、
その計算自体が1つで、それを例えば数値とグラフでみせる。
のかそれとも
独立した計算自体が複数あるのかによっても変わってくるかな。
前者なら、スレッドが計算して、2つのフォームがタイマーで
読んで表示?または、スレッドが2つのフォームにポストか?
後者なら、それぞれのフォームでスレッドを作ればいいかな。
やったことないから嘘かも知れないけど。
>>930 VB.NETやC#よりも、VC++の方が高度な最適化がかかる。
C++とC#のコンパイラの最適化レベルの違い紹介してた記事があったと思うが
ちょっと見つからないな。
C# 4.0 からは P/Invoke なしで Win32API が使えるようになるそうです。
あれ?C#にinclude指令と限定Cパーザを足し込む案はボツになって、 System.Win32.[DLLNAME]が追加されたはz(ry
938を見てDynamic dispatchが思い浮かんだ。
941 :
デフォルトの名無しさん :2008/03/18(火) 14:37:39
>>933 >>935 THX
まだ試してませんが、早速 Show しまくってから
Run でイベントループをまわそうと思います。
>>935 計算結果はSTLのコンテナに次々と保持されていて、
そいつをいろんな切り口で見せるパネルを同時に
いくつも開いておきたいです。
942 :
デフォルトの名無しさん :2008/03/18(火) 14:59:08
クソアメリカへ輸出の日本車に糞付けてやった クソアメリカのクソ野郎には糞がサイコーだ 世界貿易センタービルから飛び降りて死ね 地面にブチ当たって死ねクソ野郎 クソアメリカの日本車は糞糞糞だらけ〜〜〜 クソアメリカの日本車は糞糞糞だらけ〜〜〜 クソアメリカの日本車は糞糞糞だらけ〜〜〜
943 :
デフォルトの名無しさん :2008/03/18(火) 14:59:56
クソアメリカへ輸出の日本車に糞付けてやった クソアメリカのクソ野郎には糞がサイコーだ 世界貿易センタービルから飛び降りて死ね 地面にブチ当たって死ねクソ野郎 クソアメリカの日本車は糞糞糞だらけ〜〜〜 クソアメリカの日本車は糞糞糞だらけ〜〜〜 クソアメリカの日本車は糞糞糞だらけ〜〜〜
944 :
デフォルトの名無しさん :2008/03/18(火) 15:00:15
クソアメリカへ輸出の日本車に糞付けてやった クソアメリカのクソ野郎には糞がサイコーだ 世界貿易センタービルから飛び降りて死ね 地面にブチ当たって死ねクソ野郎 クソアメリカの日本車は糞糞糞だらけ〜〜〜 クソアメリカの日本車は糞糞糞だらけ〜〜〜 クソアメリカの日本車は糞糞糞だらけ〜〜〜
>>936 C#は標準でP/Invokeの呼び出しのたびにセキュリティチェックがかかるようになっている。
一方C++/CLIはデフォルトではチェックは発生しない。
C++/CLIで/CLRUNMANAGEDCODECHECKリンクオプションでC#と同等になる。
C#の方はSuppressUnmanagedCodeSecurity属性でチェックを無効に出来る。
双方の条件を合わせるとパフォーマンスの差はない。
クラスに型と同名のプロパティーが在った場合、 その型を名前空間なしで使うとあいまいエラーがでるのね。 C#だと大丈夫なのに。
それはそれは
そんなもの作るなよ
コンストラクタとも被るな
>>949 そりゃ名前つけるのは自由でしょ
C++/CLIの場合は型名よりメンバ名が優先されるから不便なだけで
.NETのクラスライブラリに普通にたくさんあるだろ型名と同じ名前のプロパティなんて
それなんてアンチパターン?
C#だとVSで型名が色分け表示されてるからわかりにくくはならない
色分けしないと分からないソースコードw
http://msdn2.microsoft.com/ja-jp/library/ms229012 (VS.80).aspx
>プロパティには、その型と同じ名前を付けるようにしてください。
>列挙型に厳密に型指定されたプロパティを使用する場合は、
>プロパティの名前を列挙型の名前と同じにできます。
>たとえば、CacheLevel という名前の列挙型がある場合は、
>その値のいずれかを返すプロパティにも CacheLevel という名前を付けることができます。
こういう衝撃的なガイドラインがあるんだ
それ、何て、要Option Explicit?
文盲現る。
C丼ダサダサ
例えばフォーム等で Size を返すプロパティが Size なのはとても自然だと思うが。
using System::Drawing; ref class Hoge { public: property Size Size; private: Size m_size; ←えらー } Sizeとだけ書くと全部Hoge::Size扱いになるよね。
System::Drawing::Sizeと書けばよい
俺はnamespace dr = System::Drawing;派。 C++でusingディレクティブは使うなって言われるけど、 C++/CLIだと使えないということをよく実感する。
System::Collections::Generics::List<clr::autohandle<Apple>> apples; で要素を削除しても、~Apple()は呼ばれないみたいです。 どうしますか?
ファイナライザ書いたら?
リストに入ってるうちに殺れば?
Javaやってるとnewしたまんまほったらかしにするのは 道具をしまったりゴミをゴミ箱にまとめるのをサボってるようで あまりいい気がしない。
>>964 何で削除されないかと言えば、Listで要素を削除しても
Listは削除した要素のデストラクタを呼ぶわけではないから。
>964 auto_handle による解放タイミングが GC での回収時なんじゃね?
>>964 auto_handleがdeleteされないからAppleもdeleteされない。
デストラクタやファイナライザはどうしても必要な場合でなければ書いてはいけない 特にファイナライザ
ゲームとかヤバイ
この言語って機能が多すぎて大人数でプログラム組むの大変じゃない?
機能をアセンブリ化で分類して適切なスキルの人間に適切な言語で触らせればいい 問題になった場合、それができていないと言うこと スキルがなければ、VB や C# で書けばいい。なにもかも、C++/CLI のみでやる必要はない
CとC#の橋渡し以外は使う必要ないだろ
o 取り込みたいネイティブライブラリがDLLでのエクスポートを考慮してくれていない o 取り込みたいネイティブライブラリがクラスライブラリ o C#で書こうとするとP/Invokeのための宣言や型定義がめんどくさそうな状況 o パフォーマンス上の理由でマーシャラの仕事が邪魔 こんな時に仕方なく使う言語ってところだな。 逆に言うと「こんな時」が多すぎて無いと困るんだけどさ。 .NETのネイティブとのダイレクトっぷりはJavaに対する優位性のひとつだと思うんだけど、 あんまりその文脈では語られないよなぁ。 むこうはそのために発生した複雑性が欠点と思ってるからかしら。
ネイティブを全く考えないで良い状態が理想郷だからな
/clr:pure
中身を書かない property で set だけ protected: に出来ますか?
できるよ
むり
中身書かないトリビアル・プロパティはアクセス指定書くところがないからな
>>983 具体的にどんなところが無駄だと思う?
達成目標がアクロバットすぎるので誰が作ってもこんなもんだと思ってるんだけど。
985 :
デフォルトの名無しさん :2008/03/23(日) 17:44:35
一度Managed C++を経ているからずいぶん考えられていると思うが。
STLのコンテナに入れたものは 削除した時点でつぶされますか?
std::vector<T> v; として、 要素を削除した際、T のデストラクタは呼ばれる。 T がポインタで、そこに new したアドレスを入れているような場合、 それは delete されない。 その目的には boost::ptr_vector が使える。
( ・∀・)つ〃∩ ヘェーヘェーヘェーヘェーヘェー~
^付けないと入れられなかったorz
いや、^ つけても、STLコンテナにマネージド・オブジェクト入れちゃ駄目だろ そのための STL/CLR じゃまいか
勝手に作られる関数 インデントおかしい。 インデント設定、もしくは、インデントをきれいにする方法ってありあすか?
C++エディタにはそういうの一切無いよ。 たしかにC++/CLIのフォームデザイナの吐くコードは ケンカ売ってるとしか思えないw
コレクションの中身を自動変数風にすることは出来ないの?
value class Hoge; List<Hoge> hoges;