C++11/C++1y 18at TECH
C++11/C++1y 18 - 暇つぶし2ch222:デフォルトの名無しさん
13/04/16 00:18:44.22
>>191
しかしその優秀な人たちは管理業務にまわされます。

223:デフォルトの名無しさん
13/04/16 01:25:53.28
日本のキャリアパスにシニアプログラマってあまりないからな

224:デフォルトの名無しさん
13/04/16 02:52:46.46
未経験の若いプログラマ雇って炎上みたいなのばかり

225:デフォルトの名無しさん
13/04/16 03:24:29.66
>>202
クックック... 我はinheritanceの使い手にして最凶のinterface、
我が道を阻むことなどたとえabstract classでもできはせぬわ
このスレの住人供よ、Light-weight processなど捨てて我が軍門に下るがよいわ

俺もよくわからんけど、多分このへんの単語考えた外人は中二病なんだろうと思うよ。
「俺の考えた呼び方の方がかっけーし」見たいな感じで
クラウドとかも内輪ではめっちゃ受けてるのかもしれん

226:デフォルトの名無しさん
13/04/16 23:52:19.27
>>224
出来るヤツだけ集めても
なぜかうまくいかないのが
プロジェクトと言うもの・・・

227:デフォルトの名無しさん
13/04/17 00:35:42.00
まとめるとプロジェクトは失敗するもの

228:デフォルトの名無しさん
13/04/17 00:59:50.26
JISのC++11って何巻目になるん?
1冊1万前後だから結構な出費だな

229:デフォルトの名無しさん
13/04/17 07:30:48.76
>>227
まとめすぎwww

230:デフォルトの名無しさん
13/04/17 08:35:27.55
COM(Direct3D11)を使ってプログラミングしてて、
インターフェースの解放(Release)を忘れないように、
shared_ptrを使おうとしてるんだけど、壁にぶつかった。

ある関数はインターフェースのポインタを引数に取る。
この場合は以下で大丈夫。

shared_ptr<ID3D11xxx> pD3D11xxx;

・・・

Func( pD3D11xxx.get() );

しかし、関数の中にはインターフェースのダブルポインタ(ID3D11xxx* const* pp)を引数に取るものがあって、
以下のように書いても「'&'に左辺値がない」と言ってコンパイラに怒られる。

Func( &pD3D11xxx.get() );

どうしたものかと、検索をかけると、
shared_ptrではなくて自作っぽいスマートポインタを作って、
pD3D11xxx.GetAddressOf()みたいなメソッドを利用して引数に与えていた。

std::shared_ptrでは上記みたいな関数に渡せないの??

231:230
13/04/17 08:39:56.70
ID3D11xxx* p = pD3D11xxx.get();
Func( &p );

ってしたらコンパイルは通ったけど、
もっとエレガントにできないかなぁ。

232:デフォルトの名無しさん
13/04/17 08:41:29.81
CComPtrを使えばよろし

233:230
13/04/17 08:59:24.88
>>232
CComPtrなら大丈夫なんですね。
しかし、できればATLに依存したくないんです。

234:デフォルトの名無しさん
13/04/17 09:04:19.90
ポインタのポインタを受け取るってことはポインタ自体の変更が行われるわけで
ID3D11xxx* p;
Func(&p);
pD3D11xxx.reset(p);
こんな風にするしかないだろう

235:230
13/04/17 09:20:06.70
>>234
ありがとう!
ああ、そうか。
面倒くさい。死にそう・・・。

調べてみると、どうもATLとは違うMicrosoft::WRL::ComPtrというのがあるみたい。
URLリンク(msdn.microsoft.com)

なぜATLがイヤかというと、
まず開発がVC++のExpress(無料)バージョンが使えないこと。
自分はPro持ってるけど、他人にプロジェクトを渡すことがあって、
できれば相手にProを強要したくない。

あと、コンパイルした.exeを配布する際、
ATLを使用していると、ランタイムのインストールをユーザーに強要することになる。

WRLだとどうなんだろうか?
開発的にはExpress(for Windows8だけど)で使えることが調べて分かった。
あとは.exeを配布するときにユーザーがWRLのための追加インストールが必要か。
こういうのってどうやって調べたらいいの?
DependencyWalkerとかでチェックしかないかな。

236:デフォルトの名無しさん
13/04/17 09:27:56.32
>>235
ATLは古いのならWDK7.1辺りに入ってたりする
CComPtrはテンプレートなんだからランタイムも糞もないぞ

237:デフォルトの名無しさん
13/04/17 09:32:01.68
WTL?

238:230
13/04/17 09:59:29.69
早速WRLのComPtr使ってみた。
余計なコードが激減した。
感動した。
さっきまで悩んでたのがあほみたいだ。
もう他人のことなど知るか(おい)

>>236
ありがとう!
安心した。

239:230
13/04/17 10:07:14.80
少し気になったのは、
同じダブルポインタ引数でも、
Create系では&pって渡せるのに、
他の関数ではp.GetAddressOf()で渡さないといけないこと。
後者を&pで渡したらぶっ壊れた。

まぁ、Create系もGetAddressOf()でいけるから、
これで統一しておくほうが無難かな。

240:デフォルトの名無しさん
13/04/17 10:10:33.16
またひとりC++/CXの魔境に旅立ってしまったか

241:デフォルトの名無しさん
13/04/17 10:14:10.97
URLリンク(msdn.microsoft.com)
日本語おかしいがちゃんと違いが書いてあるじゃない

242:230
13/04/17 10:22:51.60
>>241
あ、すんません・・・。
ああ、そういうことか。
参照カウントのこと意識せんといかんのね。

しかし、Create系以外でダブルポインタを引数に取るとか、
ややこしいからやめてくんないかなぁ・・・。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch