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


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

C++相談室 part112



1 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 09:00:48.11 ID:4p3tjfYN]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part111
toro.2ch.net/test/read.cgi/tech/1393539884/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.90【環境依存OK】
toro.2ch.net/test/read.cgi/tech/1395675954/

次期規格C++1yはこちら
C++14/C++1y
toro.2ch.net/test/read.cgi/tech/1382889622/

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/

【重要】
hogeは禁止です。使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。

623 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 15:28:26.29 ID:qBdg6XNI]
Class * a=new Class2();
Class * b=new Class3();
この状態でaとbを*a==*bで比べたいんですよ。
ここでClass2とClass3の==の定義は
void operator==(Class a,Class b);
になるとおもうんですけど、
基底のClassの部分しか見えないから比べようがないですよね。

624 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 15:35:41.23 ID:/174+P6q]
dynamic_cast

625 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 15:57:44.70 ID:BIei0SY0]
Classの仮想メンバ関数にvirtual bool equals(Class const& other) const;でも定義して子クラスのequalsでdynamic_castすればいい
後はフリー関数にClass const&を二つとるような比較関数でも作ってラップしたらいい

626 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 18:00:02.01 ID:zHXgCe3L]
>>618
> 2つ以上のコンテキストから呼ばれる場合に破綻する

どういう意味?

627 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 18:05:41.35 ID:zHXgCe3L]
>>622
だね、フラグかカウンタかの違いしかないと思う。

あと、変更するメソッド呼ばれたけど、値自体は変更しなかった (今の値と同じ値を書き込んだ) 場合は変更と見なすの? それとも、無変更? ⇒ >>606

628 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 19:03:35.75 ID:BIei0SY0]
>>627
>>612とあるので内部状態が同じなら無変更とみなすのだろうし、それならequals()のようなメンバ関数を作ればいい

629 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 19:16:06.95 ID:HfTaDQys]
>>627
変更を内部フラグで知るなら必ずその「フラグをクリアするメソッド」が存在するわけ
一方の利用者が変更をチェックしてそのフラグをクリアするともう片方の利用者は変更を知ることができない
だからそのクラスの利用者が一人であればフラグでいいけど、アルゴリズムとしては全然違う

630 名前:デフォルトの名無しさん [2014/05/19(月) 19:17:47.65 ID:WTOS6QfZ]
いいから黙ってメッセージかコールバックによるイベントパターン使えよ
悩むようなところじゃない

631 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 19:27:05.41 ID:HfTaDQys]
>>623
operator==(Class a,Class b) を定義するなら基底のClassだけで比較できなきゃおかしいじゃんよ



632 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 19:51:58.60 ID:BIei0SY0]
参照で引数とればスライシングされないからどうとでもなる
ttp://melpon.org/wandbox/permlink/AP8ONiXSVGQMLYER

633 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 20:05:23.84 ID:wR4uca6O]
> aが定義された直後にaのポインターaの指し示すClassの実体を別の場所にコピーしておいて
> 更新されたか調べるときにそれと比べることはコピーに時間がかかるのでできません。

こう書いてあるから==やequalsは相応しくないよね。

634 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 20:10:30.04 ID:BIei0SY0]
>>612,>>623とあるから等値比較が出来れば足りるんじゃないかと思ったんだけどそうでもないのかなあ

635 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 20:11:15.92 ID:HfTaDQys]
>>633
つか ID:qBdg6XNI は自分のやりたいことがわからなくなってるか釣りだと思えてきた

636 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 20:27:27.86 ID:9mfdpPTy]
>>634
ホントだw
比べたいとか言ってるの見逃してたw

>>635
そもそも、今回の話どこが一番臭いかっていうと、
「コピーに時間がかかるのでできません」って部分だなw
リアルタイム性というわけでもなさそうだから、
どんだけクソデカイクラスになってんだよって予感。

637 名前:デフォルトの名無しさん mailto:age [2014/05/19(月) 20:40:31.80 ID:u0kYoYP8]
静的なポインタってある?
なんかイメージ出来ない

638 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 22:26:12.91 ID:rJXEGLj9]
>>636
単なるコンテナってこともあるかも

639 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 22:29:47.82 ID:mLyDgbnZ]
>>35
このスマポという奴を使う場合
ud[n][2]の2のほうも変数にする方法は有りますか?

640 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 22:33:10.57 ID:mLyDgbnZ]
投稿先639間違えました

641 名前:デフォルトの名無しさん [2014/05/19(月) 23:05:31.75 ID:0GDAGnvz]
>>637
static int a[10000];
int *p = a;



642 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 23:13:45.98 ID:uxNA84mc]
>>637
シングルトン

643 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 23:59:41.23 ID:R0sc+CFe]
>>628
> >>612とあるので内部状態が同じなら無変更とみなす

なるほど、純然に内部状態で判断するのか

> それならequals()のようなメンバ関数を作ればいい

データがでかいとかで比較が大変なんだろ。
高速化の手法は色々あるだろうけど、データ構造見ないとなんとも言えないな。

644 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:01:06.13 ID:qEC6acDv]
>>637
const char* p = "static";

645 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:03:32.07 ID:bpam5xUn]
>>629
ハッシュ計算するのはいいけど、なにと比較するんだ?
そして、その比較対象の値をいつ設定して、いつ更新すべきかを考えてごらん。
自分がどんだけアホなこと言ってるかわかるから。

646 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:07:51.25 ID:94D84veD]
>>645がかわいそうだから相手してあげて!

647 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:07:52.06 ID:qEC6acDv]
>>641
a→b→c→b→a
って推移して現在の状態が「a」のとき、比較対象は最初のaかもしれないけど2番目のbであることもあるんだよね?

648 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 00:43:06.04 ID:ROp5ZExO]
>>646
アホは要らんよ (w

649 名前:デフォルトの名無しさん mailto:sage [2014/05/20(火) 01:46:10.92 ID:isLDQHzO]
std::shared_ptr::operator==とかでよくね?






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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