- 1 名前:デフォルトの名無しさん mailto:sage [2013/04/04(木) 20:05:20.33 ]
- The C++ Standards Committee
www.open-std.org/jtc1/sc22/wg21/ Wikipedia ja.wikipedia.org/wiki/C%2B%2B11 C++11/C++1y 16 toro.2ch.net/test/read.cgi/tech/1349356417/
- 232 名前:デフォルトの名無しさん mailto:sage [2013/04/17(水) 08:41:29.81 ]
- CComPtrを使えばよろし
- 233 名前:230 mailto:sage [2013/04/17(水) 08:59:24.88 ]
- >>232
CComPtrなら大丈夫なんですね。 しかし、できればATLに依存したくないんです。
- 234 名前:デフォルトの名無しさん mailto:sage [2013/04/17(水) 09:04:19.90 ]
- ポインタのポインタを受け取るってことはポインタ自体の変更が行われるわけで
ID3D11xxx* p; Func(&p); pD3D11xxx.reset(p); こんな風にするしかないだろう
- 235 名前:230 mailto:sage [2013/04/17(水) 09:20:06.70 ]
- >>234
ありがとう! ああ、そうか。 面倒くさい。死にそう・・・。 調べてみると、どうもATLとは違うMicrosoft::WRL::ComPtrというのがあるみたい。 msdn.microsoft.com/ja-jp/library/vstudio/br230382.aspx なぜATLがイヤかというと、 まず開発がVC++のExpress(無料)バージョンが使えないこと。 自分はPro持ってるけど、他人にプロジェクトを渡すことがあって、 できれば相手にProを強要したくない。 あと、コンパイルした.exeを配布する際、 ATLを使用していると、ランタイムのインストールをユーザーに強要することになる。 WRLだとどうなんだろうか? 開発的にはExpress(for Windows8だけど)で使えることが調べて分かった。 あとは.exeを配布するときにユーザーがWRLのための追加インストールが必要か。 こういうのってどうやって調べたらいいの? DependencyWalkerとかでチェックしかないかな。
- 236 名前:デフォルトの名無しさん mailto:sage [2013/04/17(水) 09:27:56.32 ]
- >>235
ATLは古いのならWDK7.1辺りに入ってたりする CComPtrはテンプレートなんだからランタイムも糞もないぞ
- 237 名前:デフォルトの名無しさん mailto:sage [2013/04/17(水) 09:32:01.68 ]
- WTL?
- 238 名前:230 mailto:sage [2013/04/17(水) 09:59:29.69 ]
- 早速WRLのComPtr使ってみた。
余計なコードが激減した。 感動した。 さっきまで悩んでたのがあほみたいだ。 もう他人のことなど知るか(おい) >>236 ありがとう! 安心した。
- 239 名前:230 mailto:sage [2013/04/17(水) 10:07:14.80 ]
- 少し気になったのは、
同じダブルポインタ引数でも、 Create系では&pって渡せるのに、 他の関数ではp.GetAddressOf()で渡さないといけないこと。 後者を&pで渡したらぶっ壊れた。 まぁ、Create系もGetAddressOf()でいけるから、 これで統一しておくほうが無難かな。
- 240 名前:デフォルトの名無しさん mailto:sage [2013/04/17(水) 10:10:33.16 ]
- またひとりC++/CXの魔境に旅立ってしまったか
- 241 名前:デフォルトの名無しさん mailto:sage [2013/04/17(水) 10:14:10.97 ]
- ttp://msdn.microsoft.com/ja-jp/library/vstudio/br230430.aspx
日本語おかしいがちゃんと違いが書いてあるじゃない
- 242 名前:230 mailto:sage [2013/04/17(水) 10:22:51.60 ]
- >>241
あ、すんません・・・。 ああ、そういうことか。 参照カウントのこと意識せんといかんのね。 しかし、Create系以外でダブルポインタを引数に取るとか、 ややこしいからやめてくんないかなぁ・・・。
|

|