1 名前:デフォルトの名無しさん [2007/07/26(木) 00:33:07 ] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 テンプレその他 >>2-15 付近参照 前スレ class C++相談室lt;part56gt; pc11.2ch.net/test/read.cgi/tech/1170343752/l50
610 名前:デフォルトの名無しさん [2007/09/17(月) 13:35:00 ] tail -f /var/log/messages でいいでね?
611 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 14:05:18 ] 馬鹿はすっこんでろ
612 名前:デフォルトの名無しさん [2007/09/17(月) 14:18:17 ] 言語の勉強ならなぜにstd::vectorを使う?
613 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 14:26:42 ] C++の勉強ならSTLが適当だろう。C++スレだし
614 名前:デフォルトの名無しさん [2007/09/17(月) 14:32:09 ] 勉強が目的なんでしょ?
615 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 14:35:55 ] 「言語文法の勉強」って限定してないなら標準ライブラリの使用法も範疇だろ
616 名前:デフォルトの名無しさん [2007/09/17(月) 15:17:22 ] c++の質問じゃないかもしれないけど 0x00000F00 こってどういう意味なんでしょうか? 16進法かなと思うんですが
617 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:27:26 ] 明らかにC++じゃないしプログラムの質問でもないぞ 0x00000F00は10進数の3840だ。
618 名前:デフォルトの名無しさん mailto:age [2007/09/17(月) 15:29:33 ] .
619 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:31:05 ] >>616 数値のリテラルを16進数で書きたいときの書き方。 その数値自体の意味までは判らんよ。
620 名前:デフォルトの名無しさん [2007/09/17(月) 15:37:41 ] 3840ってことはF00ってことでおk?
621 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:39:47 ] >>620 何がOKかさっぱりわからん。3840(10)=F00(16)ってだけだ。 わからんならWindows標準の電卓でも使ってくれ。
622 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:44:17 ] >>617 一応C++の質問になるなじゃない? CやC++など一部の言語では16進数を表記する文法として0x〜を採用しているだけで、 一般的に16進数を0x〜と表記するという規則はないでしょ。
623 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:50:12 ] いやー、どこの言語でも0xか\xのプリフィックスが付いたら 16進数だと思うけど。
624 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:56:26 ] "0x"が仮にC++特有だとしてもそれ以降はただの16進数だしな
625 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 15:58:36 ] 数字の混ざったトークンにa - fが入ってたら接頭子がなんであれ16進と解釈できるだろ。
626 名前:599 mailto:sage [2007/09/17(月) 16:00:52 ] >>603-615 どうも、ありがとうございました。 勉強になります。 学校の課題とかではないです(私はもう学生ではないので…) 株と為替の時系列データを処理するプログラムを書いているのですが、 データの入手先によって、系列の時間が上り順のものと下り順のものの2種類あるので、 一方を並べ替えることで1つの書式にそろえようとしたわけです。
627 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 16:04:36 ] >>625 17進数〜36進数という可能性も。
628 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 16:13:47 ] 1バイト文字コードなら256進数までありうる
629 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 16:52:10 ] >>616 死ね
630 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 16:57:01 ] そこは気を利かせて 0xDEAD とか書かないと
631 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 17:01:14 ] >>630 0xDEAD=57005 実はお前さんの書き込み時間は、57分00.5秒だったのでは…
632 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 17:29:46 ] 0xDEADBEEF
633 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 19:23:11 ] 0xBADCAFFE
634 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:51:52 ] 0xBACA
635 名前:デフォルトの名無しさん mailto:C++でOOPらしいコードを書くにはどうすればいいだろうか [2007/09/18(火) 19:54:44 ] 0xCPLASPLASDEOOPRASIIKODEWOKAKUNIHADOUSUREBAIIDAROUKA
636 名前:デフォルトの名無しさん [2007/09/18(火) 20:19:58 ] どうせなら CPLUSPLUS ってかけよ
637 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 20:21:27 ] >>635 C++はマルチパラダイム言語だ。そんな意味のない目標は捨てて身軽になろう。 OOPなんて所詮たくさんある道具の内の一つに過ぎない。
638 名前:デフォルトの名無しさん [2007/09/18(火) 20:25:01 ] >>636 気づかなかったわ >>637 okそうするよ
639 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:36:41 ] そういやどっかのサイトにあったけど、「OOPは呼び出し元を再利用するための手法の一つ」 というのはかなり納得した。特にC++のはそうだよな。
640 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:40:04 ] 定義なんぞどうでもいい
641 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:43:20 ] 定義?定義じゃネーヨ 概念だろ
642 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:03:17 ] テンプレート関数にテンプレートクラスを渡したいのですが、可能でしょうか 具体的には std::list<int> a; std::list<double> b; func( a ); func( b ); のようにしたいです
643 名前:642 mailto:sage [2007/09/19(水) 00:12:49 ] 自己解決しました
644 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:17:08 ] template <typename T> void func(std::list<T> x) { }; こんな感じ?
645 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:17:59 ] そんなちょっと考えたら解決するようなことをいちいち・・・
646 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:30:38 ] 馬鹿だからなんだぜ?
647 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:05:47 ] KODE
648 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:15:12 ] 氷結しよっ!
649 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:43:44 ] >>639 それはOOPっていうか、古くは各種アプリのプラグイン(DLL)に始まる インタフェイス抽象とかコンポーネント化とかの特徴のような気が・・・
650 名前:デフォルトの名無しさん [2007/09/19(水) 20:34:13 ] >>649 それは呼び出される側の再利用でなくて?
651 名前:デフォルトの名無しさん [2007/09/19(水) 21:28:47 ] 今ポインタの宿題をしていて 数値を交換するというやつで実行前の値の表示とでたのですがどういういみですか?
652 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:48:45 ] その質問を訊く身にもなってください。 今流行りのアスペルガーですか?
653 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:48:59 ] 意味がわからんし、C言語スレへ池
654 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:49:31 ] 俺に免じて許してやってくれ。彼は5歳なんだ。
655 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:54:15 ] 俺アスペルガーだけどこんな奴と一緒にしないで欲しい
656 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 05:03:48 ] 「数値を交換するというやつで実行前の値の表示とでたのですがどういういみですか?」 とはどういういみですか?
657 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 05:09:02 ] 数値を交換するというやつで実行前の値の表示とでたのですがどういういみですか? What abhorring is of of display of the value before it executes it by the guy of exchanging numerical values it? 憎悪が交換数値の奴でそれを実行する前の価値の表示のものであること、それ? (゚Д゚)?
658 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 06:20:59 ] >>651 お前があほという意味じゃ
659 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:09:57 ] ある仮想関数が、メンバ変数を書き換えないと想定されている場合、constを付けた方がいいんでしょうか? 例えばこんな感じ↓ class A { public: virtual int GetX() const = 0; }; class B : public A { public: virtual int GetX() const { return x_; } private: int x_; }; const A*型を使う場面があるのかが気になります。
660 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:20:55 ] >>659 そうですね。
661 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:31:21 ] >>659 つけられるconstは全てつけるべき。 非constである必要ができたら、非const版を追加するかconstを外すか熟考すべし。
662 名前:659 mailto:sage [2007/09/20(木) 07:36:33 ] ありがとうございます。
663 名前:kkptcnZciZ mailto:ekeskb@bokqzg.com [2007/09/20(木) 12:34:39 ] KOMUgI <a href="vunuddokfscm.com/">vunuddokfscm</a>, [url=pliwysnvpdex.com/]pliwysnvpdex[/url], [link=uquzjkpzhomt.com/]uquzjkpzhomt[/link], hukythasnspn.com/
664 名前:マターリ ◆AbENcvTP5o mailto:sage [2007/09/20(木) 14:27:35 ] いきなりですみませんがこのスレに協力してくれる人を探しています。 ttp://sports2.2ch.net/test/read.cgi/entrance2/1190215633/l50
665 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 14:57:12 ] >>664 マルチすんな。
666 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 15:16:10 ] >>650 ん? プラグインやインタフェイス抽象は主として呼び出す側の再利用に繋がると思うけど。 呼び出される方の利用の仕方がまちまちだと、 呼び出す側はいちいちそれに合わせなくてはならないわけだけど、 インタフェイスや呼び出し規約(API)という形に抽象化し共通化しておくことによって、 呼び出し側を変更せずに機能を追加してゆくことができる。 もちろん呼び出される側を再利用する仕組みでもあるんだけど、 呼び出される側の再利用だけのためであれば単にAPI公開で十分なわけで。
667 名前:デフォルトの名無しさん [2007/09/20(木) 16:37:16 ] template<class T> class A { public: void (A<T>::*func)(); }; template<class T> class B { public: static void (B<T>::*func)(); }; template<class T> void (B<T>::*B<T>::func)() = NULL; template<class T, class U> class C { public: void (U::*func)(); }; template<class T, class U> class D { public: static void (U::*func)(); }; template<class T, class U> void (D<T, U>::*U::func)() = NULL; クラスDのようにしたいんですけど、どなたかわかる方いませんか? Visual Studio2005 SP1
668 名前:デフォルトの名無しさん [2007/09/20(木) 16:38:31 ] ちなみにクラスD以外はビルドOKです
669 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 16:49:48 ] template<class T, class U> class D { public: static void (U::*func)(); }; template<class T, class U> void (U::*D<T, U>::func)() = NULL; こうだろ?
670 名前:デフォルトの名無しさん [2007/09/20(木) 17:19:20 ] うぉ、ビルドとおった〜 ありがとう!! 昨日からずっと考えてたよ。
671 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 18:48:48 ] 横からごめん template<class T, class U> void (U::*D<T, U>::func)() = NULL; ってどういう意味?
672 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 19:04:46 ] >>671 単なる、staticなメンバー変数funcの定義だよ。 NULLで初期化してるだけ。
673 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 19:05:53 ] void (U::*)() 型のstaticメンバ変数 D<T, U>::func を定義して NULL で初期化している
674 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:44:48 ] 最近某入力デバイス共有ソフトのソースと某モデリングソフトのプラグインサンプルのソースと 見る機会があったんだけど そのどっちも、どう考えても継承ツリーの最底辺、絶対継承されっこないし実際されてない javaだったらfinalがついてもおかしくないクラスのメンバで 継承元の仮想関数をオーバーライドしている関数にvirtualがついてた 薄々感じてはいたんだけどどんな状況でもオーバーライドした関数にはその目印にvirtualをつけるっていう 暗黙のコーディングルール(というかおまじない?)のようなのが流行してるのかな? それともvirtual修飾子の意味をほとんどの人が誤解している?
675 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:51:49 ] かなり昔から流行ってるよね。
676 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:56:41 ] C#のvirtual, overrideキーワードを見るよろし
677 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:58:33 ] >>676 C# なんか存在しない頃から流行ってるよね。
678 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:24:07 ] 別にはやってないだろ
679 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:26:07 ] 文法的にはどっちでもいいんだっけ?
680 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:27:37 ] 多分継承元のクラスから関数宣言コピペして、面倒だからvirtual削除してないだけだろ。
681 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:40:33 ] virtualつけてもoverrideかどうかは分からない ということに最近気づいた
682 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:41:32 ] overrideする側はvirtual要らないんだっけ 俺はいつもコメントにoverrideって書くけど C#がうらやましいぜ
683 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:53:43 ] 基本クラスがvirtualなら十分でそれ以降は任意だったと思うがドキュメントが出てこない。 継承が深くなるとvirtualかどうか確認するのにいくつもヘッダーファイルを遡ることになるから、 overrideしたところにもvirtualがあるとわかりやすい。 いま基本クラスと書いたが途中からvirtualっていうのもありなんだよな。 #include <iostream> using namespace std; class A { public: void Say() { cout << "hello A" << endl; }}; class B : public A { public: virtual void Say() { cout << "hello B" << endl; }}; class C : public B { public: void Say() { cout << "hello C" << endl; }}; int main(){ A *a = new C(); a->Say(); B *b = new C(); b->Say(); return 0;} 結果 hello A hello C
684 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:59:49 ] 一度virtual付ければ後は無くておk。 俺はドキュメントなんか鼻から探すつもりもありませんがw
685 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:01:01 ] あ、でもvirtualはいつも付けてる。 理由は>>683 と一緒。
686 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:01:12 ] sealedが欲しい。途中から隠蔽w
687 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:06:18 ] #define public protected
688 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:26:15 ] とにかく、C#なんかより前から流行ってるよね。
689 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:35:25 ] >>686 sealedは継承禁止じゃね?
690 名前:デフォルトの名無しさん [2007/09/20(木) 22:36:54 ] void func(const T& param) { T.Hoge(); } っておかしい? 型Tは何かわからないからそのメソッドHoge()を呼ぶのはおかしい?
691 名前:デフォルトの名無しさん [2007/09/20(木) 22:37:32 ] void func(const T& param) { param.Hoge(); } の間違いでした
692 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:38:24 ] 継承される事を前提に作ってないクラスはデフォルトでsealed(final) って仕様だとうれしいんだけど 小規模で作ってる分にはいらないけどさ
693 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:42:09 ] 大規模開発なら「派生型を作らないこと」とドキュメントに書けばいいような・・・ オープンソース物みたいにソースがドキュメントって感じのだと、 そういう言語によるディレクティブは役に立つとは思うけど。
694 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:56:14 ] >>689 メソッドに対するシールド。 class A { public virtual void Say() { .. ; }} class B : A { public override sealed void Say() { .. ; }}
695 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:03:45 ] >>694 それ上書き禁止で隠蔽とはいわないんじゃねーかと。
696 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:09:03 ] >>695 やりたいことはこうよ。 class A { virtual F class B : A { sealed F // Aに対するoverrideだが、この後の継承は上書き扱い(非virtual)になる。
697 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:10:36 ] こんなのはどうだっけ? class A { public: void a() {}; }; class B : public A { public: template<typename> void a(); /*not implement*/ };
698 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:13:04 ] >>696 それは隠蔽とは言わんだろ。 AやBにキャストしたら そのまま使えるんだし。 Javaだと覆い隠し(shadowed)とか言ってるような。
699 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:18:46 ] 目印なんだったらコメント使えばいいのになんでそれをトークン使って プログラムそのものを変質させてしまう形でやってしまうのだろう いったい誰がこんな風習を広めたのか気になって眠れない
700 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:19:09 ] >>672 ぁーなるほど。 void (U::*)()の、D<T,U>::funcを。ってことね。 了解しますた。さんくす
701 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:19:49 ] >>698 C#だとこれのことを隠蔽と言うだけどね。VBだとShadows。 sealedといったのは例えが悪かった。このnewがC++に欲しいという話。 class A { public virtual void Say() { .. ; }} class B : A { public override void Say() { .. ; }} class C : B { public new void Say() { .. ; }}
702 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:20:25 ] >>690-691 問題ない。 もしTがメンバHogeを持っていなければ、エラーになる。 それなんて動的言語と言いたいところだが、 そこはC++なんでコンパイルエラー。
703 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:43:21 ] >>701 悪い、それ隠蔽だわ。カプセル化の文脈で出てくるデータ隠蔽と勘違いしてた。
704 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:58:00 ] >>703 死ね
705 名前:デフォルトの名無しさん [2007/09/21(金) 00:28:53 ] >>702 サンキュ
706 名前:fIIPJstQwl mailto:woptyu@mail.com [2007/09/22(土) 03:23:44 ] zghXa7 <a href="www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0484.html">big cock</a> [URL=www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0484.html]pussy[/URL] <a href="www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0531.html">big cocks</a> [URL=www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0531.html]pussy[/URL] <a href="www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0682.html">big dick</a> [URL=www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0682.html]pussy[/URL] <a href="www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0731.html">big dicks</a> [URL=www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0731.html]pussy[/URL] <a href="www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0874.html">big naturals</a> [URL=www.pic.ucla.edu/~nathan/cgi-bin/moin.cgi/Dirioly?action=AttachFile&do=get&target=big0874.html]pussy[/URL]
707 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 06:54:59 ] void func(int n) { void *a = (void*)new char[n]; /*...*/ delete[] (char*)a; } これってメモリリークを起こさずにうまく開放されるんでしょうか?
708 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 06:57:27 ] 日本語がおかしい。 メモリリークは開放処理を試みた後に発生する。
709 名前:Kusakabe Youichi mailto:sage [2007/09/22(土) 07:16:59 ]
710 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 10:27:23 ] >>707 途中で例外が投げられてfuncを抜けるなどといった事態が起これば、 メモリリークするね。