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


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

C++上級者が集まるスレ



1 名前:デフォルトの名無しさん [04/09/14 07:16:41]
ここでは他のC++スレよりもより一層と高いレベルでの情報交換・体験談などを行うスレです。
我こそはC++プロフェッショナルだという方の書き込みをお待ちしております。


481 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 20:05:54 ]
>>480
だめみたい。
thisをつけると、const class fib<normal> has no member named call_meっていわれちゃう。
templateのしたクラスのcall_meを呼んでくれないみたい

482 名前:デフォルトの名無しさん mailto:sage [2005/11/04(金) 21:11:50 ]
>>481

class fib : Fix<fib>
=> class fib : Fix< fib<Fix> >

これで、
ttp://www.comeaucomputing.com/tryitout/
のコンパイラでは通った。

483 名前:デフォルトの名無しさん mailto:sage [2005/11/05(土) 07:47:56 ]
>>482

gccでは通らないぽい。どこがおかしいのやら

484 名前:デフォルトの名無しさん mailto:sage [2005/11/05(土) 23:54:35 ]
template <template <class> class Fix>
class fib : protected Fix< fib<Fix> >

だな。public継承でもいいけど。
要はダウンキャストもprivate継承ではできない

485 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 07:39:13 ]
typedef Fix<fib<Fix> > ct;

…ct:call_me(…

486 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 09:47:16 ]
>>484
>>485
サンクス。できました

487 名前:デフォルトの名無しさん mailto:sage [2005/11/06(日) 10:38:13 ]
COMについての質問はここでいいですか?

488 名前:487 mailto:sage [2005/11/06(日) 18:13:45 ]
自己解決しました

489 名前:デフォルトの名無しさん [2005/11/07(月) 11:50:43 ]
ポインタの静的型と、仮想関数の振る舞いについて教えてください。

struct A { virtual void f(); };
struct B { virtual void f(); };
struct C: public A, public B {};

C* pc = new C;
pc->f(); // (1) A::f() と B::f() のどちらか分からないのでコンパイルエラー
A* pa = pc;
pa->f(); // (2) A::f() がコールされる
B* pb = pc;
pb->f(); // (3) B::f() がコールされる

struct D: public A, public B { virtual void f(); };
D* pd = new D;
pd->f(); // (4) D::f() がコールされる
pa = pd;
pa->f(); // (5) D::f() がコールされる
pb = pd;
pb->f(); // (6) D::f() がコールされる
struct C の仮想関数テーブルの f() のエントリはどうなっているのでしょう?
派生クラスが仮想関数をオーバライドしない場合、このエントリは基底クラスの
関数ポインタがそのままコピーされると思います。しかし、A::f と B::f のど
ちらを採用すべきかコンパイル時に決定できないはずです。
ところが上記(2)のように、動的型が struct C であっても、静的型を struct A
とするとコンパイルが通り A::f() がコールされます。動的型の struct C の仮
想関数テーブルの f() のエントリは決定できていないはずなのに、何故 (2)(3)
のような呼び分けができるのでしょう?
実際 struct D のように f() をオーバライドすると、静的型に関係なく動的型
の仮想関数がコールされるので、f() のエントリは1つだと思うのですが。
どういうカラクリになっているのでしょう?



490 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 12:12:19 ]
>>489
「fのエントリは二つあって、Dでは両方が同じ関数を指している。」という実装しか思いつかないな。
調べてみる。

491 名前:デフォルトの名無しさん mailto:sage [2005/11/07(月) 13:12:52 ]
#include <iostream>
#include <cassert>
struct A { virtual void f(){ std::cout << "A::f\n";} };
struct B { virtual void f(){ std::cout << "B::f\n";} };
struct C : A, B {};
struct D : A, B { void f(){ std::cout << "D::f\n";} };
int main(void) {
  C c;
  D d;
  A *pca = &c;
  B *pcb = &c;
  A *pda = &d;
  B *pdb = &d;
  typedef void (*pfun_t)();
  pfun_t pcfa = **(pfun_t **)pca;
  pfun_t pcfb = **(pfun_t **)pcb;
  pfun_t pdfa = **(pfun_t **)pda;
  pfun_t pdfb = **(pfun_t **)pdb;
  pcfa();
  pcfb();
  pdfa();
  pdfb();
  assert(pdfa != pdfb);
}
結果(g++-mingw):
A::f
B::f
D::f
D::f

よって、C/D共にfには二つのエントリがあって、
Dの場合は、二つの異なるD::fのラッパが入っていると判る。

492 名前:デフォルトの名無しさん [2005/11/09(水) 00:29:56 ]
Pentium4にやさしいプログラミング手法を教えてください

493 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 03:52:17 ]
>>492
C++じゃなくてアセンブラになっちゃうけど消費電力を抑える為に halt や nop を多用するのがいいと思うよ。

494 名前:デフォルトの名無しさん [2005/11/09(水) 04:40:12 ]
__asmでnopを入れればいいのですか?

495 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 05:17:38 ]
>>494
アホを真に受けるなよw
ったく知ったかぶり君は迷惑だよね。


496 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 06:54:19 ]
>>495
もし>>493を知ったかぶりと思っているなら
お前の日本語読解力の方がずっとアホだと思うよ。

497 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 08:19:55 ]
>>492
ifは極力使わない。
forをつかえ。


498 名前:デフォルトの名無しさん mailto:sage [2005/11/09(水) 09:21:08 ]
for(int i = 0; condition && i < 1; ++i){
.....
}


499 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 04:55:32 ]
BOOLよりboolを使ったほうが処理速度が速くなるっていうのは本当ですか?



500 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 05:05:31 ]
いいえ、それだけの情報ではなんともいえません。

501 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 05:13:00 ]
BOOL(4バイト)とbool(1バイト)のことです

502 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 06:30:30 ]
うがー、それだけの情報ではなんともいえません。

503 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 06:55:30 ]
環境によって違うということですか?
vc7.1でコンパイルしたんですが
win2000です

504 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 07:51:15 ]
>>499
>>503
BOOLかboolかで速さが違うかどうかはわからないが、
BOOLはintのtypedefで、boolはC++組み込み型だからbool(true/false)を使う方がよい。

505 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 07:58:03 ]
なるほど、そうなのですか
ありがとうございました

506 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 08:25:29 ]
BOOL は真偽値じゃない
とりあえずMSDN行って GetMessage()の戻り値見てくれば解る
あんな代物とbool型を同一視したら相当痛いミスを連発することになる。
MSのAPIの引数と戻り値以外には使わないほうが良い。

さらにsizeof(bool)は1と決まっているわけじゃない。
コンパイラによってはsizeof(bool)==4の場合もある。

507 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 08:51:22 ]
ただ、現実問題として、boolは0/1しか取らないから
整数型やポインタ型の値をboolに代入しようとすると、若干の演算が必要になる。

例えば、戻り値が0か0以外かが判定できれば良いだけの場合でも
int型の関数だと return n; で足りるところを
bool型の関数にすると return n != 0; に相当するコードが必要になる。

そのため、VC++では最適化の警告が出せるようになっている。

508 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 09:55:29 ]
>>501
普通、bool はintと同じサイズ( =BOOLと同じサイズ )になるぞ。

509 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 10:05:22 ]
「普通」の意味がわからんが、BCB6ではintが4でboolが1だな。



510 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 10:18:26 ]
>>509
アレ? borland でもデフォルトでは bool は int と同じサイズだったと思うが・・・
bool を1バイトにするっていうコンパイルオプションが指定されてない?

511 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 10:28:00 ]
boolを使うと、ビットセット系のニモニックが生成されて分岐が省略できる可能性もある。
>507が指摘したケースだと、どうせ呼び出し側でも判断が入るから二重ロジックに成るかも知れんが、
inline関数なら逆に呼び出し側を巻き込んで最適化されるから同じことだね。

512 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 10:49:04 ]
っていうかboolの実装って普通0か1のどちらかっていう判断してる?
俺は0(false)か、0以外の全て(true)のどちらかっていう判断だと思った。
void Hoge(bool hoge)
{
  if (hoge == true) {}
}

みたいな時、hoge != false(0) としてのコードを吐くのが普通じゃないの?
だからこそ我々はC時代のように
"BOOLVAR == TRUEと書いてはいけない。BOOLVAR != FALSEと書け"
みたいなルールに縛られず boolvar == true っていうコードも合法になるもんだと思ってたんだけど。

513 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 14:20:37 ]
>>507
> ただ、現実問題として、boolは0/1しか取らないから

trueかfalseです。!に対してそれぞれが逆元。
integral promotionがあるとそれぞれ1と0になる。

ちなみにここは上級者スレです。

514 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 16:08:18 ]
>>508
実装依存ということは承知してるが、
GCC4 も VC7.1 も sizeof(bool)==1 なわけだが。
こんなのも。
ttp://gcc.gnu.org/ml/gcc-bugs/2001-07/msg00186.html

それと、bool より BOOL を(パフォーマンスの理由で)
推奨してる環境もあるにはある。個人的には嫌だけど。

515 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 17:33:35 ]
>>512
>boolvar == true っていうコードも合法になるもんだと思ってたんだけど。
合法ですが、間抜けです。

