- 1 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 01:08:48 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.65【環境依存OK】 pc12.2ch.net/test/read.cgi/tech/1239326399/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm ◆ソースのインデントについて 半角やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのが最も良いですが、 直接貼るのであれば、全角空白か に置換しておくことをお勧めします。
- 296 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 23:08:01 ]
- >291
でもブレイクスルーとdefaultの機能って、状況さえ許せば凄く便利じゃね?
- 297 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 23:30:32 ]
- >>295
class A{ public: A(int); private: int a; class B { public: B(A&a) : a(a) { printf("constructer B¥n"); } void some_func(void){ printf("a: %d¥n", a.a); } private: A&a; }; friend class B; }; A::A(int x){ a = x; B* b = new B(*this); b->some_func(); }
- 298 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 23:32:38 ]
- >>295
friend
- 299 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 23:35:43 ]
- >>296
Duff's Deviceくらいしか使い道なくね?
- 300 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 01:17:05 ]
- >>296
ブレイクスルーちゃう fall through
- 301 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 01:18:14 ]
- ブレイクするんちゃう?
- 302 名前:デフォルトの名無しさん [2009/06/10(水) 01:23:48 ]
- std::coutとかstd::endl;って
スレッドセーフですか?
- 303 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 01:29:06 ]
- コンパイラごとに違うので、コンパイラの仕様書を読んでください。
っていうか、C++の規約にはスレッドセーフに関する記述はないんじゃなかったっけ?
- 304 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:28:30 ]
- ライブラリによるしな
- 305 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:04:54 ]
- >300
失礼、別のと混ざった
- 306 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 14:23:36 ]
- class A{ public: void A( void ); virtual void ~A( void ); };
と書きたい今日この頃 なぜこの書き方でエラーがでるのかがわからない
- 307 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 14:28:13 ]
- 気持ちは分かるけどさ。
「もともと戻り値は存在しないもの」と、「戻り値は使わないことを宣言する」の違いじゃない?
- 308 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 14:28:38 ]
- void
- 309 名前:デフォルトの名無しさん [2009/06/10(水) 14:47:46 ]
- sprintf関数について質問です。
strcatとかstrcpyを使うよりも、便利だと教えられたのですが、いまいちどこが便利なのかわかりません。 教えてください。
- 310 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 14:53:53 ]
- 具体的にstrcatとかstrcpyを使ったコード書いてみて
それをsprintfに置き換えてみりゃわかるだろ。 もちろん、strcatとかstrcpy一発で済むような例はstrcatとかstrcpy使えばいいのはわかるよな。
- 311 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 15:54:06 ]
- HOGE_01、HOGE_02 …… みたいな文字列を生成するときは、sprintfじゃないとやってらんないと思う
- 312 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:29:14 ]
- sprintfなんてキケンな物使っちゃいけません
- 313 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:33:01 ]
- sprintf_sがあるから無問題
- 314 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:03:03 ]
- >>312
#pragma warning (disable : 4996)
- 315 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:06:52 ]
- ltoaで小数点以下の数値を文字にするにはどうするの?
- 316 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:06:59 ]
- sprintf_sにしろsnprintfにしろ標準じゃないし、こいつらはこいつらで危なかったりするし(ヌル終端しないとか)
いずれにせよsprintf一族はロクなもんじゃないから書き捨てコード以外には使うべきでない
- 317 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:08:06 ]
- >>316
安全な使い方をすればいいだろ
- 318 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:11:26 ]
- sprintf系を使って本当に安全なコードを書こうとすると#ifdef地獄だぞ
挙動バラバラだし、本当にクソみたいなsnprintfとかがいるから ヌル終端しないくらいならカワイイもんで、例えば 一昔前のLinuxはnをガン無視してsprintfにブン投げるようになってることがある 本当に死ねばいいと思う
- 319 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:13:28 ]
- C/C++にしろJavaにしろ安全は保障されないし、こいつらはこいつらで危なかったりするし(すぐに暴走するし)
いずれにせよプログラミング言語一族はロクなもんじゃないから書き捨てコード以外には使うべきでない
- 320 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 22:20:16 ]
- snprintfはC99標準……。
ま、糞実装なsnprintfの存在以前にC99自体アレだが。
- 321 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:44:16 ]
- C99の仕様以前に、C99の対応率が。。。
- 322 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:50:11 ]
- C99の方が便利なのに、どうしてC99に移行しないんだろうね?
異なるプラットフォーム間で利用されるソフトを開発しているならともかく そうでない、小さなプロジェクト(おそらく世のプロジェクトの大部分)は C89よりC99で開発したほうが(わずかだろうけど)コスト削減になりそうなものだが。
- 323 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:52:42 ]
- 世の中Cじゃ無くてC++方向に走ったからね。いまさら感があるよ
- 324 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:59:07 ]
- 便利な物だけつまみ食いしとけばいいんだよ
__func__とか__VA_ARGS__とか_Pragmaとか<stdint.h>とか restrictやら可変長配列やらはいりません
- 325 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 00:53:03 ]
- 僕は複合リテラルだけ居てくれればそれでいい。
- 326 名前:デフォルトの名無しさん [2009/06/11(木) 01:48:37 ]
- C++でクラスの配列を作ったのですが、配列の要素数をどうやって求めればいいでしょうか。
class hoge { public: int a,b,c,d,e; void func1(); void func2(); }; hoge h[]={ {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, }; このとき sizeof(h)/sizeof(hoge) とやっても正しく出てくれません。
- 327 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:53:50 ]
- template<X>unsigned is(hoge[X]&){return X;}
kazu=is(h);
- 328 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:00:41 ]
- class Hoge
{ int a } というクラスがあったとき Hogeのインスタンス同士の比較をメンバ変数aの大小で行う場合 演算子をオーバーロードしたほうが良いのか int GetA()という関数を比較するのが良いでしょうか? またHogeインスタンスとintを比較することも考えてますがこういう場合はどうでしょうか?
- 329 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:02:44 ]
- >>326
いやそれであっている。 うまくいかないならほかに原因がある。
- 330 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 02:37:59 ]
- >>328
Hoge同士の比較方法がそれ以外にあり得ないなら演算子オーバーロードでいいんじゃね?
- 331 名前:デフォルトの名無しさん [2009/06/11(木) 02:50:23 ]
- >>329
すいません。 クラス配列を作るとき、 hoge h[]={ hoge{1,2,3,4,5}, hoge{1,2,3,4,5}, hoge{1,2,3,4,5}, hoge{1,2,3,4,5}, }; と書くようにしたら先のやり方で配列の要素数が取れました。 環境はVS2008なのですが、最初の書き方ではだめだったでしょうか?
- 332 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 03:10:02 ]
- コンパイラ何使ってる?
あと、どんな結果が出たのかも書いて欲しいかなかな。
- 333 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 03:35:46 ]
- hoge{1,2,3,4,5} ←なにこれ?
- 334 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 08:03:30 ]
- 新しいコンストラクタの呼び方
- 335 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 09:35:48 ]
- デタラメ書くなカス
- 336 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 15:17:42 ]
- >>331
自分もVS2008だけど、これはエラーなくコンパイルできて4と出力される。むしろ>>331がコンパイルエラーになる。 #include <iostream> class hoge { public: int a,b,c,d,e; void func1(); void func2(); }; hoge h[]={ {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, {1,2,3,4,5}, }; int main() { std::cout << sizeof(h)/sizeof(hoge) << std::endl; }
- 337 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 19:58:37 ]
- gcc4.3以上なら通るな
initializer_listだろ
- 338 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 20:57:57 ]
- C99の機能をC++に持ち込むなクズ
- 339 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 21:22:27 ]
- C++0xではC99の一部機能が採用されるよ。
委員会の人たちにクズと言わないと意味ない。
- 340 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 21:37:51 ]
- restrictとか_Complexとか可変長配列みたいな
本当にしょうもない物は入らないから大丈夫だと思うけどね
- 341 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 21:53:38 ]
- >>339
ここはC++0xのスレじゃないよ
- 342 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:20:40 ]
- >>340
特に、restrictはC++89のときに否決された過去があるから、 今回も入れられるわけないw
- 343 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:22:51 ]
- restrictは入れると一つだけ利点があるんだよなあ
FORTRAN並みに配列演算が高速化できる可能性がある 科学技術計算にはFORTRANを、と言わなくて済むようになるんだがな それ以外には取り立てて利点はない
- 344 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 06:13:12 ]
- >>341
ここがC++0xのスレかどうかなんて、>>338-339の流れには関係ないよ。
- 345 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 09:08:43 ]
- >>344
スレ違いだクズ
- 346 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 09:24:45 ]
- いいえ。
- 347 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 09:52:32 ]
- いいえ。
- 348 名前:デフォルトの名無しさん mailto:sage [2009/06/12(金) 09:56:38 ]
- iccでもオプション指定さえすればrestrictが使えるんだよね。
メモリのアクセスパターンががらっと変わる可能性があるから入れて欲しいけどねぇ。
|

|