[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/13 19:22 / Filesize : 243 KB / Number-of Response : 945
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part69



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 としました。

541 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 12:26:20 ]
ところで、メンバ変数をpublicにおく場合ももちろんある。
議論の冒頭、>>499はちゃんとそういう例外事項があることを認めている。
C++ Coding Standardsの第41項でも例外事項を設けているし、
setとgetの功罪(設計の過ち)についても言及している。

だから、「原理主義」でくくるのは議論の前提を無視している。

542 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 12:36:27 ]
C++ Coding StandardsはC++関係の本の中でも厚さが特に薄い本だが
内容は濃いな

543 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 12:54:51 ]
wikipediaのメソッドの記事にアクセサ論争って項目があるんだな
やっぱ昔から争ってる内容なのか

544 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 13:34:11 ]
boost::arrayはpublicにメンバ変数を置いてるけどなぁ・・・。
これもだめなのか?

545 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:18:29 ]
安全性を重視するか、高速性を重視するかは、設計者に委ねられてる
どっちが正解とかいうものではない

546 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:31:38 ]
ときどき「高速化するため」といって安全性をスポイルすることを正当化する人間が出てくるが
そういう人間もCoding Standardsを読むべきだな。
高速化が正当化されるには「時期」があることが説明されている。
アジャイルプラクティスとかもあわせて読んでおきたい。

547 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:59:17 ]
性的な意味で

548 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 18:00:17 ]
>>544
PODにするためだから仕方ない

549 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 22:36:05 ]
>>545
だから詳しく知らないなら断言するなよ。

getter/setterの速度がどうとか言ってる奴は
議論に参加する資格すらないから。



550 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:07:33 ]
なんじゃこりゃ。
>>485の質問からなんでこんな流れになるのかさっぱりわからん。
ここは聞かれてもいない知識をひけらかす似非回答者たちのオナニー相談室ですか?


551 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:07:56 ]
はいそうです

552 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:25:57 ]
>>550
申し訳ありません。
ここは質問に淡々と答えるだけの
ボランティアたちによる慈善スレでした。
以後気をつけます。


でいいですか?

553 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:31:45 ]
結局 >>485 に対する解答が1つも見当たらないんだが…
そもそも質問には、public なんて単語すら全く出てきてないよ?

>とてもサイズの大きなメンバ変数があったとき、
>「そのメンバ変数のポインタを返すようなメンバ関数を作る」か、
>「そのメンバ変数のコピーを返すようなメンバ関数を作る」か、
>どちらがオブジェクト指向としてはよろしいのでしょうか?

結局どうすればいいのよこれ?俺も知りたいよ

554 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:40:02 ]
たぶん、オブジェクト指向の観点からは「どうでもいい」。
実際には実行速度とかconstnessとかあるだろうが、オブジェクト指向の問題ではないかと。

555 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:50:44 ]
え、まじでいいの?
質問者の書き方だと、その巨大なメンバ変数は外部からは readonly にしたいんだと思うけど、
ポインタを返すと write できちゃうってのはオブジェクト指向からすると問題なんじゃないの?
俺の理解不足なのか…すまない

556 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 01:08:45 ]
問題な事もあれば問題でない事もある。全てのパターンに付いて書いていたらきりがない。
その場その場で最も適当(若しくは、それなりに妥当)な方法を選ぶのがC++。

557 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 01:12:23 ]
なるほどね

オブジェクト指向的には値を返すべきだが、
実行速度が必要な場合などは、オブジェクト指向に捕らわれるよりも処理速度を優先させてもいい

的な答えだと思ってた。そうでもないのか。さんきゅー。

558 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 01:19:01 ]
以後、大きなサイズのメンバ変数を持っているクラスをA、メンバ変数をaとする。
1. 本当にaを外部に晒す必要があるのかよく考える。
2. Aに処理を任せられないかよく考える。
3. Aの名前を変えてみて、やっぱりAに任せられないかよく考える。
4. aの要素をすべて晒す必要があるのかよく考える。

それでもだめなら、

返却するメンバ変数も安全に作られているなら、
constのポインタか参照を返すようにすればそれで十分。
呼ばれるたびに新たなオブジェクトの生成が必要なら躊躇せずコピーする。

悪意あるプログラムから保護する必要がある場合も躊躇せずコピーするが、
たいていはそれだけでは不十分だと思われ。


90点回答だ。おまいらひれ伏せ。
異論はオカマ言葉で行うこと。

559 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 01:23:50 ]
>>558
あたしの身体はひれ伏してるのに、あたしの息子が……どうしてくれんのよ! もう!



560 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 07:46:40 ]
>>553
>>486が答えだろ
それ以降は雑談

561 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 09:38:38 ]
参照するだけで値はいじらせない参照ができればいいんですよね
イテレータ的なものを使うという案は出ていないようですが
この方法はそれほどスマートな解決策ではないということでしょうか

562 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 09:40:03 ]
えっと、参照するだけで値をいじらせないなら、const参照を使えばいいわけだが。

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で外したくなる状況は分からない。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<243KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef