- 1 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:37:43 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。
- 804 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 23:05:02 ]
- >>802-803
「有るか無いかでいったら、どの言語にだってあるぞ」 というのは確かにその通りだけど、この場合はC++の「度合いのひどさ」を問題にしているわけで、 ゼロじゃないからどの言語もみんな仲間! ってのは、話の持って行き方としてちょっと違うと思う。
- 805 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 23:15:56 ]
- >>804
でもJavaぐらいだと>>799の問題は似たようなものな気がするけど だんだん複雑になってきてるし ある程度表現力が高い言語になると普遍的な問題じゃないかな C++だとまともに書けない人でもJavaなら書けるのだろうか そんな人がPythonならまともに書けるのか?
- 806 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 23:39:39 ]
- 規模の問題はちょっと違うだろうね。
名前マングリングに関しては確かにC++のは委員会とかの人も 普通に「どうにかしたい」って思ってそうだけど、 実質、ABIがさえ合えば問題無し、って程簡単じゃないから 再コンパイルした方が良い。 UNIX、Linux系ではオプションの変更程度で再makeすることも多いし。 それに完全にバイナリで使うなら.soとか.dllで考え方が良い。
- 807 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 23:46:07 ]
- 例外とか this ポインタの実装手段の違いとかも問題になるんじゃね。
- 808 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 00:27:21 ]
- >>797 で言っている問題で、何でも使うか使わないかは、
compile し直そうが残る問題が多いけど。特に保守性考えると。 件の ABI の問題は compile し直せばいい問題じゃないの? (だから問題になりえないと言っているわけではないが) ちょっと違うことを問題にしていて議論が混ざってる気がする。
- 809 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:20:35 ]
- 質問があります
代入演算子をprotectedないしprivateにしたいんですが、 実装はデフォルトで生成されるものそのままでいいんです class Hoge { // さまざまなメンバ変数(代入演算子があったりなかったりする) Hage hage; Fuga fuga; int hensuu; protected: Hoge& operator=(const Hoge&); }; ってやったらリンクエラーになるんですがどうすればいいでしょう イチイチ中身書くのも面倒で・・・
- 810 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:07:43 ]
- イチイチ中身書くしかない
- 811 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:25:47 ]
- C++0x では default キーワードでデフォルト実装を作ってくれるそうです。
- 812 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:26:25 ]
- handle-bodyイディオムで書いて、handleの代入演算子をprotectedなりにすればどう?
- 813 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:09:30 ]
- バイナリとしての0x00をchar配列に格納したいんですが、終端文字として認識されてしまいます。
こういう時ってどうすればいいのでしょうか?? ご教示いただけると幸いです。
- 814 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:16:56 ]
- もしかしてstrcpyとか使ってるのか?
- 815 名前:デフォルトの名無しさん [2008/05/17(土) 01:21:39 ]
- レスどもです。
いえ、const char [] 型に0x00を含む文字列を格納して、cout とかで出力しようとすると0x00以降が出力されないんです。
- 816 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:22:37 ]
- 考えるだけでも恐ろしい
- 817 名前:デフォルトの名無しさん [2008/05/17(土) 01:22:59 ]
- それは当たり前 仕様 0は文末というのが原則です。
- 818 名前:デフォルトの名無しさん [2008/05/17(土) 01:24:21 ]
- 出力させたいんだったら、string使えば出来るはず。 こっちはサイズまではちゃんと出力したと思う。
たとえばstr.resize(10000,'\0'); cout<<str;とする。
- 819 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:24:53 ]
- とすると、バイナリとしての0x00を途中に含むchar文字列を作りたいんですが、無理なんでしょうか??
- 820 名前:デフォルトの名無しさん [2008/05/17(土) 01:25:58 ]
- 0を含むchar配列はできるよ でもstrlenとかは間違える 自分で長さを管理すればよい。
- 821 名前:デフォルトの名無しさん [2008/05/17(土) 01:27:56 ]
- たとええばchar配列で0を含まないならstrcpy、strcmpなどを使い、
0を含むなら長さを自分で指定するmemcpyやmemcmpを使う。
- 822 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:28:55 ]
- いや作れるよ
char配列の内容がNTCSであることを仮定している関数・APIに NTCSでないchar配列を突っ込んでいることが間違いなだけ
- 823 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:47:42 ]
- なるほど!
0x00を入れると格納はされているけど出力できていなかったということですね。 長さを指定したら出力できました。 レス下さった方々ありがとうございましたm(_ _)m
|

|