- C++相談室 part115 [転載禁止]©2ch.net
593 :デフォルトの名無しさん[sage]:2015/01/22(木) 09:37:03.15 ID:QfKlzsaM - ヌル終端文字列と、非ヌル終端文字列をコンパイル時に区別するには、
どのように型定義をすれば良いでしょうか? クラスであれば boost::basic_string_ref から null_terminated_ref を派生して 型の差を表現できたのですが、配列を指すポインタでも強い型付けをしたいのです。
|
- C++相談室 part115 [転載禁止]©2ch.net
595 :デフォルトの名無しさん[sage]:2015/01/22(木) 10:10:37.91 ID:QfKlzsaM - >>594
長さ (int か size_t) とセットで扱うケースです。 const NonTerminatedCharSeq seq; size_t len; getStringBuffer(&seq, &len); requireNonTermAndLen(seq, len); // ← OK requireTerminatedString(seq); // ← NG: これをエラーにしたい
|
- C++相談室 part115 [転載禁止]©2ch.net
597 :デフォルトの名無しさん[sage]:2015/01/22(木) 11:39:27.71 ID:QfKlzsaM - >>595 の NonTerminatedCharSeq は 非const でした。 const CharType* のつもりでした。
>>596 末尾が分からないので、throw 前に、ヌル終端を確認する段階で segfault で落ちると思います。
|
- C++相談室 part115 [転載禁止]©2ch.net
601 :デフォルトの名無しさん[sage]:2015/01/22(木) 12:34:43.11 ID:QfKlzsaM - >>600
そうですね。 スマートポインタ的な型を噛ませることにします。 >>598 コンパイル時に区別する話に throw が出てくるのはナンセンスです。
|
- 【Lua】組み込み系言語総合 その6【Squirrel】
625 :デフォルトの名無しさん[sage]:2015/01/22(木) 19:34:31.74 ID:QfKlzsaM - JsRTで遊んでみているが、
IDispatchをVARIANT経由でJavaScript側に公開できることがわかった。 COMの資産を手間無く使えるので、その手の再利用が必要な場合は便利かもしれない。 なお、WebBrowserコントロールが使っていると思われるスクリプト環境はさすがに取得できないようだ。 無理やり連携されるなら window.external を介してこれも IDispatch 経由でやり取りすることになる。 悪くない。 Microsoft も .NET とか捨てて、JsRTとTypeSciptで行けばいいんじゃないかな・・・?
|