516 名前:デフォルトの名無しさん mailto:sage [2005/11/10(木) 19:57:32 ]
>>514
Microsoft Specific
In Visual C++4.2, the Standard C++ header files contained a typedef
that equated bool with int. In Visual C++ 5.0 and later, bool is implemented
as a built-in type with a size of 1 byte. That means that for Visual C++ 4.2,
a call of sizeof(bool) yields 4, while in Visual C++ 5.0 and later,
the same call yields 1. This can cause memory corruption problems
if you have defined structure members of type bool in Visual C++ 4.2
and are mixing object files (OBJ) and/or DLLs built with the 4.2 and 5.0 or
later compilers.

ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclang/html/_langref_bool.asp

517 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 00:51:31 ]
>>514
最近は sizeof(bool)==1 が主流なのか。知らなかったお。(^ω^)

>それと、bool より BOOL を(パフォーマンスの理由で)
>推奨してる環境もあるにはある。個人的には嫌だけど。

それもちょっと微妙だね。sizeof(bool)==1 な処理系ならCPUが苦手な
バイトアクセスでもメモリアクセス量が減る bool のほうが多分トータルの
パフォーマンスでは上だろうし。

518 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 04:24:45 ]
>>517
まあ、CPUが苦手どころか 4 バイト未満の整数型をダイレクトに
扱う命令を持ってないからで。しかも無駄なメモリアクセスは極力
省いてキャッシュレイテンシまで時に考えなきゃならんような環境の
ことなんで、無視していいかと。
つうか、素直に sizeof(bool)==4 にしろよ、ってスマン愚痴だ。

519 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 07:22:23 ]
vector<bool>なんてのを想定したんじゃない? > sizeof → 1
bitsetってのもまあ微妙なアレだし



520 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 08:02:00 ]
メモリが遅いって話ならそれこそ最大限コンパクトにして
キャッシュに乗ってる可能性を高くしたほうがいいじゃん

521 名前:デフォルトの名無しさん mailto:sage [2005/11/11(金) 08:19:22 ]
vector<bool> は特殊化されているので関係ない

522 名前:デフォルトの名無しさん [2006/01/22(日) 14:12:46 ]
  o(%)。
  //
 ○(%)oジュワッ

523 名前:デフォルトの名無しさん [2006/02/08(水) 11:15:21 ]
上級者の会話か?

524 名前:仕様書無しさん mailto:sage [2006/02/08(水) 11:18:47 ]
>>523
(脳内)上級者の集うスレでは?

525 名前:デフォルトの名無しさん mailto:sage [2006/02/08(水) 21:49:16 ]
>>523
上級者が集まったからと言って上級な会話をするとは限りませんし、
上級者にしかその真意がわからない上級な会話なのかもしれません。

526 名前:デフォルトの名無しさん [2006/04/28(金) 09:41:06 ]
上級者はいなくなったようですね

527 名前:デフォルトの名無しさん [2006/04/28(金) 11:12:31 ]
上級者というからにはもっとこうOS技術とか、デッドロックの事例とその解決とかについて
議論するのではないのか?

528 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 14:47:19 ]
>>527
デッドロック回避にはオーストリッチアルゴリズム。マジお勧め。

529 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 15:19:59 ]
レース状態やスタベーションについての議論もしよう。



530 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 16:08:20 ]
>>528 なにもしないってかw

531 名前:デフォルトの名無しさん mailto:sage [2006/04/28(金) 17:14:50 ]
レース下着でマスターベーションについて

532 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 04:44:48 ]
OS 技術が上級?
酔ってるから超ウケた。

上級な OS 技術と、当たり前すぎてあほらしい OS 技術があると思うのだが。

533 名前:デフォルトの名無しさん [2006/04/29(土) 06:06:22 ]
酔ってるな

534 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 15:12:17 ]
>>527
それはあえて言うなら「プログラミング上級者」とかの類であって「C++上級者」とはズレがあるのでは?

535 名前:デフォルトの名無しさん [2006/04/30(日) 02:32:53 ]
ではC++上級者は何ができるのですか?

536 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 02:51:36 ]
Cでも書けるコード/アルゴリズムを
「C++らしく」書くことが出来ます。たぶん。

俺は上級者じゃないので無理です。

537 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 06:21:32 ]
上級者 初級者でもわかるコードを書く
初級者 上級者でもわからないコードを書く

538 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 09:48:40 ]
ここは「上級者とは何か」を議論するスレですか?

539 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 10:28:11 ]
自らの上級しゃっぷりをアピールするスレです。



540 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 11:13:52 ]
初心者が微妙にスレ自体をひがんでるな
そんな暇があったら勉強しなよ

541 名前:デフォルトの名無しさん [2006/04/30(日) 11:47:14 ]
夢の相互リンク

プログラム技術上級スレ
pc8.2ch.net/test/read.cgi/tech/1141409198/l50

542 名前:デフォルトの名無しさん [2006/04/30(日) 19:51:31 ]
自称上級者の集まるスレってここでしょうか?

