- 1 名前:デフォルトの名無しさん [2008/02/28(木) 00:01:39 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.49【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1203478421/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 666 名前:デフォルトの名無しさん [2008/03/10(月) 13:56:31 ]
- クラスのメソッドから、クラスのインスタンスの変数名を知る方法ってありますか?
具体的には、 class test {}; test a1; a1.method(); としたとき、method内でa1という名前をしることは出来ますか?
- 667 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:05:01 ]
- >>666
ムリ
- 668 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:07:08 ]
- >>666
thisでよくね?
- 669 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:12:44 ]
- 面倒だがコンストラクタの引数で変数名を文字列受け取るようにして
自分で保持するってのは? class test { std::strung instance_name; public: test(const char *pName) { instance_name = pName; } } test a1("a1");
- 670 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:15:06 ]
- 変数名が知りたいっていう状況がわからんのだが
どう使うの?
- 671 名前:デフォルトの名無しさん [2008/03/10(月) 14:26:04 ]
- >>667-670
ありがとうございます。 用途はデバッグです。あるクラスの中身を表示させているのですが、 どのインスタンスかがわかりやすいようにしたかったので、、 自動化したいので、コンストラクタの引数に書くのは避けたいです。 が、これが一番確実ですかね。
- 672 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:30:23 ]
- >>671
Use the debugger, >671
- 673 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:32:57 ]
- デバッグ用途ならマクロの文字列化演算子 # を使うとか
- 674 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 14:44:44 ]
- >>671
どういう環境かは知らんが>>672の言うようにデバッガ使ったらいいと思う
- 675 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 15:03:47 ]
- >>671
何らかの制限で、デバッガが使えない場合 デバッグログが使えるのならば、 生成した側が、確保されたアドレスを出力(__FILE__と、__LINE__も一緒に出力するとわかりやすい) クラスの中身を表示するところでthisを表示すればいいんじゃないかな? >>674 なかなか面白い書き込み時間だ
- 676 名前:デフォルトの名無しさん [2008/03/10(月) 16:52:05 ]
- ttp://www.borujoa.org/upload/source/upload17298.c
簡易ブラウザを作っているのですが、ソケット接続エラーがでます。 どこが原因か分かりません。教えていただけませんか?
- 677 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:03:29 ]
- >>676
htonsとか?
- 678 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 18:06:29 ]
- >>676
基礎からやり直せ。
- 679 名前:デフォルトの名無しさん [2008/03/10(月) 19:01:42 ]
- ハ,,ハ
('(゚∀゚∩_ おいらをどこかのスレに送って! /ヽ 〈/\ お別れの時にはお土産を持たせてね! /| ̄ ̄ ̄|.\/ |dexiosu|/  ̄ ̄ ̄ 現在の所持品:たばこ・ライター・コーヒー・ブラックブラック・枕・ケータイ電話 睡眠薬・聖教新聞 ・ダッチワイフ・外付けSCSI340MHDD・ネットランナー4月号 TYG02・小嶋進社長・ペプシNEX・モツ煮・ヌルポ・伊予柑・寒いギャグ ・7年ものキムチ ・カビキラーストロング ・ハイスクール奇面組文庫版全13巻 ・(元)関内太郎 ・チャッカマン ・ぺヤングソースやきそば・魔法先生ネギま!14巻限定版 ・小田急3000形・PSP ・デスノート ・ファブリーズ ・ポーション ・SH902i ・Windows3.1
- 680 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 19:11:21 ]
- >>676
生ソケットでHTTPをやるプログラム例はウェブにやまほど転がってるか ら、それらを見て何が足りないか調べてみましょ。 gethostbyname()やsocket()のエラーチェックもしましょ。 それ以外にもツッコミ所が多いけど致命的じゃないので省略。
- 681 名前:676 mailto:sage [2008/03/10(月) 20:26:39 ]
- うん、何か知らないけど分かって言ってるのか分かってないのかようわからん、
役に立たない情報ありがとう。
- 682 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:37:07 ]
- >>680
例えばnewしてdeleteしないのは、それが習慣化すると致命的だと思うぞ。 >>676 ということで、>678。 まさかとは思うが、そのレベルで外部に直接繋ぎに行くなよ。 接続先に迷惑掛けることになるからな。
- 683 名前:676 mailto:sage [2008/03/10(月) 20:44:42 ]
- >>682
いまどきのパソコンは自動で解放するから別にデリートしなくていいし (つーかdeleteしなかったのはこの程度のプログラムだったらいらんし面倒くさいからで)、 その機能的な面を考えておるんだったら、最初っから一気にメモリ確保しといて、 解放しますよ。あと、ポート80に設定してないとか言われてたが、 あれはポート80に設定しなかったら自動で80に設定してくれるからで、面倒くさいから。 socket()のエラーチェックしなかったのは、面倒くさかったからで。
- 684 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:48:29 ]
- >>682
newしてdeleteしない習慣がついてます、サーセンwww。 vectorとかshared_ptrがないと生きていけません。
- 685 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:49:11 ]
- お前に教えるのが面倒くさいわ。
- 686 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:49:20 ]
- きみのところの石がPowerPCとかMIPSとかでないなら、
iprt.sin_port=80; は iprt.sin_port=20480; にするといいお
- 687 名前:676 mailto:sage [2008/03/10(月) 20:50:38 ]
- >>684
俺もC++で、ついこないだまで必死でc_str( )使ってた。
- 688 名前:デフォルトの名無しさん [2008/03/10(月) 20:52:26 ]
- newはクラス以外で使うなよ
STLのように自動開放する以外には使うべきでない
- 689 名前:676 mailto:sage [2008/03/10(月) 20:53:06 ]
- >>686
あぁ消したハズなのに普通に代入してたの残ってた。 このことか。ありがとう。 てか20480って怪しいポート何?
- 690 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:54:16 ]
- deleteめんどくさいならnewしなきゃいいって発想はないのかなぁ。
悪くてもこの場合固定長配列でいいし、もっと言えばstringを使うべきところ。 全く意味のないnewじゃん。 newしてdeleteしないのが致命的にならないのはこのサイズのバイナリだからであって、 自動でやるからデリートしなくて良いって考え方は非常に危険。くせにするなって言う意見のがもっとも。 たとえば、photoshopみたいなソフトを作ってる人がnewしてdeleteしなかったらどうなるか。
- 691 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 20:54:40 ]
- はい、GCを導入します
- 692 名前:676 mailto:sage [2008/03/10(月) 20:59:43 ]
- >>690
ありがとう。今度からできるだけ意味無いことは止める。 string型にすればいいだろうなぁとは思ってた。 最初mallocにしてたけど、知らん間にnewになった。 そもそもstringならnewはいらんはなしだったけど、そこまで頭回らんかった。 俺の脳裏にはC言語っぽいのをできるだけC++っぽくしようってのがあったんだと思う。 かえってそれが変に見えたのは認める。 勉強になりました。
- 693 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:01:47 ]
- つーか、
・getaddrinfo使えタコが ・面倒だからとエラー処理サボると、もっと面倒な事態に の例
- 694 名前:676 mailto:sage [2008/03/10(月) 21:07:27 ]
- >>693
ネットワーク系に触るの生まれて初めてなのよn getaddrinfoか、メモメモ / ̄ ̄\/) f ヾ | ⊂(゚Д゚)| ヽ _(◎)ノ ノつ /ノ/ ハヽ二二ノ ( (||i) )ヽ\ ヽ)L人(_/(ノ`J
- 695 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:30:06 ]
- >>694
触んないほうがいい。
- 696 名前:676 mailto:sage [2008/03/10(月) 21:42:16 ]
- >>695
NEってCCNAとかのイメージが先行して配線を弄ってるイメージ強かったけど、 プログラム組ませると「間違えると危険なんだなぁ」とは思った。勉強になりました。 安全な下級PGに戻ります。
- 697 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:38:48 ]
- スレがカオス気味でワロタ
- 698 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:10:24 ]
- ここでド素人の俺が颯爽と質問
int型へのポインタの宣言って int *a; int* a; この二つで差がありますか?
- 699 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:13:06 ]
- int* a, b;
- 700 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:13:52 ]
- 若干スレ違い臭いのですが、質問させてください。
コンパイル時、2つのコンパイルオプションを指定したいのですが、どのように書けばいいのでしょうか。 例えば`wx-config --cppflags` と `pkg-config --cflags gtk+-2.0` を同時に使いたいのです。
- 701 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:14:44 ]
- >>698
違いはありません。 しかし、その二つはまれに戦争の火種となります。
- 702 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:19:40 ]
- >>698
int *a, b; int* a, b;
- 703 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:33:51 ]
- >>699,701-702
ありがとうございます intだとint型とint型へのポインタが同時に宣言でき、 int*だとint型へのポインタのみ宣言できるわけですか >戦争の火種 (((( ;゚Д゚))))ガクガクブルブル
- 704 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:39:19 ]
- >>703
いいえ、どちらも同じです
- 705 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:40:40 ]
- >703
戦争の火種って言っても空襲は来ないから安心しておじいちゃん。
- 706 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:47:02 ]
- >>703
残念ながらそれは違う
- 707 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 23:59:24 ]
- int *a, b;
int* a, b; 二つとも aがint型へのポインタ。int型の変数bでしょうか?
- 708 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:02:17 ]
- Yes.
int* a, b; と書こうが、b はポインタにはならない。
- 709 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:02:58 ]
- >>707
その通り
- 710 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:05:39 ]
- int * a; のように書く人もいるね。
- 711 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:07:17 ]
- >>700
単に並べればいいよ。 gcc `wx-config --cppflags` `pkg-config --cflags gtk+-2.0` mycode.cc
- 712 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:08:06 ]
- int*a; 派
- 713 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:09:31 ]
- おまえがどう書こうが関係ねえ
- 714 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:10:33 ]
- int
* a ; 派
- 715 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:11:23 ]
- >>714
ステップ数至上主義者ですね
- 716 名前:700 mailto:sage [2008/03/11(火) 00:17:01 ]
- >>711 さん
ありがとうございます!
- 717 名前:デフォルトの名無しさん [2008/03/11(火) 00:34:27 ]
- i\
n\ t * a ; 派
- 718 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:37:59 ]
- boost::mpl::identity<int*>::type a;派
- 719 名前:デフォルトの名無しさん [2008/03/11(火) 01:21:53 ]
- string の読み込みがないのが不便ですね
改行やバリナリはありますが 自作するしかないですか
- 720 名前:デフォルトの名無しさん [2008/03/11(火) 01:24:21 ]
- C言語やWindowsAPIはファイルの入出力が低レベルのしか無いです
たとえば空きメモリを調べてバッファを使って出力するとか そういうのを強化するライブラリ無いですか ビット単位の出力もないです
- 721 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:25:23 ]
- boostでおk
- 722 名前:デフォルトの名無しさん [2008/03/11(火) 01:27:40 ]
- 詳しく教えてください ライブラリ名とか
- 723 名前:デフォルトの名無しさん [2008/03/11(火) 01:32:21 ]
- 例えば、Fstream というバッファ付きファイル出力クラスを自作したとします
書き込みがあまりなくなったらメモリを解放したいのですが、 一番最後の書き込み時に解放しなかった場合、 それ以降アクセスがなかったら無いことを知ってメモリ解放するにはどうしたらいいですか
- 724 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:33:05 ]
- デストラクタで開放するようにして、スマートポインタに入れるなりなんなり
- 725 名前:デフォルトの名無しさん [2008/03/11(火) 01:34:41 ]
- クラス生成時にサブスレッドを動かして
時間計測してシグナル出せば良さそうですね
- 726 名前:デフォルトの名無しさん [2008/03/11(火) 01:37:56 ]
- >>724
複数のファイルを同時に扱いたいです 1000個の書き込みがあれば 一つあたり100KB確保でも大きいです 単独でバッファ管理するより複数を調べた方が良さそうですが
- 727 名前:デフォルトの名無しさん [2008/03/11(火) 01:43:50 ]
- 例えば
Fstream fp("out1"), fq("out2"); としたとします クラスはfpの状態とfqの状態両方を知ることは出来ますか
- 728 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:51:55 ]
- static変数ででも管理すればいいだろ
- 729 名前:デフォルトの名無しさん [2008/03/11(火) 01:57:24 ]
- fp[100]としたとき、メモリを解放した方が良い番号がわかったとき自動的に
解放させるにはどうしたらいいですか? 最近参照された時間を保持していてもメンバ関数からでは 他のメンバ変数はわからないですよね
- 730 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:58:38 ]
- >>729
728読んだ?
- 731 名前:デフォルトの名無しさん [2008/03/11(火) 01:59:49 ]
- staticは共用されないですか?
個別の時間を保持しないと駄目ですが
- 732 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:01:30 ]
- 全インスタンスの個別の時間を保持するlistかmapかなんかをstatic変数にすればいいだろう
- 733 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:02:00 ]
- だいたい貴様の知識が乏しいのは自分でもわかってるんだろ。
その貧相な知識で勝手に判断して人のレスを無視するんじゃねえよ
- 734 名前:デフォルトの名無しさん [2008/03/11(火) 02:03:54 ]
- 時間管理もバッファも、vector型にして共用すれば良いですか?
- 735 名前:デフォルトの名無しさん [2008/03/11(火) 02:09:53 ]
- あとメモリ解放のためにサブスレッドを動かしたいのですが
コンストラクタに入れるとクラス生成ごとに呼びだれると思うのですが これも共用するにはどうすればいいですか? static fnc(){}などと書けば初めの一回だけになりますか
- 736 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:10:01 ]
- 質問する前に手を動かしてみたら?
- 737 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:15:17 ]
- 闇雲に手を動かすだけで、「〜をやってみましたがうまくいきませんでした。なぜですか。」とか聞いてきそうだ。
>static fnc(){}などと書けば初めの一回だけになりますか staticというキーワードを知っているのなら、それについての最低限の仕様くらいは 自分で調べたほうがいいよ。webを見るなり、まともな入門書を読むなりして。 凝ったことをやろうとする前に、もっと先に学ぶべきことが多そうだ。
- 738 名前:デフォルトの名無しさん [2008/03/11(火) 02:28:02 ]
- うごかないですが原因がわかりません
どうすればいいですか class cls{ public: static int n; cls(){ n=0; } }; main(){ cls x; }
- 739 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:32:52 ]
- どううごかないんだ
コンパイルエラーなのか 画面に何も表示されないのか 後者なら別におかしくないぞ
- 740 名前:デフォルトの名無しさん [2008/03/11(火) 02:37:50 ]
- Error: 未解決の外部参照 'cls::n' がTEST.OBJ から参照されました
とでます
- 741 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:39:42 ]
- static変数の定義がないから
static int cls::n;
- 742 名前:デフォルトの名無しさん [2008/03/11(火) 02:42:55 ]
- それは知りませんでした サンクス
あとクラスのメンバ関数も共用出来ますか? 初めに一度コンストラクタで起動するだけにしたいです
- 743 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:44:44 ]
- >>742
staticをメンバ 関数につけたらどうなるか調べなおせ
- 744 名前:デフォルトの名無しさん [2008/03/11(火) 02:56:22 ]
- 他人のコードを読んでいて、
namespace std { template <> void swap(hoge &a) みたいな記述があったのですが、templateのあとの<>の中が空白でも コンパイル出来ているのですが、なんででしょうか?
- 745 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 02:57:24 ]
- パラメータ0個のテンプレート
- 746 名前:デフォルトの名無しさん [2008/03/11(火) 03:01:30 ]
- >>745
ありがとうございます。でも意味がないような、、、 どんな時につかうのですか?
- 747 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 03:06:02 ]
- 特殊化でぐぐれ
- 748 名前:デフォルトの名無しさん [2008/03/11(火) 03:11:47 ]
- read(fp, x)
write(fq,x) としたとき、読み込むファイルが1G以上だとメモリがたらなくなります あらかじめ書き込むサイズが判明していたとしてマルチスレッド化して read(fp, x) write(fq, x, N, KAIHOUFLG) としてメモリを解放しながら読み書きするにはどのように実装すればいいですか
- 749 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 03:15:09 ]
- マルチスレッドに何の関係があるんだよ。
分割して読み書きすればいいだけだろうが
- 750 名前:デフォルトの名無しさん [2008/03/11(火) 03:17:02 ]
- read(fp, x)はファイルを読み込みますが、例えば1G読み切るまで停止しないって事です
- 751 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 03:19:17 ]
- それはそのreadの設計が悪いだけだろうが。
- 752 名前:デフォルトの名無しさん [2008/03/11(火) 03:20:49 ]
- >>747
ありがとうです。特殊化でぐぐったら、wikipediaのエントリが先頭に出てきて、それを 読んだらわかりました。(わかりやすく書いてあった) templateのうち、コンパイラまかせじゃなくて自分で書いてしまいたいところを自分で 書くということですね。
- 753 名前:デフォルトの名無しさん [2008/03/11(火) 03:21:11 ]
- 1Gのファイルを読み込んだとして、
メモリを解放しながら書き込むという指定をすると 読み込まれた部分に対して先頭からメモリを解放しながら書き込みます
- 754 名前:デフォルトの名無しさん [2008/03/11(火) 03:23:27 ]
- 通常使用では一括して読み込むことも出来るし、
メモリを解放させながら読み込むことも出来るという汎用の関数を作りたいんです
- 755 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 03:25:35 ]
- なら作ってください
- 756 名前:デフォルトの名無しさん [2008/03/11(火) 03:26:09 ]
- やり方を教えてください
- 757 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 03:30:19 ]
- 上で散々でてるがな。
- 758 名前:デフォルトの名無しさん [2008/03/11(火) 03:30:20 ]
- 商品先物や、為替取引と同じようなものです
現物を扱わずに売り買いだけを先にしてしまうようなものです 読み込みと書き込みの約束だけをしてしまい不要ならメモリを解放します
- 759 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 04:31:06 ]
- 口約束で終わるって事か?
- 760 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 06:03:12 ]
- スレが伸びてると思ったら、梯子もなしに屋上に上ろうとする馬鹿が沸いてたか。
- 761 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 07:20:30 ]
- VirtualAllocでCOMMITを調整する話か?
まー、32bitアプリは仮想メモリ空間も 2Gあたりでリミットだからあんまし意味がないけど
- 762 名前:デフォルトの名無しさん [2008/03/11(火) 07:20:53 ]
- >>756
- 763 名前:デフォルトの名無しさん [2008/03/11(火) 07:23:38 ]
- >>756
Windowsなら4つのAPIで実現できる。 APIの頭文字はそれぞれ、C、M、U、Cだ。
- 764 名前:デフォルトの名無しさん [2008/03/11(火) 09:38:41 ]
- 書き込み予約と、読み取り予約と、バッファ管理して
それらを同時に動かして快適動作させたいわけです コードを教えてもらえませんか? 読み書きのバッファを128KB単位にして管理すれば良さそうなんですが・・ x[n]のようにデータにアクセスできるが、前方が解放されていたとしてもそれ以外は同じアクセスが出来るようにしたいです
- 765 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 09:46:11 ]
- >>764
ディスクを交換するほうが早い。
- 766 名前:デフォルトの名無しさん [2008/03/11(火) 10:36:58 ]
- >>764
脳ミソを交換ry
|

|