- 1 名前:デフォルトの名無しさん mailto:sage [2010/01/29(金) 23:15:45 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.70【環境依存OK】 pc12.2ch.net/test/read.cgi/tech/1258873470/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm codepad.org/ (コンパイルもできるし出力結果も得られるのでお勧め) ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。
- 411 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:16:11 ]
- g++の拡張文法を使っているのかもしれない
ポータビリティを考えるなら標準C++に従って書いた方がいいね
- 412 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:50:32 ]
- >>410
コンパイルしてちゃんとppmファイルを得ることが出来ました ありがとうございました!
- 413 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:05:09 ]
- 超初歩的な質問で恐縮なんですが
CとC++ではCを先に学んだ方がいいんですか? それとおすすめのサイトとか書籍があったら教えてもらえませんか?
- 414 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:08:20 ]
- >>413
歴史をなぞるなら C から。 何か早く作りたいものがあるなら C++ からのほうが早いかもしれない。 ただし C に由来する落とし穴も多く残っているので、危ないかもしれない。 どっちからと考えずに、必要なときに必要な情報を確認しながら学ぶのが おすすめ。 お勧めサイト。 www.google.co.jp/
- 415 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:11:04 ]
- >>413
プログラミングしたことあるの?
- 416 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:11:48 ]
- C++入門といってもクラスやSTLは後半!とか続刊!とかの入門書なら
内容はCとかわらないよ。
- 417 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:15:19 ]
- あと面倒なのが最近はunicodeベースでコンパイルしちゃう物があるのに
古い標準関数はマルチバイトベースだったりととにかく古いだけあってめんどくさい>C/C++
- 418 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:15:25 ]
- >>414
特に急ぎ足では無く、ゆっくり学ぼうと思ってるんでCからいこうと思います。 ググるのは大切ですね、しかし紹介されてるサイトや書籍があまりにも多いので戸惑います。 >>415 すごい勢いでド素人です。
- 419 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:17:25 ]
- >>417
CとC++はわりと古いから、やり難い事があるという事だけわかりました!・
- 420 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:20:05 ]
- >>413
お勧め書籍。 www.stroustrup.com/Programming/
- 421 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:20:11 ]
- C++を学びたいならC++から
Cも学びたいからCから C++をやるとCなんて馬鹿らしくてやってられないから
- 422 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:25:03 ]
- >>420
おぅふ・・・なんかすげぇのきた。これは理解できそうにない >>421 ++というだけあって発展形なんですね。
- 423 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:37:34 ]
- >>422
> ++というだけあって発展形なんですね。 今もC++はC言語のコードを(割と互換性があるので)使える。 でも厳密な互換性じゃないので使えないこともある。
- 424 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:38:41 ]
- >>418
windowsしか使わないなら、C#あたりからやった方がいいよ C/C++はなかなかソフトが完成しないから嫌になるし、初心者には難しい
- 425 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:43:20 ]
- >>424
> windowsしか使わないなら、C#あたりからやった方がいいよ いや、俺の意見としては C#だけは止めた方が良い。 > C/C++はなかなかソフトが完成しないから嫌になるし、初心者には難しい そんならP言語(Python, Pascal, PHP)をやれば良いと思う。 Rubyはよーしらんが。
- 426 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:43:29 ]
- >>423
なるほど!参考になります。 >>424 #ですか、比較的敷居が低いんでしょうか。 まずそれから弄るのもいいかもしれませんね、ありがとうございます。
- 427 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:45:23 ]
- qmakeとcmakeって何が違うわけ
makeファイルを作っているだけなのか
- 428 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:46:22 ]
- まぁC#使っても、あれは出来ないだの、これはC経由しろだの、あるけどな。
- 429 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:47:41 ]
- C#使うくらいならJavaでいいじゃん
- 430 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:50:08 ]
- C, C++をやってから、GCのありがたみを感じるべき
- 431 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:51:47 ]
- >>428
API使えるしまあいろいろ方法はあるよ C#->C++に戻ってみるとC#で当たり前に使ってる部品がなくて自作することになったり 文字コード関連ではまるよりよっぽどいい
- 432 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:54:50 ]
- 昔の言語関連って無意味に省略しまくってるから直感で意味が通じないんだよな
C->C#とC++すっとばして覚えたところでC++にいったけどさ c_strとかなんだよそれ
- 433 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:57:21 ]
- 好きなのを選ぶが良い
ttp://vintage-digital.com/hefner/misc/lisp-programmers.jpg
- 434 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:58:17 ]
- 俺ロキュータスいくわ
- 435 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:58:37 ]
- >>433
怪しすぎるww 特にC++は何だこりゃw
- 436 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 18:00:01 ]
- >>432
仕方ねーんだよ 昔のリンカは識別子を最大6文字しか認識しない時代があって Cはその時に作られた物だから C++はとっくにその制限は撤廃されているがなぜかCの癖を無意味に 引きずって省略しまくっている タイプ量を減らすためか?
- 437 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 18:01:01 ]
- >>433
ASP.NETにいかざるをえない というか皆さん千差万別ですね、そりゃネットのおすすめの書籍も色々あるわけだ・・・ ここにテンプレがないのもそのせいか!
- 438 名前:デフォルトの名無しさん [2010/02/13(土) 18:03:32 ]
- >>436
まあギークが「ぼくのかんがえたさいきょうのげんごかくちょう」がC++だからタイプ量減らすためじゃね? std::stringのstringからcharに変換するやつね stringだからC++からの物だよね
- 439 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 18:04:57 ]
- Haskellやべえ
- 440 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 18:05:06 ]
- C++やるならQt Creator + VCのコンパイラがいいよ
- 441 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 18:17:54 ]
- >>426
いや、俺の意見としては C#だけは止めた方が良い。
- 442 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 18:18:13 ]
- >>440
メモっときます、ありがとう。 皆ありがとう。感謝します。 とりあえず色々触ってみた上で何か一つに絞って、学んでいこうと思う!
- 443 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 20:03:26 ]
- >>441
いやいや、C#は便利だぞ。 C++よりも綺麗だし。
- 444 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 20:46:45 ]
- >>443
そんなこと言ってまた不幸になる人を増やすのか! > C++よりも綺麗だし。 そんな言語いっぱいあるじゃないかw
- 445 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:45:41 ]
- >>444
C#で不幸になるやつは、もともと不幸なやつだけだ。
- 446 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 23:14:59 ]
- C#は.NETで出来ないことしようとすると、途端に不幸になる気がする。
MFCだと、のっけから不幸にだが・・・
- 447 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 23:27:06 ]
- ぶっちゃけCから始めるのがいいよ
C99ならC++の便利なところは大体使えるし
- 448 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 00:06:35 ]
- Cを覚えてenumや構造体や関数で取り敢えずなんとか実用になるライブラリとか書く。
しかしC++でnamespaceやクラスを知ると、それまで書いたのを全部書き直したくなるんだよ。 で、書き直した頃にtemplateに手を出して、また書き直したくなるわけ。 その後もSTLやらEffectiveC++やらBoostやらにかぶれるたびに、今まで書いたものがゴミに見える。 さらにC++0.xなんてので、今また過去の糞化現象が起こるんです。
- 449 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 00:11:09 ]
- それを楽しめるマゾ向け
- 450 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 00:14:47 ]
- 最近はもう逆に余計なものみんな取り払って++も付かない99でもないCだけでいいんじゃないかと思えてきた
- 451 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 00:15:35 ]
- 99より前にもいくつかあるんだが
- 452 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 00:18:56 ]
- shop99 と shop100 だと500円の買い物で
5円とか半端な数字出る出ないの違いが有るよね
- 453 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 05:48:56 ]
- 入門書とかで「解説のためにわざと非効率なコード書いてます」とか出ると混乱するよな。
- 454 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 10:02:18 ]
- >>447
C99に完全準拠しているコンパイラはIntel C++などごく一部だけだぞ g++も部分準拠だし移植性がないしだいたいg++はC++0xへの改訂作業で 手一杯で今は時代遅れのC99に携わっている暇はないだろう
- 455 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 10:07:15 ]
- C++0xへの改訂作業なんて、
考えるだけで頭痛くなってくるなww
- 456 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 10:11:50 ]
- C99への準拠を強化するよかまだ0xに力入れた方がマシということ
- 457 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 10:11:59 ]
- でもnullptrとdecltype、auto、右辺値参照、コンテナの初期化子
など痒い所に手が届くようになるのはありがたいよな
- 458 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 11:36:08 ]
- 今までが届かなさすぎだったんだよ!
- 459 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 12:53:10 ]
- /usr/include/を見ていたら、*.hと*.cppがありました
*.cppには#include "*.h"としか書いてありません 一体何がしたいんですか?
- 460 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 12:57:27 ]
- >>459 知るか。書いた奴に聞けよ。
- 461 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:00:38 ]
- イテレータから元の変数にアクセスできますか。
vector<int>::iterator p;だと、配列要素の値と位置がわかるだけ気がしますが pの前方に要素追加したり削除したりとか。
- 462 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:04:23 ]
- >>461
「元の変数」って何? vector インスタンスのことなら、無理。
- 463 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:06:31 ]
- サンクス
- 464 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:24:40 ]
- スタティックリンクライブラリ作成についての質問なんですが
1.C言語でも扱えるようにAPIの引数や戻り値部分だけあわせておけば 内部でC++で書いていようが問題はない? 2.スタティックリンクライブラリをコンパイルする際にスタティックリンクライブラリが 利用する外部の機能を取り込まないようにするにはどうすればいいですか? (VC++2008
- 465 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:33:30 ]
- 親クラスを継承して子クラスを作るときには、
子クラスのヘッダファイルにもオーバーライドするメソッドを、定義しないとダメなんですか? 一応自分でも試してみたんですが、コンパイラ様に怒られたので
- 466 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:35:30 ]
- >>465
そんなことはない。 エラーメッセージは?できればソースも出して。
- 467 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:36:57 ]
- 純粋仮想関数を持つ親クラスを継承した子クラスをインスタンスとして使おうとしたとか?
- 468 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:38:57 ]
- >>465
あとメソッドっていう用語は存在しないので、 今後はメンバ関数member functionと 呼ぶようにしなさいね。
- 469 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:42:06 ]
- >>464
1は、extern "C"もつければおk 2は、「取り込まない」の意味が微妙。 作ってるライブラリをAとして、 AはBというライブラリを使用しているとき、 AにBを含ませたくないという意味? 特殊なことしなければ「取り込まない」状態だと思う。 Aのプロジェクトの中にBのlibファイルを追加すれば 「取り込む」状態になるけど。
- 470 名前:465 mailto:sage [2010/02/14(日) 15:48:08 ]
- ひとまず、ヘッダファイルだけ晒します
class Super{ public: Super(); virtual void print(); ~Super(); }; class Sub : public Super{ public: Sub(); void print(); ~Sub(); }; エラー ${HOME}/Test/sub.cpp:8: error: no ‘void Sub::print()’ member function declared in class ‘Sub’
- 471 名前:デフォルトの名無しさん [2010/02/14(日) 15:57:10 ]
- Visal C++ 2008 ExpレッsEditionでWindowsXP向けの開発です。
ウィンドウごとに音量を調整、若しくは開いているフラッシュオブジェクトの音量を調整する関数 または手法は無いでしょうか?
- 472 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:16:59 ]
- イテレータは挿入しても保たれるけど、end()とbegin()はそうでないのね。
不便。何でこんな事にしたの。
- 473 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:24:09 ]
- >>472
??保たれない場合もあるだろ。何を言いたいのかよく分からんぞ。
- 474 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:28:15 ]
- そうなのか。気をつける。
- 475 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:41:04 ]
- 何が保たれるんだ?
- 476 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:42:04 ]
- *.cppに直接宣言している変数って何なんですか?
- 477 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:44:46 ]
- どんなコード?
- 478 名前:476 mailto:sage [2010/02/14(日) 16:48:30 ]
- >>477
こんなコードです DownloadManager *BrowserApplication::s_downloadManager = 0; HistoryManager *BrowserApplication::s_historyManager = 0; NetworkAccessManager *BrowserApplication::s_networkAccessManager = 0;
- 479 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:53:36 ]
- googleのコード検索で見たけど
グローバル変数だね
- 480 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:57:51 ]
- prefix の s_ はstatic変数のsを表しているのかもしれない
- 481 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:58:43 ]
- >>478
staticのメンバ変数は、どっかに実体を宣言しないといけない。
- 482 名前:479 mailto:sage [2010/02/14(日) 17:01:50 ]
- そうだったw
479は間違い
- 483 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:04:26 ]
- boost::tuples or tuple
の使い方が分かる日本語のサイトを教えてください。 名前空間が boost::tuplesなのかboost::tupleなのか、 色々混ざっているようなので ググっても謎です。 現行仕様のboost.タプルのの使い方が分かる日本語のサイトを教えてください。 よろしくお願い申し上げます。
- 484 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:05:53 ]
- アキラさんのboost本買うといいよ
- 485 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:18:10 ]
- テンプレート本?
- 486 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:41:35 ]
- >>483
boost.cppll.jp/HEAD/libs/tuple/doc/tuple_users_guide.html
- 487 名前:483 mailto:sage [2010/02/14(日) 17:49:05 ]
- >>486
お返事ありがとうございます。 拝読致します。
- 488 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:41:11 ]
- >>481
ありがとう
- 489 名前:デフォルトの名無しさん [2010/02/14(日) 19:06:37 ]
- C++なのですが
1行目 n個、2行目(n-1)個、・・・、n行目 1個の配列をつくるコードって これであっているのかどうかチェックしていただきたいのですが どうでしょう? --------------------------- int **a = new int*[N]; a[0] = new int[(int)(N * (N + 1) /2)]; int j = N; for(int i=1; i<N; i++){ a[i] = a[0] + i * (j-1); j--; } delete[] a[0]; delete[] a; ---------------------------
- 490 名前:デフォルトの名無しさん [2010/02/14(日) 19:10:50 ]
- CやC++を今から勉強したいんですけど、
全くの初心者ですがオススメの本ってありますか? 将来仕事にすることも考えてます。
- 491 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:14:57 ]
- >>490
独習シリーズ 本屋に行って、黄色い分厚い本を買って頭からケツまで20回嫁。
- 492 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:19:28 ]
- >>489
ありとあらゆる意味でダメ。 期待したとおりに動かないし、(直したとして)保守性も最悪。 窓からソースを投げ捨てるレベル。
- 493 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:20:11 ]
- ワロタw
- 494 名前:デフォルトの名無しさん [2010/02/14(日) 19:20:53 ]
- >>491
ありがとうございます 明日にでも買ってこようと思います
- 495 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:23:33 ]
- >>489
動くのかもしれんけどなんかおかしいような 普通はこんな感じじゃない? とかいって、普段vectorばっか使ってるから 初めてこういうコードを書いたわけだが int n=10; int **a=new int*[n]; for(int i=0;i<n;++i){ a[i]=new int[n-i]; for(int j=0;j<n-i;++j){a[i][j]=j;} } for(int i=0;i<n;++i){ for(int j=0;j<n-i;++j){ cout << a[i][j]; } cout << endl; } for(int i=0;i<n;++i) delete[] a[i]; delete[] a;
- 496 名前:デフォルトの名無しさん [2010/02/14(日) 20:15:00 ]
- >>495
ちなみにvectorだったらどんな感じになるんですか?
- 497 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 20:30:02 ]
- >>495
元のコードって、領域が配列を跨いで連続してる必要があるんじゃないの?
- 498 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 21:17:12 ]
- >>496
std::vector<int> a[N]; for (int i = 0; i < N; ++i) { a[i].resize(N - i); }
- 499 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 21:31:18 ]
- ポインタ配列は愚行でしょ
struct C{size_t sz;int*p; C(size_t x):sz(x),p(new sz(int)){} C(size_t x,int*a):sz(x),p(a){}}; template<size_t N>struct L:C{ size_t am(size_t x){return x*N-((N+1)*N)/2;} L():C(am(N)){} C operator[](size_t x){return C(N-x+1,p+sz-am(x));}};
- 500 名前:デフォルトの名無しさん [2010/02/14(日) 21:37:35 ]
- >>497
そこが問題になるんですよね・・・ >>498 なるほど
- 501 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:41:14 ]
- 上でC99に準拠しているコンパイラが少ないって話が出ていたけど、
実際に試してみたら VC, gcc, bcc, dmc, OpenWatcom で全部ガン無視されててフイタwww むしろIntelの仕様がおかしいって言われそうで不憫だ。
- 502 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:45:10 ]
- gcc?
- 503 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:47:11 ]
- >>502
GNU C Compiler ですけど?
- 504 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:48:49 ]
- gnu compiler collection
- 505 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:53:13 ]
- gccじゃなくてg++じゃ、と>>502は言いたかったに1ペリカね。
- 506 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:54:05 ]
- こまけぇことはいいんだよ
- 507 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:54:26 ]
- >>504
その略称のこともあるけど、GNU C Compilerの名前としてもgccは使われる。 >>502 お前人の揚げ足取ろうとする嫌な性格のやつなのね? そのくらい分かることだろ? さらに言えば今回の文脈ではg++じゃなくてgccが正しい。
- 508 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:56:51 ]
- gccで全然問題ない
- 509 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:05:20 ]
- >>502
がフルボッコw
- 510 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:06:32 ]
- 俺は502じゃないが、-std=c99つけてもあかんの
あと関係ないけどGNU Compiler Collectionを指すときってGCCにするんじゃね
- 511 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:10:18 ]
- >>510
その略称のこともあるけど、GNU C Compilerの名前としてもgccは使われる。 さらに言えば今回の文脈ではg++じゃなくてgccが正しい。
|

|