- 1 名前:デフォルトの名無しさん [2009/07/18(土) 02:54:58 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part70 pc12.2ch.net/test/read.cgi/tech/1244942050/l50
- 528 名前:523 mailto:sage [2009/08/13(木) 15:27:36 ]
- >>526
valはHogeのプライベートメンバなのですが、 T型へのキャストでvalを変更可能にするのとしないのと、 クラス設計としてはどちらが望ましいとかはありますか?
- 529 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 15:32:01 ]
- そのラッパクラスの目的、どういう利用方法を想定しているかによる
- 530 名前:デフォルトの名無しさん [2009/08/13(木) 15:41:16 ]
- なるほど、一概には言えませんということですか。
ありがとうございました。
- 531 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:32:09 ]
- class hogeのインスタンスメソッドbokeをthreadや、
APIのコールバック設定関数の引数void (*arg)(void)に渡したいんですが、どうすればいいでしょうか? 頼みのboost.bindやfunctionも、boost内部のクラスで定義され、void (*arg)()にキャスト不可能でした
- 532 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:38:01 ]
- APIのコールバック関数は大抵void*のパラメータを渡せるようになってるはずなので、
それ使ってthisを渡してstatic関数経由で呼べばいいと思います
- 533 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:39:09 ]
- - -―- 、
/...::::::::::::::.. ヽ / ..:::::::::::::::::::/\ ヽ /..:::/::::/::::// ヽ l:. l. l:::::!::::/●) (●)|:: | . !:::l::::l/// ,, ///l:i:l ェェエエ工工 ヽ:i::!、 r ― ァ ノノ' ` l\`ー './ ノヽ \_フ.ヽ |_ 丶 ヽ . | |' 初心者)
- 534 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:47:14 ]
- >>521
いえ大丈夫です。 ありがとうございます。
- 535 名前:531 mailto:sage [2009/08/13(木) 16:47:58 ]
- >>532
が、できたら苦労はないんですけど、 引数void (*arg)(void)からわかる通り、指定できるコールバック関数の引数が0個なんですよ… なので、クラスメソッド→インスタンスメソッド経由だと、インスタンスのアドレスもわからないですし 複数のインスタンスを扱う事を考えるとグローバル変数も使えずで…途方に暮れてます
- 536 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:58:49 ]
- じゃあ、適当に10個くらいコールバック関数を用意して、
どのオブジェクトがどのコールバック関数を使用中か管理して、 空いてるコールバック関数を使う 一杯だったらリソース不足ってことにしてあきらめる CPUが決まってるなら、実行時に各オブジェクト用のコードを その場で生成するっていう手もないこともない・・・
- 537 名前:531 mailto:sage [2009/08/13(木) 17:18:23 ]
- >>536
そうですね…、やはり管理クラスを別で作るしかなさそうな感じです。 コールバックごときに時間も掛けてられないので、この仕様で行こうと思います。 ありがとうございました。
- 538 名前:519 mailto:sage [2009/08/13(木) 18:02:35 ]
- >>535
プライベートなスタティック変数を経由する。
- 539 名前:デフォルトの名無しさん [2009/08/13(木) 19:07:06 ]
- 複数のグローバル変数を1つのclassで包めば安全度あがる?
- 540 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 19:15:11 ]
- オブジェクトとして扱うなら
- 541 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 19:15:27 ]
- あがりません。
グローバル変数のまずい点の一つは 密結合であるということだからです。
- 542 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 20:47:43 ]
- 安全度ってものが何を意味するか微妙だけど、
とりあえず何の名前空間にも含まれていないグローバル変数が 複数あるならその段階でコードがクソ設計である可能性は高い。 ・・・って誰もこんな事聞いてないか。
- 543 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:26:18 ]
- MapDataというマップダータの変数があるとして
マップ描写、当たり判定、キャラなどのクラスからアクセスがあるなら グローバル変数以外にどう実装すればおk? 全部ひとつのクラスで包めばいいかもしれないが それぞれのクラスにMapDataを渡すとなれば引数が多くなりスマートにならないんじゃね
- 544 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:33:05 ]
- 今日はじめてC++の文法解説サイトを読みました。
C++というか構造体++に見えてしまうんですが、 オブジェクト指向とか仰々しい名前が付いててこんなもんですか?
- 545 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:34:28 ]
- >>544
継承と仮想関数があってもですか?
- 546 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:39:25 ]
- オブジェクト指向なんて今時珍しくもなんともないだろ
- 547 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:39:44 ]
- テンプレート超楽しい
- 548 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:41:50 ]
- >>543
マップデータを内包するMapDataというクラスにマップ描写や当たり判定を行うメンバ関数を用意する。 キャラクラスからのアクセスはどんなものかわからんので知らない。
- 549 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:43:18 ]
- オブジェクト指向の入門書はJavaやC#の方が多いくらいだし
C++学ぶ段階でオブジェクト指向ってなんですか?って言う人は減ったわな。
- 550 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:44:26 ]
- C++特有の物といったら多重継承ぐらいなもんだしな
それを使ったオブジェクト指向入門書というのは割と少ない
- 551 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:48:23 ]
- 普通はMapDataのインスタンスを受け取ってデータ取得や当り判定、描画を行うクラスを用意する。
- 552 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:51:41 ]
- >>545
>継承と仮想関数があってもですか? これから読んできます! クラスの解説読んでるとSQLとRelationalDatabaseで良いじゃん!と思ってしまんですが、 クラスのありがたみってどのあたりで現れてきますか?
- 553 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 21:52:58 ]
- >>552
君はGoF読むか独習デザインパターンC++を読みなさい
- 554 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:00:40 ]
- >>543
唯一絶対の正解なんてのはねーが、マップ描写なら ttp://marupeke296.com/OOD_No6_CS2_ShootBullet2.html 描画対象の基底クラスを作ってうにゃむにゃ。 描画対象が抽象化されるからレンダラーで奥行描画の調整もしやすい。 いま漏れが思いつく限りでは一番好きなやり方。 キャラなら適当なクラスを作ってインスタンスをプール。 当たり判定はmapdataのお仕事って感じかな?
- 555 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:01:05 ]
- >>552
おいっす、明日ジュンク堂あたりでじっくり読んできます。 とは言うものの、デザインパターンって昔読んでさっぱり分からなかったんですが、 デザインパターンその物の解説本よりも、 デザインパターンを使って作ってみましょう!見たいな本はないですか?
- 556 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:06:33 ]
- >>555
推薦図書/必読書のためのスレッド 51 pc12.2ch.net/test/read.cgi/tech/1250040767/ このスレで聞いてみたら? 出来るだけ詳しく「これこれこういう本が欲しいんです」と 自分の意志を伝える事かな それからweb上にも役立つ所がある 俺は www.01-tec.com/document/cpp_design_pattern.html ここを良く読んでるけどな
- 557 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:11:42 ]
- >>556
ありがとうございます。 聞いてくる前にまず読んできます。
- 558 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:12:40 ]
- クラス解説とSQLがどうしても結びつくのかわからない・・・
- 559 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:17:25 ]
- だから初心者なんだろ
- 560 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:18:22 ]
- いやー、なんか値の代わりに関数が登録されてるように見えて、
検索して値を取り出すのが、関数の呼び出しに見えてしまったんですが、 SQL勉強しなおしですかね・・・・
- 561 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:25:12 ]
- いあいあ、なるほどそういう見方もあるのかと
思ってしまった ありかとう
- 562 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:31:50 ]
- オブジェクト指向データベースってあったなぁ…あれどうなったんだろう。
- 563 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:33:11 ]
- 構造体+アクセス・セキュリティ強化 → 関数管理ライブラリ?
構造体+データ処理特化 → リレーショナルデータベース? 見たいなあいまいな知識しかもってません(笑) むかーし、Cの構造体でDB組んでて、 DBが大規模化して手に負えなくなって、 構造体に機能追加してったら、 関数ライブラリを管理するのにちょうど良いので その方向に進化させたのがクラスなのかなーとか
- 564 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:34:32 ]
- Cで構造体に機能追加って、Cの構造体はメンバ関数持てないでしょ
- 565 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:37:44 ]
- >>564
メンバ関数として第一変数を構造体へのポインタにすればいいだけでは?
- 566 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:38:30 ]
- Cの構造体に機能追加(メンバ関数を持てる様にした)したのが
C++のクラスなのかなーという認識で、 初心者の戯言です。
- 567 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:39:38 ]
- >>566
それはカプセル化ね データと手続きを今まで別々に扱っていた不自然さを 統一して解決したわけですよ 仮想関数と継承はまた別
- 568 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:41:52 ]
- C++はテンプレートを利用したコンパイル時静的多相解決という
とんでもない仕組みも持っているけどね そのおかげでBoostという怪物ライブラリが現れて来た
- 569 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:46:17 ]
- >>567
ありがとうございます。 データと手続きは別個の方が自然だと思ってましたorz >>568 奥が深いですね・・・ もう一度解説サイト読み直してきます。 C++でGUIのあるアプリケーションを作ろうとしたら.net?とかいうライブラリを使うんでしょうか。
- 570 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:47:02 ]
- >>568
テンプレートメタプログラミングってすげぇよな。 俺できないけど、みんなは出来る物なの? ライブラリ作る職業の人すら出来るのかあやしいんだが。
- 571 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:47:20 ]
- コンパル時に結果を演算してしまうというのはものすごい技術だけど、
一方で、エラーメッセージが意味不明だったり、 リアルタイムコンパイルによって実現されているMicroshiftのインテリセンスと相性が悪かったり… VS2010で改善されないかなぁ。
- 572 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:48:02 ]
- >>569
データと手続きが別個だとプログラムの規模が上がった時に 一人で扱える限度を超えて手に負えなくなるんですよ .NETはC++/CLIという全く別個の言語ですので混同しないように 他にC#とかVB.NETなどもある
- 573 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:48:09 ]
- >>569
自然かどうかはちょっと微妙なところがあるとおもうけど、 自分や他人の作った複数のクラスが うまく組み合わさって動くその様は、まさに壮観。
- 574 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:50:35 ]
- 盛り上がっているところ失礼します。
const unsigned int num = 10; と書くと、numはコンパイル時に定数となると聞きました。 const unsigned int hoge = 3 + 4; や const unsigned int piyo = (3 + 4 - 1) * 2 / 3; はコンパイル時に定数になりますか?
- 575 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:51:08 ]
- なります
- 576 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:02:04 ]
- なるかどうかはコンパイラ次第だったりしない?
最適化を禁止してアセンブラコード出させてみるとか。
- 577 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:05:50 ]
- >>572
>データと手続きが別個だとプログラムの規模が上がった時に >一人で扱える限度を超えて手に負えなくなるんですよ なるほどー >.NETはC++/CLIという全く別個の言語ですので混同しないように >他にC#とかVB.NETなどもある あさってな質問ですいませんorz GUIのあるアプリケーション作ろうとするなら開発環境のスレに移るべきでしょうか? >>573 >自然かどうかはちょっと微妙なところがあるとおもうけど、 >自分や他人の作った複数のクラスが >うまく組み合わさって動くその様は、まさに壮観。 多人数で大規模なプログラムを作るための工夫の結果がクラスっていう概念なんでしょうか? 呼び出し方は最初に決めるけど、データ構造と処理の仕方は各々見えないところで好き勝手やってOK見たいな。
- 578 名前:574 mailto:sage [2009/08/13(木) 23:06:11 ]
- >>575
>>576 ありがとうございます。 const unsigned int num = 10; const unsigned int hoge = 3 + 4; const unsigned int piyo = (3 + 4 - 1) * 2 / 3; char a[10], b[num], c[hoge], d[piyo]; がg++で通ることは確認しました。
- 579 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:06:44 ]
- >>554
よく理解できないがすげー参考になったわ
- 580 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:08:12 ]
- >>577
GUIの話題ならコンパイラスレに行った方がいいな >呼び出し方は最初に決めるけど、データ構造と処理の仕方は各々見えないところで好き勝手やってOK見たいな。 それは仕様書の話だね OOPとは関係ない
- 581 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:08:48 ]
- >>577
>多人数で大規模なプログラムを作るための工夫の結果がクラスっていう概念なんでしょうか? いい表現だね。 まあ工夫の一つってことだけど。 クラスはテンプレートと組み合わせたときもまたすごいことになる。 例えば君が有理数クラスを作ったとして普通に使うとintが分母分子の型になるけど、 誰かが多倍長整数クラスを作ってくれていればそれを使うことで 多倍長桁数で分母分子を管理する有理数クラスが一瞬で出来る。
- 582 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:12:42 ]
- そうだなクラスの目玉機能の一つとして演算子の多重定義というのがあるな
これをテンプレートと組み合わせるとtraitsになる
- 583 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:18:08 ]
- >>580
了解しました。コンパイラスレ探しに行ってきます。 初心者の的はずれな質問に付き合って頂いてありがとうございます。 >>581 難しいですねw 理解するにはまだまだ勉強が必要みたいです。 大は小を兼ねる的な、 基本的な関数を、継承使ってちょっとカスタマイズすることで、 ゼロから書くよりは大幅に工数を削減して欲しい関数を実現する見たいな?
- 584 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:20:05 ]
- 大規模開発ではクラスは使わない
クラスと言う名の構造体しか使わない
- 585 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:22:12 ]
- >>583
実際は仮想関数を使うために仕方なくpublic継承を使うけど できることならコンポジションで対応出来る所はそうしたい 継承は使いすぎるとプログラムの見通しが悪くなるんですよ 実際にプログラム書いてみるとわかるけど それからUML図にも慣れるといいね UML無しにOOPしようとすると頭が爆発します templateは継承とはまた全然別の機能 ジェネリック・プログラミングのための機能でこれがあるために C++は特別な言語になっちゃってます
- 586 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:29:26 ]
- >>585
ありがとうございます。 実のところ、 UMLライクなお絵かきするとCコードを生成してくれる環境に慣れすぎてて、 裏で何が起きてるのかさっぱ分からないという状況に慌てて、 連休利用してCの文法見直してたらいつの間にかここに辿り着いたといった次第です。 (作って覚えるVC#とかの本でキーボード叩くのえらい難儀しました。) 継承とtemplateの違いがまださっぱりなので、 明日もじっくり解説サイト読んで来ることにします。 レスくれた人ありがとうございます。&おやすみなさいー
- 587 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 10:50:36 ]
- 一応Cは理解していると思っているのですが
C++を最初から勉強しようとした時、何かオススメの書籍なりサイトはありますか? 猫とかやさしい〜ってのはやめとけみたいな話を「C言語なら俺に聞け」というスレで目にしたもので
- 588 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:03:33 ]
- >>587
ロベールのC++を読んでおけ 規格書に近い内容まで知りたいなら詳説C++も読め
- 589 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:12:34 ]
- ロベール=ピエール
- 590 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:26:36 ]
- >>587
AcceralatedC++一択じゃないか? それはいいけど、折角書籍スレがあるんだから見てきたら?
- 591 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:34:09 ]
- >>590
C++を「一から」理解したい人に「AcceralatedC++」は 違うだろうと思うんだけど それよりC++ in-depth seriesそのものが違うだろうと思う あれは中級者が上級者に進むためのシリーズだろう
- 592 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:31:06 ]
- >>587
猫はそこまでは悪くないよ。 ロベールのC++教室 ttp://www7b.biglobe.ne.jp/~robe/cpphtml/index.html ここはお薦め。 ここと猫は併用して学んで欲しい。 入門者ならエクスメディアの『ビジュアルラーニングC++』って本が 個人的なオススメだったけど、会社が倒産した。
- 593 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:09:29 ]
- Webサイトの方のロベールはだめだ。いろいろ古い。
推奨されないコーディングもある。 本はそういうところ直されてるから、そっちを読んだほうがいい。
- 594 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:27:14 ]
- gotoって処理自体は軽いでしょうか?
gotoを使うと無駄なコンストラクタを一回さけられる状況なんですが。
- 595 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:34:11 ]
- そのコンストラクタを避けるのは本当に必要なことか?
何か速度的に重要な場面? gotoは、ローカル変数のデストラクタを呼ばなきゃいけなかったり tryブロックの出入りが必要な場合を除けば、軽い
- 596 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:51:40 ]
- goto使うなんて言ったら最後、
何回レビューして注意書き何箇所に追記せにゃならんか・・・ って状況でもなければ作って走らせて比較してみては?
- 597 名前:594 mailto:sage [2009/08/14(金) 21:05:25 ]
- >>595
> そのコンストラクタを避けるのは本当に必要なことか? そのコンストラクタはhoge_t型をテンプレート引数にもつクラステンプレートの ものであるため、hoge_t次第で重さが変わります。 > 何か速度的に重要な場面? 速度はあまり重要ではありません。 >>596 gotoを使ってあると、 「こいつ(の技術や作ったクラステンプレートは)大丈夫か?」 って思われますかね、やっぱ。
- 598 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:10:01 ]
- 使う理由とドキュメンテーションがしっかりしてればいいんじゃね
- 599 名前:594 mailto:sage [2009/08/14(金) 21:19:45 ]
- びびってきたんで止めときます。
こうして一生gotoを使わないまま過ごしそうです。
- 600 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:23:24 ]
- テンプレートの初心者です。
次のキューを実装するコード kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9901.txt でデータの型についてテンプレート化しようとして kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9902.txt とすると、上記ファイルの末尾にあるようなエラーが発生します。 これは、テンプレート関係の記述をどのようにすればいいのでしょうか。 理由あって、仮想関数を仕様しています。(スタックも実装する予定なのです。) もしよろしければ見てやってください。よろしくお願いいたします。
- 601 名前:600 mailto:sage [2009/08/14(金) 21:31:02 ]
- エラーの表示を忘れておりました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9903.txt なにとぞお願いいたします。
- 602 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:34:57 ]
- class queue { 〜 } の中に using DataStruct<T>::buff; と書く
- 603 名前:600 mailto:sage [2009/08/14(金) 21:40:38 ]
- ありがとうございました。
テンプレートについて詳しく書かれた教科書を探さなければ。
- 604 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:41:26 ]
- >>597
MISRA-Cなんかだと例外処理の時のみ認められてるかな? gotoその物は悪くないんだ、ただ下手な使い手が多かっただけで、 このあたりはアメリカの銃問題と似たような感じ、 銃が悪いのか銃を使った人間が悪いのか、 銃が悪いのか、子供の手の届くところに銃を放置した親が悪いのか、ってな感じでね。 そのgoto使う箇所ってどのくらいの頻度で呼ばれるの? CPUもメモリも豊かな時代だからよほどのことがない限り使わないけど。
- 605 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:44:41 ]
- >>597
よく読んでなかったスマソ 実行速度はもちろん、コードの可読性が上がるみたいな理由がなければ、 基本的に使わないのが無難かな、 イスラム教徒とか黒人だってだけで差別されるっしょ? あんな感じよ。
- 606 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 22:19:34 ]
- そこまでの差別意識はないけど、ここ十数年gotoは使ったことない。
使う理由が見出せないだけだがな。もしgoto使った人間が近くにいたら、 理由を聞いて見たい、いや問い詰めたい気分がするのは間違いない。
- 607 名前:597 mailto:sage [2009/08/14(金) 22:48:52 ]
- >>604
呼ばれる頻度はたいしたこと無いと思います。 >>605 可読性はむしろ下がると思います。 >>606 ですよね、自分も他の人間が使っていたら是非聞いてみたいと思います。 やはり使わないのが無難という感じでしょうか。。。
- 608 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 22:57:04 ]
- 俺はそれほど気にしない派
しかし可読性が下がるのは戴けない 速度がよほど気になる場合以外は、可読性を取るべき
- 609 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 23:02:02 ]
- 末尾再帰したいけど最適化が保証されないからgoto使ったことあったかも
- 610 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:32:54 ]
- gotoでコンストラクタが1回避けられる状況ってほうが謎だ・・・
- 611 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 03:07:19 ]
- 条件演算子で避けられたりしないか?
- 612 名前:597 mailto:sage [2009/08/15(土) 08:12:23 ]
- ありがとうございます。
> gotoでコンストラクタが1回避けられる状況ってほうが謎だ・・・ 既に作ってあるオブジェクトを返せばいいっていう状況です。 ちょっとここのあたり(もしgotoを使ったら)スパゲティプログラムに突入します。 > 条件演算子で避けられたりしないか? さけがたいです。
- 613 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 09:10:29 ]
- >>612
ifとauto_ptrで回避できると思うんだがどうよ もっとも、実行速度にあまり影響ないなら分岐を避けたほうがいいかもね
- 614 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 11:44:18 ]
- VC++6.0をもってるんだけど、これで勉強すればいいのかなぁ?7.0とかあるの?
- 615 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 11:48:38 ]
- VC6は窓から捨てるべき
2008のExpressを使いなさい
- 616 名前:612 mailto:sage [2009/08/15(土) 12:51:19 ]
- >>613
newして得たオブジェクトでしたらauto_ptrを使うことも考えますが、そうではないのでこのまま分岐を避けようと思います。 >>614 VC6で勉強するのは、今現在は相当悪い選択肢だと思いますよ。 VC8かgccがオススメです。
- 617 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 12:56:27 ]
- >>614
特別な理由がなければ、VC++6.0より下記の製品のどれかの方が断然いいよ。全部タダだし。 Microsoft Visual Studio 2008 Express Edition www.microsoft.com/japan/msdn/vstudio/express/
- 618 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 13:06:23 ]
- >>617
dクス
- 619 名前:デフォルトの名無しさん [2009/08/15(土) 13:15:06 ]
- VC6は現行の標準C++じゃないと思ったほうがいい。
C++ライクなVC6独自言語だと思いましょう。
- 620 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 13:40:27 ]
- >>619
kwsk
- 621 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 14:02:26 ]
- コンストラクタで配列の要素数を自動で取得したいのですが...
TCHAR a[] = _T("123"); my_array<TCHAR> v = a; 見たいなことをやりたい 理想は、 my_array<TCHAR> v = _T("123"); だけどこっちはまあいいや
- 622 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 14:42:39 ]
- my_arrayが何かわからないけどこういうこと?
std::basic_string<TCHAR> v = _T("123");
- 623 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 14:45:04 ]
- こうですねわかります
template<typename T> struct my_array { template<std::size_t L> my_array(T (&a)[L]) { std::cout << "length: " << L << std::endl; } template<std::size_t L> my_array(T const (&a)[L]) { std::cout << "length: " << L << std::endl; } }; int main() { my_array<TCHAR> v = _T("123"); }
- 624 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 14:48:17 ]
- 次のコードをコンパイルすると、リンカがエラーを吐きます。
codepad.org/Lrswof7O 何処が悪いのでしょうか?
- 625 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 14:58:01 ]
- 変数の実体がない。
myclassスコープ外で int myclass::i=0;
- 626 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 14:59:28 ]
- >>622
ごめんクラスを作りたかったんだ >>623 おーすげーまさにそれです C++は奥が深い
- 627 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:24:21 ]
- >>624
実体を定義しろ。 C++ code - 23 lines - codepad ttp://codepad.org/XPEjNpOy これが正解。
- 628 名前:624 mailto:sage [2009/08/15(土) 19:38:06 ]
- >>625, >>627
ありがとうございます。そういうことなんですね。 これからもちょくちょくこのような初心の質問にあがると思いますが、どうかよろしくお願いいたします。
|

|