- 1 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 21:04:54 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part66 pc12.2ch.net/test/read.cgi/tech/1231640498/ ※part63, part66 が重複していたようですので part69 としました。
- 563 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 09:41:42 ]
- >>485って、例えば
class Person{ std::string name_; public: std::string *name() const { return &name_;} //A std::string name() const { return name_;} //B const std::string &name() const { return name_;} //C const std::string *name() const { return &name_;} //D }; みたいなのでAにするかBにするかってことだよね。 「とてもサイズの大きな」ってのが曖昧だけど、つまりコピーにコストがかか るものってことだろう。 つまり回答は>>490だな(C,D)。 もちろんクラスやメンバの意味が変われば>>486もあるだろうけど、頭ごなしに 「問題外」というのは何か勘違いや思い込みがあるのだろう。
- 564 名前:563 mailto:sage [2009/05/28(木) 09:43:56 ]
- ああ、constを打つクセが……
- std::string *name() const { return &name_;} //A + std::string *name() { return &name_;} //A
- 565 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 11:37:19 ]
- >>563
そうかな 俺も 「データメンバAがあったとき、それを扱うメンバ関数Bはどう作ればオブジェクト指向っぽいでしょうか」 という質問はおかしいと思う nameの例はあくまでnameがあってこそのname_でしょ?
- 566 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 11:42:58 ]
- nameっていっぱい書くとなめなめみたいでいやだよね
- 567 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 12:22:56 ]
- なるほどね
「とてもサイズの大きな」ってのが、そもそもおかしいよな。 大きかろうが小さかろうが、オブジェクト指向な振る舞いは同じはず。
- 568 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 15:32:14 ]
- 実用上の振る舞いに問題が出るだろう。
- 569 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 15:46:30 ]
- タイ米はたいて買ったのに
古米に違いが出たら 悲しいやね
- 570 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 16:51:43 ]
- うん
- 571 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 18:31:51 ]
- ふ、古米・・・
- 572 名前:デフォルトの名無しさん [2009/05/28(木) 21:12:43 ]
- (環境はcygwin) Blitz++のインストールエラーについて質問。
island.geocities.jp/v_no11/programing/Blitzplusplus.html のページに従ってBlitz++をインストールしようとしたんだけど、 cygwinの場合 "blitz-0.9"フォルダで以下を実行 $ ./configure $ make install の最後の行のmake install をコマンドしたら、 延々インストール文流したあとにエラー吐いて止まるのよ。 で、最後のエラー文をググったら、Blitz++のメールサポートページ www.oonumerics.org/MailArchives/blitz-support/2002/12/0599.php にたどり着いてどうやら俺と同じエラーみたいなんだけど、 回答者は「gccのバージョン古いんじゃねーのー?」みたいなことしか答えてない。 誰か分かるひといたら助けてくれ
- 573 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 22:24:39 ]
- cygwinのgccは3.45だっけ?
後何カ所止まるか想像もできないのに 全部この板で聞いて解決するつもり? 無駄な努力はやめてgccバージョンあげとけ。 あと質問の仕方の問題点について20字以内で述べなさい。
- 574 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 01:51:39 ]
- 環境依存で標準C++に何の関係もない。スレ違い
- 575 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 05:03:48 ]
- Effective C++を買おうと思うんだが、原著三版ってやつで大丈夫?
- 576 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 05:50:52 ]
- >>575
俺はそれ買ってみた。 とても良かった。
- 577 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 07:09:15 ]
- vsいれたほうがいいんちゃうんかと
- 578 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 13:43:45 ]
- じゃあ原著vs三版買うよ
改訂2版とか言うのがあるから、どっちにしたらいいのか迷ったんだけど 発売日で比べりゃ一目瞭然だったわ サンクス
- 579 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 14:37:17 ]
- 俺は両方買った
というか最初改訂2版しかなくて買ったら次本屋に行ったら 第3版があって俺涙目orz
- 580 名前:デフォルトの名無しさん [2009/05/29(金) 21:23:58 ]
- Visual C++ 入れたいんだけど、Express Editionてやつだと
インスコ先にDドラ指定してもCドラを800MBぐらい食うのよ(今Cドラは1.5GBぐらいしか空きない) スリム版みたいなのってないんですかね
- 581 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 21:59:08 ]
- ないよ
- 582 名前:デフォルトの名無しさん [2009/05/29(金) 22:00:41 ]
- ぽいね
- 583 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:01:49 ]
- Cドライブを空けろ
- 584 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:14:07 ]
- 新しくプロジェクトを作った後ソースやヘッダファイルを丸々コピーしてフォルダに移した後、既成項目の追加をして同じものを作ったつもりなのですが
アプリケーション更生が正しくないためアプリケーションの開始に失敗しました マニフェストファイルを参照してエラーの原因を調べてください と出ます、何がおかしいのでしょうか?DXUTを使っています
- 585 名前:デフォルトの名無しさん [2009/05/29(金) 22:14:46 ]
- 了解、といっても残り1GBからCCleanerかけてやっと1.5GBなんだよね・・
正直もう消すものないんだけどね 使ってない付属ソフトでも消そうかな・・・ 答えてくれた人ありがとう!
- 586 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 22:25:14 ]
- >>585
Dドライブには空きがあるのなら、 ジャンクションやシンボリックリンク使ってDドライブにファイルを移せばいい。
- 587 名前:デフォルトの名無しさん [2009/05/29(金) 23:20:46 ]
- >>586
ジャンクションやシンボリックリンクって もしかしてXPだと無理? ググったらなんかVistaで使用可能とかでてきたんだけど
- 588 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:37:05 ]
- マウントのことなら別にWindows 2000でも出来てたが。
- 589 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:57:22 ]
- d.hatena.ne.jp/sona-zip/20080514/
- 590 名前:デフォルトの名無しさん [2009/05/29(金) 23:59:50 ]
- 00?
- 591 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 00:11:10 ]
- >>587
たしかできるはずー EeePC901で容量稼ぐためにがんばったことがあった
- 592 名前:デフォルトの名無しさん [2009/05/30(土) 00:57:10 ]
- 今、フリーのBCCでWindowsのコンソールのプログラム書いてたんだが、
アラインメント関係がわからない。 とりあえず、現状を書くとある大きい処理がmain関数中に埋まってたんだが、 やたら遅いから(まぁ、処理量もあるんだが)なんとなく関数化してソースの先頭に 移動させたら早くなって、アラインメントが原因だと思うんだ。 で、ものとしては for(i = 0; i<32*32*32; i++)for(i2 = 0; i2<32*32*32; i2++); だけなんだが、原因は何だろう? (関数の位置なのか、変数の位置なのか。 アラインメントがどのように影響するか分からないので、 どの辺に注意したらいいかおしえてほしい) へたくそな文章でごめんなさい。。。分かる人お願いします。
- 593 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 01:26:05 ]
- 本当にアラインメントなのか?
map出力して確かめてみたらどうよ(bcc32なら-M)
- 594 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 01:49:07 ]
- >関数化してソースの先頭に
>移動させたら レジスタ割付されただけじゃねーの
- 595 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 03:11:59 ]
- このスレに書くべき話題かどうか分からないのだが、static_castってかなり誤解を受けてない?
俺もいくつかの入門向けサイトを見て「暗黙の変換を明示的に書くというだけの意味しかないのかな?」 と勘違いしていたが、実際には暗黙の変換が認められないいくつかのケースでもstatic_castができる。 このことってどれくらい知られてるんだろ。
- 596 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 03:20:57 ]
- そうかな?俺はdynamic⇔staticで対称になってて
static_castはコンパイル時にキャストに問題がないか判断するもの、って覚えてたが むしろ「暗黙の変換を明示的に書く」って解説してるサイトがあるのか? それは問題がある解説に見えるなぁ
- 597 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 03:24:33 ]
- 自分は、static_castで可能なのは暗黙の変換とその逆向き、そしてユーザ定義変換と覚えていた。
- 598 名前:595 mailto:sage [2009/05/30(土) 03:25:48 ]
- うーん、改めて見てみると、俺が初心者時代に変な思い込みしただけかもしれん。まあいいや。
- 599 名前:デフォルトの名無しさん [2009/05/30(土) 08:16:34 ]
- (なんかVC++から派生してC++の話と離れてきてる感じですいません・・・)
ttp://www.forest.impress.co.jp/article/2008/12/11/linkshellext.html ここによると、 >また、本ソフトは“ジャンクション”や“ハードリンク”なども作成可能。 >Windows Vistaでは多くの場合、シンボリックリンク以外を利用する必要はないが、 >Windows XP以下のバージョンのWindowsではシンボリックリンクが利用できないので、 >これらで代用しよう。 ってあるからシンボリックリンクはだめだけどジャンクションはいいみたいです で、つまりCドラのファイルをDドラに移して、CドラにはDドラの移転先へのリンクだけ残しておけばいい みたいな感じでいいんでしょうかね?
- 600 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 09:47:49 ]
- std::vector<double> a;
std::vector<double> b = a; この場合って、 コピーコンストラクタが呼ばれるのか、代入演算子が呼ばれるのか コンパイラによって違うんだっけ? どこかに書いてあった気がするんだが忘れてしまった。
- 601 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 10:01:08 ]
- >>600
必ずコピーコンストラクタ。
- 602 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 10:01:48 ]
- const_cast…cv修飾子を除去するのに使う。
reinterpret_cast…ポインタと整数型の変換に使う。 dynamic_cast…略。滅多に使わず事足りる。 static_cast…以上3つ以外 っていう認識でいるわ。
- 603 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 10:04:10 ]
- >>600
カンチガイしているな std::vector<double> a;//デフォルトコンストラクタ std::vector<double> b = a;//コピーコンストラクタ これらは「新しいオブジェクトを作る(construct)」なのだから 呼ばれるのは両方ともconstructor。 そして呼ばれるのは当然 前者はデフォルトコンストラクタ、後者はコピーコンストラクタ。 一方、 std::vector<double> x;//デフォルトコンストラクタ このとき x=b; としたら、これは新しいオブジェクトを作るわけではないのだから 代入演算子operator = が呼ばれる。
- 604 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 10:15:58 ]
- >>601,603
ありがと!
- 605 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 15:07:01 ]
- >>602
君はキャストしない方がいい。いつか死ぬ。
- 606 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 15:15:03 ]
- >>605
どこが間違い?
- 607 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 15:27:56 ]
- >>606
>>605ではないが、禿本のキャストに関する部分を読んでこい。
- 608 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 15:40:16 ]
- >>607
禿本持ってないが、今度勉強してみるわ。 んで >>605さん、>>602のどこが間違い?
- 609 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 15:49:27 ]
- dynamic_castを多用するようになってきたら設計ミスを疑った方がいい。
- 610 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 15:53:01 ]
- 俺はクロスキャストの時だけdynamic_castを使っているけどな
- 611 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 15:54:56 ]
- やむを得ない場合もあるけど、クロスキャストを多用するのも以下略
- 612 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 15:58:07 ]
- クロスキャストは仮想関数では解決できないだろ
- 613 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 15:59:31 ]
- そういう状況が多数生まれる時点で糞設計ってことを言いたかったんだけど。
- 614 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:04:06 ]
- 誰も「多数」とは言ってないわけだが
- 615 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:07:31 ]
- >>614
>そういう状況が多数生まれる の多数ってのは >クロスキャストを多用する の意味なんじゃないの? なんで分からないの?w
- 616 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:22:24 ]
- 全くの初心者でお聞きしたいんですが、C++の講義ではTurboCというソフトを使って講義が進められるのですが
自宅のPCで同じことをするにはどういったソフトを使えば良いのでしょうか? 講義も全くわからずコンパイルという意味も全くわからずソフトを探すこともままなりません。どうかご教授ください。
- 617 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:22:51 ]
- 誰もクロスキャストを「多用する」とは言ってないわけだが
- 618 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:26:17 ]
- >>617
は>>612と同一人物? そうだとしたら、>>612は誰に対するレス?
- 619 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:27:30 ]
- 何一人でエキサイトしてんの?
- 620 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:30:20 ]
- >>619
お前は誰に対するレス? 安価つけてくれ、分からないから。
- 621 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:32:15 ]
- >>620
断る それ位自分で見抜け
- 622 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:34:06 ]
- >>621
いや、それを明らかにしておかないと、 俺が論破してもはぐらかされるだろ。 そういうヤツが多すぎるから、はっきりさせないと不毛な書き込みになる。
- 623 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:34:32 ]
- 初めから不毛だと気づいてないのかこの馬鹿は
- 624 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:36:34 ]
- 2chで議論すること自体不毛だよな。
- 625 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:41:11 ]
- まあせめてID付きの板でやるとか、コテハン付けるとかね。
- 626 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:44:20 ]
- >>622
顔真っ赤
- 627 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:47:07 ]
- >>626
鏡見て言ってるんだよね?
- 628 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:02:09 ]
- 鏡?ディスプレイで十分なのに鏡?なぜに?
- 629 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:02:51 ]
- dynamic_castよりconst_castやreinterpret_castの方が多用したらまずいと思うんだけどどうだろうか
const_castなんかいまだに使いどこがわからん
- 630 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:08:12 ]
- const_castはsetの要素を変更するのに使う
- 631 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:09:15 ]
- >>630
そりゃまずいんじゃね? 木構造が壊れそうだが
- 632 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:18:40 ]
- >>629
const_castを使う主なケースは、糞なCのライブラリ関数の引数に constな変数を渡すときだな。例を挙げるとこんな感じ。 void stupid_func(char *filename); // prototype void Foo::some_method(const std::string& filename) { stupid_func(const_cast<char*>(filename.c_str())); }
- 633 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:22:24 ]
- >>631
もちろん比較に影響及ぼすような変更はダメだぞ 構造体とかを入れたsetで、メンバの一つをキーに使ってるような場合があるだろう そういう時にキー以外のメンバを変更するために使う
- 634 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:30:54 ]
- >>632
なるほど、ライブラリに渡すときなんかに使うのか いくら糞でもライブラリ側を修正するわけにいかないもんな
- 635 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:55:27 ]
- volatile、組み込みでは見かけるがそれ以外では見かけたことがないんだが
おまいらはvolatileってどんな時(除く組み込み用途)使っている? あと、const_castでvolatileを取るとる時ってどんな時?
- 636 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 17:55:44 ]
- >>633
俺はそういうのはmutableでやるなぁ。 const_castでやると、keyも含めて全て変更可能な「状態」になってしまうし。
- 637 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:09:49 ]
- >>583
aliceとかいう名前の開発ツールがたくさん入ってるから_
- 638 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:27:09 ]
- >>635
デバイスドライバを書く時には当然使う必要あるよね。 あとは、インラインアセンブリでローカル変数を上書きする時とか。 こんなことめったにやらないが。
- 639 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 18:48:24 ]
- >>636
mutableにすると、本当にキー以外もconstにしたいときに困るだろう あくまでsetに入れたときの制約であって、そのためにmutableにするのは乱暴すぎる
- 640 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:11:35 ]
- キーがあるようなのはmapを使うなぁ
setの要素を変更とかやったことないな 今度やってみるか
- 641 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 21:11:30 ]
- >>635
VC++ではマルチスレッド対策の効果を独自に付加している。 msdn.microsoft.com/en-us/library/12a04hfd.aspx Unixだとマルチスレッドでvolatileなんて使うなボケらしいが。 const_castで外したくなる状況は分からない。
- 642 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 22:40:15 ]
- 誰も答えてやらない>>616のために
Visual C++ Express Editionでぐぐれ
- 643 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 22:44:10 ]
- Visual C++ Express Editionを知った後にTurbo Cを使うなんて、、、地獄だ。。
- 644 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 22:45:14 ]
- >>638, >>641
どうも、ほとんどアプリ系じゃ使わんということですな >>641 の例じゃ普通はmutexやクリティカルセクション使うんじゃないの それでvolatileを使うメリットがよく分らん,orz. コードが簡単になるがメリット?
- 645 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:24:24 ]
- Effective C++でconst_castはoperator[]の定義で使うことがあるみたいに書いてあったよね?
ttp://ritaz.blog64.fc2.com/blog-entry-66.html より引用。 class sample { public: ...; const char& operator[](unsigned int position) const { ...; return dat[position]; } char& operator[](unsigned int position) { return const_cast<char&>(static_cast<const sample&>(*this)[position]); } ...; };
- 646 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:32:43 ]
- >>645
blogにも書いてあるが、やりすぎな工夫の一例だな
- 647 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:44:12 ]
- >>644
どちらかというと、そういう排他制御の仕組みを自分で作るときに使う。 例えば下のコードをコンパイラが最適化した結果、 ロック確保する前や解放した後にhogeへ読み書きするコードが生成されたらシャレにならない。 MS仕様では、volatileなデータに読み書きするとそこを境界として、それより前後に読み書き処理が ずらされないように最適化を抑えると言っている。 void f(hoge_t* hoge) //hogeを使うには排他制御でロックが必要とする { // ... ロック確保 hogeを使う ロック解放 // ... }
- 648 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:48:16 ]
- >ロック確保する前や解放した後にhogeへ読み書きするコードが生成されたらシャレにならない。
意味が分からん。 最適化によって、「hogeを使う」に相当するコードが、「ロック確保」の前や「ロック解放」の後に配置されたらシャレにならないってこと?
- 649 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:50:52 ]
- >>648
ああ、ごめん。そういうこと。 携帯から打つのが面倒でいろいろ略した。
- 650 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:34:14 ]
- >>642
ありがとうございます。探してみます。
- 651 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:44:58 ]
- >>645
それ第何版の何節に書いてあるの?
- 652 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 01:30:20 ]
- >>644
そういう用途にも使えるってだけでWindowsでもマルチスレッドでvolatileなんて使わない mutexなりクリティカルセクションなりInterlocked-系関数なり使えばそこでフェンス張られるし (Interlocked-系関数でvolatile使われてるけどね。間接的には使うことになるのかな) やっぱり組み込みとかドライバ以外で使うことはないと思うな
- 653 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 17:24:40 ]
- >>647, >>652
どうも、どうも >>647 >そういう排他制御の仕組みを自分で作るときに使う ずばり、自分でそういう仕組みは作ることないです
- 654 名前:645 mailto:sage [2009/05/31(日) 20:04:50 ]
- >>651
忘れた。 原著第3版に書いてあった。 確か、最初の方の章に。
- 655 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 21:20:51 ]
- 改訂2版にはどこにも書いていないんだが、
第3版には本当に書いてあるのか? 第4版まであと2年はかかりそうな気がするし、 第3版買ってくるか・・・
- 656 名前:645 mailto:sage [2009/05/31(日) 21:28:28 ]
- >>655
第3版には本当に書いてある。 厳密に同じコードかどうが覚えてないが、 const版をnon-const版にて呼び出してconst_castでconst属性を外す という方式であることは本当。 俺もそんなことして良いの!?と思ったから信じられなくても無理はない。
- 657 名前:645 mailto:sage [2009/05/31(日) 21:31:01 ]
- わざわざ引っ張ってきて確かめみた。
原著第3版(日本語翻訳されているもの)で 15ページから始まる項目にある。
- 658 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 21:48:18 ]
- 2版の21項「使えるときは、必ずconstを使おう」に
対応するんじゃないかなと思うけど、 そこではmutableをサポートしてないコンパイラのための苦肉の策として 「みっともないけど」と前置きした上でconst外しをしている。 これのことじゃないよな?
- 659 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:06:17 ]
- >>658
じゃないってば。 少しは俺を信じろ(笑) 他の人も誰か証言してくれ。
- 660 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:08:18 ]
- ようやっと見つけたが、
さっぱり読めなくて意図が分からん。 books.google.co.jp/books?id=d-2Im_Ox7qMC&pg=PA24&as_brr=3&source=gbs_toc_r&cad=0_0#PPA41,M1 俺の英語力も落ちたな・・・
- 661 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:10:32 ]
- ああ、これって王家の血を引く者にしか読めないよ
- 662 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:10:40 ]
- >>659
すまんwww 明日買ってくる。
- 663 名前:645 mailto:sage [2009/05/31(日) 22:12:21 ]
- >>660
メンバ関数foo()のconst版とnon-const版の定義が 同じようなものになることは多々あるじゃない。 同じような定義を繰り返し書きたくない、そんなあなたにconst_cast って言うような主旨。 const版をうまく定義することで、non-const版の定義は それを呼び出してconst性を除去するだけ で良くなる。
|

|