543 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 22:34:38 ]
そうですね、例えばあなたとか…

544 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 23:35:48 ]
俺、俺だよ俺!

545 名前:デフォルトの名無しさん [2006/05/06(土) 20:23:30 ]
pngのCRCの計算をするコードを教えてください。

546 名前:デフォルトの名無しさん [2006/05/06(土) 20:27:47 ]
>>545
ソース嫁


547 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 20:41:34 ]
>>546
わかりませんので
上級者の知恵をお借りしに来たのです。

548 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 20:46:14 ]
>547
ここは上級者以外立入禁止だ。

549 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 20:55:00 ]
>>548
わからないくせに偉ぶっている人



550 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 21:18:22 ]
俺は上級者だが、わからないものはわからないのだ。

551 名前:デフォルトの名無しさん [2006/05/06(土) 21:31:30 ]
ここは自称上級者同士が褒め称えあうスレです。

552 名前:545 mailto:sage [2006/05/06(土) 21:37:24 ]
googleで探したらあったYO

553 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 21:44:00 ]
これで君も上級者だ。

554 名前:デフォルトの名無しさん mailto:sage [2006/05/06(土) 22:01:37 ]
>>545
C++とは関係ない話だろとマジレス。

555 名前:デフォルトの名無しさん [2006/05/07(日) 20:31:55 ]
クックック。遂に極めたぞ。

556 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 00:29:22 ]
残念ながら555が居たのは、まだ入り口だったのであった

557 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 00:33:38 ]
極めたってどういう状態を指すんだ?DQN臭い。

558 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 00:51:30 ]
>>557
きっと typedef あたりの使い方を極めたんだよ。

559 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 00:52:35 ]
>>558
・・・そうか・・・



560 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 08:08:49 ]
555の痛さはネタ臭いけど、
極めるという言葉に過剰反応している557の痛さは素っぽいな。

561 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 16:42:06 ]
まぁ真実は>>556が突いている

562 名前:デフォルトの名無しさん [2006/06/02(金) 08:40:30 ]
皆さんのタブのサイズを教えてください

563 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 11:22:42 ]
TABは0.5を利用


564 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 12:28:03 ]
タブは8


565 名前:神楽坂 [2006/06/02(金) 15:17:23 ]
フィルタドライバの作り方で
聞きたいことがあるんで
来てみたのだが......

だめみたいだな、
ここは。

566 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 15:39:01 ]
ここはスレタイが荒してくれといっているようなものだからな。
隔離スレというか。

567 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 18:28:26 ]
いかにも荒らし本人が書きそうな「見限りレス」だな。

568 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 22:56:26 ]
>>565
なんのフィルタドライバを作りたいのかぐらい書けよ。
つーか、お前は本当は聞きたいことの説明すらできんのだろ?
素直んなれよ、な?

569 名前:デフォルトの名無しさん [2006/06/03(土) 13:28:56 ]
気付いたけどここには低能しかいないようだな



570 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 13:43:42 ]
>>569
お前と俺と〜は〜

571 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 14:20:10 ]
超上級者だったらもうちょいゆとりがあっただろう

572 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 15:44:22 ]
>>568
 ・訊いても無駄だといいながら訊きたい内容を書く
 ・でもその内容は不明確なまま
 ・しかもスレ違いの予感
 ・つか、なにしろコテハン

恐らく、自分よりバカ (に見える連中) がいて
嬉しかったんだろう。

573 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:12:18 ]
ここは、C++上級者が集まるスレであって >>565 ごときが来るような場所ではない。

574 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:29:08 ]
まぁ、能無しが「おもらい」しに来るスレではないよな。

575 名前:デフォルトの名無しさん mailto:sage [2006/06/03(土) 19:46:15 ]
盛り上がって参りました!

576 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 05:03:15 ]
マ板でもっとも典型的なネタスレのひとつ

577 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 22:14:12 ]
コメントを // にしました。
これで俺も上級者の仲間入り。

578 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 23:08:47 ]
赤飯炊かなきゃな

579 名前:デフォルトの名無しさん [2006/07/07(金) 15:55:26 ]
上級者さんのお知恵をお借りしたいのですが。。

C++とDirectShowでビデオキャプチャ+圧縮保存のコードを書いております。
ボタンクリック時に、圧縮に使用するコーディックのプロパティ画面を開くようにしたいのですが、方法が検討つきません。
WindowsMediaVideo9とMEPG4
ご存知の方、いらっしゃいましたらご助力願います。
宜しくお願い致します。



580 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 15:08:16 ]
>>579
それC++関係ないだろ。

581 名前:デフォルトの名無しさん mailto:sage [2006/09/01(金) 19:22:44 ]
>>580
≪関係ない≫だと?






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

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

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