- 1 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 14:09:22 ]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.44【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1194016813/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
- 809 名前:806 mailto:sage [2007/12/24(月) 10:11:12 ]
- 正直なところ言わんとしていることは理解できましたが、
結局どこをどう手直しすればいいのかわかりませんでした。 申し訳ないですがプログラム自体の手直しをしていただけると幸いです(;´д⊂)
- 810 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:35:19 ]
- VC2008EEのなんですけど。
ヘッダの一部分を特定の.CPPからインクルードされたときだけ 有効にするにはどうすればいいんでしょうか?
- 811 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:38:55 ]
- >>810
#if とか #ifdef
- 812 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 10:42:12 ]
- >>808
WindowsのAPIだとワイド文字=UNICODEな扱いで、 それ以外のワイド文字に出来ないので… iconvも素でワイド文字を扱おうとすると難しいようなカンジです。 結局自前で書いても20行くらいに収まったのでそれでなんとかしました。
- 813 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:59:01 ]
- VC2005でSSE使ってLONGLONGを足したり引いたりするにはどうしますか?
- 814 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:36:00 ]
- __FUNCTION__ マクロって標準なんでしょうか?
それとも Visual C++ でしか使えないのでしょうか? デバッグ用のコードの中で多用しているのですが, いいのかなぁ,と思って.
- 815 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:46:36 ]
- BOOST_CURRENT_FUNCTIONの定義見てみるといいよ。
- 816 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 17:19:37 ]
- クリスマスに彼女が居ないんですがどうすればいいですか?
- 817 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 17:26:49 ]
- クリスマスに彼女が居ないんですがで2ちゃれ
腐るほど同じような書き込みがあるから
- 818 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 18:51:08 ]
- さっきからC/C++と3Pしようとしてるんですが、
C++が「Cとはもうそりが合わなくなった」とか言って3Pに応じてくれません。 どうしたらいいですか?
- 819 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 18:52:53 ]
- 吉利支丹の祝いらしいが幕府がおそろしゅうてかなわんわ
- 820 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 18:58:27 ]
- >>818
extern "C" かな?
- 821 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 19:02:32 ]
- >>818
そりゃ論理的に無理だな。
- 822 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 19:09:10 ]
- 99年から仲が悪くなったんだろうな
- 823 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 19:44:03 ]
- >>818
delete from C where standard = 1999;
- 824 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 19:47:59 ]
- こうじゃないのか。
delete standard from C where year = 1999
- 825 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 19:49:20 ]
- delete standard C where = 1999;
- 826 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 19:51:30 ]
- C/C++で書けよw
- 827 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 19:52:16 ]
- std::string と strsafe.h は 共存できないですか?
- 828 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 20:28:43 ]
- IBSQL *sql = new TIBSQL();
sql->SQL->Add("DELETE standard FROM C WHERE year = 1999"); sql->Close(); sql->Prepare(); sql->ExecQuery(); delete sql;
- 829 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:05:26 ]
- >>809
↓こういうこと。全部はやんないよ。 struct LIST *next(struct LIST *next_p) { struct LIST *p = next_p; … p = next_p->next; … return p; } ポイントは以下の二つ。 ・引数の next_p に代入するのは止める。見通しが悪くなる。 ・戻り値はポインタに。
- 830 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 23:44:12 ]
- >>827
できないと思う理由は?
- 831 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:17:03 ]
- <string>の中が警告だらけになる気がするね。
そこでは安全に文字列関数を使っていると仮定して良いのだけど。 strsafe.hの関数は使うけど、既存関数の使用で警告を出さないようにする方法があると思う。
- 832 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:28:12 ]
- そういや未だstrcpyで警告出る理由わからないや
- 833 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 00:43:01 ]
- >>832
char tmp[10]; strcpy( tmp, "abcdefghij" ); 文字列リテラルなら分かりやすいけど、 これが argv[1] だったりすると?
- 834 名前:806 mailto:sage [2007/12/25(火) 01:27:12 ]
- >>829
丁寧にありがとうございます。 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5579.c こんな感じになりました。が、やっぱりループから抜け出せなくなりました。 一応一周できてるので辿る値、順序は間違っていないと思うのですが、何が悪いのかやはりわかりません…
- 835 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 09:26:13 ]
- >>834
*p = *next(p); ↑これは p = next(p); じゃないのか? でないと p が示している先の値を書き換える。
- 836 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 10:36:02 ]
- テスト
- 837 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 13:16:42 ]
- ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5581.c
惑星の公転を例にN体問題のシミュレーションをするプログラムを↑のようにして作って 実行したのですが、 datファイルをみると振り子の運動のような形になっていて円(楕円)軌道を周回していないです。 どの辺を修正すればよいのでしょうか?
- 838 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 13:57:04 ]
- デバッグは自分でやれ
- 839 名前:836 [2007/12/25(火) 15:31:48 ]
- >>838
まあ、やってもわからないから聞いてるんですけどね。 やってわかるなら最初から聞きにきませんよ。 どっかの計算結果がおかしいのは明白でしょうけど・・・
- 840 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:34:14 ]
- class Hoge{
public: Hoge(); private: int m; }; みたいなクラスがあったとして。 Hoge::Hoge() : m(0) {} と Hoge::Hoge(){ m = 0; } ではどこが違うの?
- 841 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:39:25 ]
- 逆切れktkr
プログラムとは関係ない周辺専門知識を要するんだから、 最低限、座標算出式の数式とかを書いてくれないと、正直ソース読む気にもならんな。
- 842 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:42:53 ]
- >839
実はさっきからいろいろ見てはいるんだけど、いまいちわかんない。 とりあえずdistの挙動が怪しげなので、見てみるといいかも。 あと、new_xはいいけど、new_vって必要?
- 843 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:48:20 ]
- const int m;
に換えてみれば分かる。
- 844 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:54:26 ]
- RGBからYUV2に変換したいんですがどこか参考になるサイトありませんか?
- 845 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 16:02:06 ]
- 逆数
- 846 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 16:03:52 ]
- 1秒間に60回ピッタリと処理を繰り返すにはどうすればいいですか?
- 847 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 16:07:11 ]
- 60回やる→次の秒まで待つ
- 848 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 16:18:37 ]
- >>840
上はmを0で初期化してる。 下はmに0を代入してる。
- 849 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:00:04 ]
- C言語とC++の違いって何かあるんですか。
- 850 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:06:29 ]
- Cに機能が加わったのがC++
- 851 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:18:24 ]
- C言語とC++だと、細かいところで微妙に文法に互換がなくて、
それが混乱のもとになったりするよな。 C言語のプログラムといいつつ、だいたいC++コンパイラ でコンパイルして使うから、C言語とC++の文法が ゴチャゴチャになったプログラムが現実にいっぱい存在する。 C++にベターCの要素なんて入れないほうが、スッキリした気がする。
- 852 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:27:50 ]
- C++にベターCの要素を入れたとか根本から間違ってるぞ
- 853 名前:842 mailto:sage [2007/12/25(火) 17:51:46 ]
- >839
すまん、ずっと悩んでたの、単にgnuplotの使い方でこっちが大ポカやらかしてただけだった。 plot "Point2.dat" usi 4,6 ~ orz... 答えは>842であってる。new_vがいらない。 前のvじゃなく、できたてほやほやのaから計算したvを使って位置を出してください。
- 854 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 17:57:22 ]
- 逆ギレするだけのことはありますね
- 855 名前:842 mailto:sage [2007/12/25(火) 18:00:03 ]
- ちょっとまて、俺は逆ギレした奴じゃない。
- 856 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 18:32:20 ]
- >>855
なんで逆ギレしてないんだよ、キレろよ
- 857 名前:806 mailto:sage [2007/12/25(火) 18:39:14 ]
- うおおおおお動いた(⊃д⊂)
ありがとうございます…もっかい集中的にポインタ勉強せにゃぁ…
- 858 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:00:09 ]
- >>858
死ね
- 859 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:00:33 ]
- Ctrl+C
- 860 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:48:33 ]
- >>851
あまり汚いプロクラムは嫌われるんですかね。 とりあえず簡単な文法とか紹介してくれませんか?
- 861 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 19:56:02 ]
- そんくらい調べろよ・・・
- 862 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:06:53 ]
- 糞すぎワロタ
遠慮せずに死ね
- 863 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:15:45 ]
- 自殺するくらいなら会社やめろよ。
マジで
- 864 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 20:38:20 ]
- あと人いるとこで飛び降りもな・・
- 865 名前:デフォルトの名無しさん [2007/12/26(水) 01:38:36 ]
- 演算子delete [] で質問です。
下のように書いて実行するとdeleteのところで落ちるのですが、 これはdelete []が配列の各要素に演算子delete を実行した後に スタック領域にあるオブジェクトをdeleteしようとするから落ちるということで正しいでしょうか? またdeleteはヒープ領域にあるオブジェクトにしか実行できないのでしょうか? int main() { int *x[10] ; for( int i = 0 ; i < 10 ; ++i ) { x[i] = new int(i) ; } delete [] x ; }
- 866 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 01:54:13 ]
- >これはdelete []が配列の各要素に演算子delete を実行した後に
実行しません。 newしたものをdeleteしてください。
- 867 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 07:54:04 ]
- new を10回呼び出したなら delete を10回呼ぼう。
new [] を1回呼び出したなら delete [] を1回呼ぼう。
- 868 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 09:19:21 ]
- 基底クラスをインターフェイスとしてサブクラスに機能を実装しているクラスがあります
今回、新しくサブクラスを用意することになりました。 しかし、今まであるメソッドに3つパラメーターを渡してあげてたのですが 新しいサブクラスのみ5つパラメーターを渡さないといけないようになってしまいました 他の部分に出来るだけ変更を少なく、今回の仕様を適応する良い方法あるのでしょうか? 恐らく元の設計も良くなかったのでしょうが 設計の段階でパラメーター数の変化に影響されにくい作り込みというのは可能なのでしょうか?
- 869 名前:865 mailto:sage [2007/12/26(水) 09:38:56 ]
- >866,867
ありがとうございます。deleteについてもう一度勉強しなおします。
- 870 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 09:53:33 ]
- >>868
そのクラスの目的も分からないし、 サブクラスを使ってる側を見ないと何ともいえないが。 >他の部分に出来るだけ変更を少なく、今回の仕様を適応する良い方法あるのでしょうか? 新しいサブクラスで該当のメソッドだけオーバーロード。 >設計の段階でパラメーター数の変化に影響されにくい作り込みというのは可能なのでしょうか? 引数にオブジェクト(クラス)を取るようなモジュール構成を考える、とか。
- 871 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 09:57:22 ]
- Win32APIなんかはパラメータは構造体で取って最初のメンバに構造体サイズ入れさせてそれでバージョン分けとかしてるな
- 872 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 10:38:19 ]
- >>870
研究用に使う測定器を管理するプログラムなんですが 今回の測定器だけ微妙に仕様がことなってまして扱えるパラメータが増えてますorz >新しいサブクラスで該当のメソッドだけオーバーロード。 基底クラスのポインタでサブクラスを示した場合、オーバーロードした関数は見えないのでは? やはり構造体で受けた方が良いのかなぁ
- 873 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 11:31:19 ]
- 動けばいいだけなら、unionなstruct作る
間違えてパラメータが来る可能性があるなら、 そのstructに区別がつくようなパラメータを追加する。 オブジェクト指向的には、基底パラメータクラス作って その派生オブジェクトを渡すのがいいんだろうけど そこまでするほどのものかは開発規模や環境による。
- 874 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:14:13 ]
- >>873
基底クラスの仮想関数の引数では基底パラメータクラスのポインタを受けて サブクラスで内部的に引数を派生パラメータクラスのポインタに移し直して処理する というのはありでしょうか? 大分日本語でOKにな文章ですが察してやってくださいorz
- 875 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 12:56:25 ]
- >>874
必然的にそうなる。 キャストはちゃんとdynamic_castでcast失敗したときのコードもちゃんと書いておく。 あとパラメータオブジェクトの生存期間をよくよく考えて実装すればOK テストプログラムではスタックから確保したオブジェクトをポインタ渡しにしたが 実際のプログラムではポインタのオブジェクトが開放されてしまい、 不正なメモリ参照で落ちることは容易に推測できる。 newして渡してやって、開放は受け取ったほうが、終了したら行うようにすればいいと思う。
- 876 名前:デフォルトの名無しさん [2007/12/26(水) 16:43:51 ]
- ウィンドウをクラスにする意味ってあるの?
- 877 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:10:53 ]
- >>876
あるよ
- 878 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:15:59 ]
- VS2005 VC
文字列char*型から、double型への変換は atof( char* 何某);でいいけど float型への変換はどうしたらいい?
- 879 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:16:15 ]
- >>877
あるの?
- 880 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:16:38 ]
- >>879
おまえは有無を聞いた
- 881 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:18:59 ]
- >>879
やっぱり無いかも
- 882 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:20:27 ]
- >>878
atofの結果をfloatでキャスト
- 883 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:27:06 ]
- >>882サンクス
882ですが、今手元に、コンパイラ無いけど char* str; double n; n = atof( str ); static_cast<fioat>( n ); これでOK?
- 884 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:28:03 ]
- ↑スマン
878デツ
- 885 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:32:39 ]
- あらゆるウィンドウは多重継承されていくんだ・・・!
- 886 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:38:07 ]
- >>883
float n = atof(str); これで十分
- 887 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:57:49 ]
- >>886
サンクス >>878=883ですが その変換して、警告が出たんで聞いたんですが・・・ 警告無視していいの?
- 888 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:12:57 ]
- >>887
安全なキャストではないからね
- 889 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:13:59 ]
- 趣味グラマだけど警告は大目に見てるけど本職さんはそうはいかないんだろうな
- 890 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:14:31 ]
- ×趣味グラマだけど
○趣味グラマだから
- 891 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:24:49 ]
- >>878=883ですが
趣味とか本職さんの問題ではないと思うんだけど char型1バイト=8ビット float型は4バイト=32ビット double 型は 8バイト=64ビット 結論は、C99では、 char型文字列からfloat型 この変換をサポートする、関数は準備されてないってことですね。
- 892 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:27:36 ]
- static_castなら警告はでないけど
- 893 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:36:19 ]
- >>889
うーむ、そんなもんなのかなぁ。 俺はいつも警告レベルを最大にして、それを全部潰さないと気が済まないんだけど、 これは「俺が趣味グラマだから」こだわれることなのかな、と思ってた。
- 894 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:40:08 ]
- 趣味グラマだから、本職より入念に危うい場所を潰してもいいしその逆でもいいんだろ?
- 895 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:40:17 ]
- msvcのWallは最凶
- 896 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:41:12 ]
- >>893
Warningは、実はバグのことがあるので、基本は全部潰したほうが良い。 あまり時間がなくて、どうでもいいwarning(「使ってない変数があるよ」とか)の 場合はスルーすることもある。 あと、昔作られたコードでは、「動いているから直さない」と言うことが結構ある。
- 897 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:41:51 ]
- アドベンチャーゲームの作り方を教えてくれる人いませんか?
- 898 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:43:37 ]
- ゲーム製作技術板にGO
ttp://pc11.2ch.net/gamedev/
- 899 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:45:48 ]
- プロンプトで牧場物語やってた時期がありました、あれは習作向けだな
- 900 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:47:36 ]
- double→floatで警告出るのは桁が切りつめられて精度が下がるから。
浮動小数点型なら精度下がるだけだから、再度倍精度にキャストとかしない限りは問題なす。 int→shortだと危険だけど。
- 901 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:48:10 ]
- アドベンチャーゲームならバッチファイルで作った記憶が‥‥
- 902 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:40:34 ]
- スパゲッティコード生成してくれるスクリプトあったよな、なんていったっけ
- 903 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:49:42 ]
- 俺俺
- 904 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:52:55 ]
- 俺俺がポインタのポインタみたく見える
- 905 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:53:54 ]
- そりゃ病気だ
- 906 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 20:58:56 ]
- 浮動小数点型は「上から」数桁を保存する。
整数型「下から」数桁を保存する。 だな。
- 907 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:05:00 ]
- 俺がポインタだ
- 908 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:06:01 ]
- 俺がポインタだとすると実体は何処にあるんだ
- 909 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:07:04 ]
- 俺が実体だ
- 910 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:09:04 ]
- 俺って実体がないんじゃね・・・?あれ?うわああああああああ
っていうホラーだったんだよ!
- 911 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:12:10 ]
- 感感俺俺
- 912 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:13:31 ]
- >>907-911
そこらの講座よりポインタについて理解できました ありがとうございます
- 913 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:14:16 ]
- >>908
ポインタだって実体だ、つまりポインタという役割を持って生まれたお前という存在が 確かにここに居るということだ、自信を持て。 とか、仄かに学習効果のあるネタ書くべきかな、初心者スレ的には。
- 914 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:17:53 ]
- CASLをちょっと習ってポインタを理解した俺はおかしかったのか
今回の例で書くと連想配列になりそうで困る
- 915 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:18:09 ]
- >>913
ポインタみたいな奴って結構多いよな
- 916 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:20:03 ]
- 安価とかのがわかりやすかろう
- 917 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:20:12 ]
- 嫌な役割だなw
- 918 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:20:47 ]
- 実体俺へのポインタの実体って親の子供みたいな
- 919 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:22:26 ]
- >>916
よくアンカだけ書き込む奴がいるけど、あれが俺ポインタか
- 920 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:22:37 ]
- 実体俺へのポインタの実体は子供で実体が子供のポインタ変数名が親か
- 921 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:22:54 ]
- >>914
MASM やってポインタを理解した俺もいる。
- 922 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:23:30 ]
- 俺はC#やってポインタを理解した
- 923 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:23:37 ]
- ポインタ変数俺の実体が>>922だとすると*俺==&俺に
- 924 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:24:14 ]
- >>923の>>922は>>923にしてくださいorz
- 925 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:24:44 ]
- ちげーよ*いらねえようわあああ
- 926 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:25:18 ]
- *の使い方が複数あるのが混乱の元かもな
- 927 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:25:44 ]
- >>923-924
それはきっとthisポインタだ
- 928 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:26:54 ]
- そこの説明したかったわけじゃなかろう
- 929 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:30:33 ]
- 俺ポインタってthisポインタのことだったのか
- 930 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:31:12 ]
- thisポインタだとすると俺俺はどうなる
- 931 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:32:04 ]
- 誰彼10円
- 932 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:36:48 ]
- WindowsAPI関係の質問はダメですか?
- 933 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:38:00 ]
- APIスレあるだろう
- 934 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:38:35 ]
- >>932
こういうスレもあるけど pc11.2ch.net/test/read.cgi/tech/1196874830/
- 935 名前:デフォルトの名無しさん [2007/12/26(水) 21:46:08 ]
- 質問なんですが、標準のnewって本当にそんなに遅いのでしょうか?
下のようにpoolを作ってnewの実行時間と比較してみたのですが差が出ません #include <boost/pool/pool.hpp> #include <boost/pool/object_pool.hpp> #include <iostream> #include <time.h> using namespace std; struct Abc{ int x; int y;}; int main(){ clock_t start1,end1,start2,end2 ; boost::object_pool<Abc> p; start1 = clock() ; for( int i = 0 ; i < 0xffffff ; ++i ) { Abc* x = p.construct(); } end1 = clock() ; printf("%.10f\n",(end1-start1)/CLOCKS_PER_SEC ) ; start2 = clock() ; for( int i = 0 ; i < 0xffffff ; ++i ) { Abc* x = new Abc(); } end2 = clock() ; printf("%.10f\n",(end2-start2)/CLOCKS_PER_SEC ) ; return 0;}
- 936 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:46:17 ]
- >>933-934
どうもありがとうございます
- 937 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:48:55 ]
- >>935
newの実装次第じゃ? 同じWindows用コンパイラでもVCとBCBじゃメモリマネージャの振るまい全然違うし
- 938 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:49:45 ]
- newを連続して呼ぶだけではダメ。ベンチにならない。
途中でdeleteしたり、サイズの違う連中もnew-deleteしたりしないと。
- 939 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:50:49 ]
- video.google.com/videoplay?docid=2914803742593360351
- 940 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:56:48 ]
- 時間の計り方間違ってね?
windowsのquerryperformancecounterを使ったprogress_timerで測定したら 0xffff回でもpool使った方が20倍くらい速いんだけど
- 941 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 21:59:45 ]
- >>935
趣味でちまちまと俺Lispを作ってて、型はすべてスマートポインタで扱ってるんだけど、 自分でメモリプール作って標準newと取り替えたら、スクリプトの実行速度が確か5割増しくらいになった。 開発環境はBCB6(これでCUIプログラム作ってるのって変かもしれんけど、そこはスルーしてw)。
- 942 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:01:44 ]
- >>941
FsstMM+標準newのテストもきぼんぬ
- 943 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:06:01 ]
- mallocはMT用ライブラリをリンクすると中でロックしてたりするしなー
- 944 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:17:36 ]
- クラス設計について詳しく書いてあるサイトとか本とかないだろうか?
C一通り終えてC++に移ったんだけれども、一先ず手元の本でテンプレートに入る前辺りまで進んだ そこでおさらいも兼ねて適当なプログラムでも組もうと思ったんだけど、実際に組んでみると クラス設計すんごい死ねる
- 945 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:19:30 ]
- 向き不向きがあるから注意な、ゲームとかCのが良かったり
- 946 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:25:21 ]
- UNIX環境でC言語を利用して音声ファイルを利用したいと思っています。
キーボードを入力したら音声が再生できるようになればよいのですが 検索したところWindows環境でのplaysound()という関数は見つかったのですが UNIX環境で使う関数が見つかりませんでした。 どなたか教えていただけないでしょうか?
- 947 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:31:25 ]
- >>944
クラス設計はオブジェクト指向のスキルが必要だから、 オブジェクト指向の本を読むといいよ クラスは、似たようなオブジェクトに共通する特性を表現したものだから、 まずはクラスとして表したい対象の共通的な特性が何かを考えて、 その対象がどういったデータと動作を持っているかを考えればいい。 例えば、おまいと俺の共通特性として、うんこする ってのを抽出したとするよ そうするとPersonクラスにはputOutUnko()なんてメンバ関数が定義されるわけだよ 腹の中にはうんこが溜まってるんだから、うんこがどれぐらい溜まってるかっていうデータを持ってるわけだ そうなると、volumeOfUnko なんていうメンバ変数が必要だよね class Person { public: void putOutUnko() { if(volumeOfUnko > 0) { volumeOfUnko--; } return; } private: int volumeOfUnko; };
- 948 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:31:52 ]
- 「UNIXでは」、と一言ですませられる関数・APIは「無い」
/dev/dspに書き込んだり、KDEのライブラリ叩いたり、 gstreamを叩いたり、環境によって全然別
- 949 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:34:04 ]
- >>948を翻訳すると、UNIXには標準の音声ライブラリがありません、ということ
だからライブラリを探す旅に出なさい、と
- 950 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:36:45 ]
- 逆に言えば、探せばライブラリは余裕で見つかる。
- 951 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:38:29 ]
- >>947
なるほど・・・まだC++の感覚を掴んでないようですorz どうしても基本はCにあってクラスを利用する、という使い方しかできてないです 例えばそのPersonクラスがあったとして人が複数人居た場合Personクラスのオブジェクトを複数作るんですよね? そういう時にPerson1とPerson2があるとして、Person1が何かするとPerson2に影響が出るような場合Person1のメンバ関数内でPerson2のメンバ変数を書き換える必要なんかが出てしまうと思うんです そういうのがいくつか出てきて、クラス設計の失敗だろうか?と思ったんですが、なんかすごい勘違いしてそうです。 指摘してもらえると助かりますorz
- 952 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 22:47:08 ]
- デザインパターンの本を読めば世界が変わるよ。
- 953 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:03:43 ]
- >>951
人の定義をPersonというクラスで行ったわけだから、個別の太郎やら花子ちゃんは、変数として宣言していく Person taro; Person hanako; taro.putOutUnko(); hanako.putOutUnko(); ここまではいいとして、 taroがhanakoのメンバ変数を直接いじるようなことはしない。 オブジェクト間の作用は「メッセージ」という考え方によって行われる。 この相互作用は設計の段階では、太郎やら花子みたいな具体的なオブジェクトではなく、Personといった抽象的なレベルで考える。 ここで、Personをうんこの国の国民とする。 うんこの国にはうんこの王様がいて、国民にうんこしろ、と命令できる。 この命令(メッセージ)を国民に伝えるには、王様が国民のputOutUnkoを呼び出せばいい。
- 954 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:04:49 ]
- と、その前に、王様と国民の関係を明確にしないといけない。
ここでは、王様は国民を管理する立場とする。国民は王様に管理される立場。 だから王様と国民は 1 : n の関係になる。 以上のことをC++として実装するとこうなる。 class King { public: // うんこ命令関数 void orderUnko(string& name) { map<string, Person>::iterator ite = kokumin.find(name); // 国民を名前で探す if( ite != kokumin.end() ) { // 探している国民が見つかったら ite->second.putOutUnko(); // うんこをしてもらう(国民への愛のメッセージ) } } private: map<string, Person> kokumin; // 国民を名前で管理する };
- 955 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:18:59 ]
- Kingクラスのメンバ関数はstaticにはしないんだろうか
テンプレートってやつだろうか、まだやってないんだがなんとなくわかったかもしれない しかしite->second.putOutUnko();のsecondってなんだろう iteに見つかった国民の名前が格納されているとしたらsecondにはその国民nオブジェクト名が入ってるのか・・? んなわけないよなぁorz
- 956 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:19:28 ]
- >779
errata に載ってたべ。 www.aristeia.com/BookErrata/ec++3e-errata_frames.html
- 957 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:27:09 ]
- >>955
mapのイテレータの firstはstring(ここでは国民の名前)、 secondはPerson(国民オブジェクト) をそれぞれ示している first second ┌─┬───┬──────┐ │1│ "太郎"│ Person taro; │ 2 "花子" | Person hanako;| 罫線ずれまくり、マンドクセ Kingのメンバ関数orderUnkoはstaticにしない 具体的な王様が存在するわけだから King ore; ore.orderUnko("sakura"); とかやって、さくらたんに排泄を強要したりしてハァハァ
- 958 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:30:02 ]
- あ、なるほど
mapとやらに識別子(国民名)と該当オブジェクトへのポインタかなんかを宣言する時に格納していくのか Kingのメンバ関数からPersonのメンバ関数が呼び出せるのは、普通だよな なるほどさんくす、最初にテンプレートの方をやってくることにするぜ、助かりました
- 959 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:36:24 ]
- 横から失礼、そのKingを複数宣言する必要がある場面でどういった場面なんでしょうか?
- 960 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:50:59 ]
- 今回の場合は、ある特定のうんこの国に着目したから、Kingオブジェクトは1つしか登場しない。
でも、視点を変えて、国がたくさんある場合は話が違ってくる。 うんこの国が複数存在して、首脳会議とかやると、国の数だけ王様にご登場いただかなければならない まぁ、ここらへんは実際の分析対象の事情による。 プログラムってのは目的があって存在するわけだから、その目的に沿ったように分析しなきゃいけない。 分析の話ついでに、 分析対象は視点によって認識のされ方が変化していくってのを忘れないで。 今回は王様と国民の関係に限定して分析したけど、 王様の家族からすれば、王様は父親だったり夫だったりするわけ。 だから、分析するときには、どういう視点で分析しなきゃいけないのかをまず決めとかなきゃいけない。 今のケースだと、王様と国民の関係って視点で分析したけど、 首脳会議なんか出てきて、国家間の視点に移行したわけだよ。これはこれで、話が違ってくるよね。 「視点が変わった」ってところを強く意識するのを忘れないでね、って話。
- 961 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 23:54:28 ]
- なるほど、map<int,string,Person>とかにして国を識別するわけではないんですね、ありがとうございました。
- 962 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:01:49 ]
- いや、そのnは要らない。
仮に、float型の変数fに必要だと言うのならfloat f = float(atof(str))でいい。 勿論、float f = atof(str)だけでも構わないし、float f = static_cast<float>(atof(str))としても構わないが。
- 963 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:21:56 ]
- どが3個くらいつく素人ですが・・・。
>>960 うんこ国同士の相互性や関係性をモデル化したプログラムを作るのと、 うんこ国内でのうんこ内政をモデル化したプログラムを作る場合とで、 うんこ国王に実装させるべきメソッドが変わってくるということでしょうか。
- 964 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:23:26 ]
- そもそも国王は必要なんでしょうか…。
とか思い出すと一行も書けなくなる。
- 965 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:25:05 ]
- うんこをさせる、働かせる、給料をやる、とかPersonクラスにある関数と同じ数だけKingクラスのメンバ関数が増えていくんじゃないの
- 966 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:26:10 ]
- 国王が必要ない程度ならクラスを使わなくても良さそうな・・・?
俺は>>965と同じ解釈してた
- 967 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:28:03 ]
- taro.Insert(hanako);
上のコードでメモリリークしている様なのですが‥‥
- 968 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:36:20 ]
- サイズが合わないんじゃないの?
- 969 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:37:58 ]
- taroにガベージコレクタを被せてください。
- 970 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 00:39:49 ]
- >>967
下剤使いすぎたんじゃないの?
- 971 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:34:56 ]
- >>963
まったくもって、そのとおり もしかすると、いくつか似たようなメソッドが出てくるのかもしれないけど、視点は違ってくる。 世の中に万能なプログラムなど存在しなくて、 目的に合わせて作っていかなきゃいけないという現実が何よりの証拠。 >>964 目的がうんこするだけなら、国王なんていらんのです ここでは、オブジェクト間の関係を示すため、 うんこの国をふと思いついたので、そういう設定にしただけです 仮にあなた自身の「うんこをするという行為」について分析した場合、 トイレやトイレットペーパー、あなたといったオブジェクトが関係として表れて来るのです。 水を流す、尻をふく、うんこする、というように はい、うんこは素晴らしいのです >>965 そんなことはないです 基本的に、それぞれが持っている動作は異なる 例えば、国王が国会での審議を下すという動作を持っているとしても、国民は持たない。 これはそれぞれの「役割」が異なるから。 国王が国民に直接給料をやる、ってことはしないので、 雇い主というクラスに、国民に給料あげるという責務を負わせる。 ここでも、視点が変わったから、これまでのクラスは考え直さなきゃいけない。雇い主だって国民の一部なわけだし。
- 972 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:37:34 ]
- 使わない引数の警告を除く
gcc #pragma unused VC7 or 8 で unusedインライン関数にあたる関数(可変長引数でOK)を探してます
- 973 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:48:42 ]
- #pragma warning(disable:警告番号)
ではダメ?
- 974 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:51:07 ]
- 後戻りを防ぐためにも、設計は上流からね。アジャイルっぽくガシガシ作るのはそれを覚えてからでも遅くない。
- 975 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 01:55:47 ]
- >>971
つまり、クラスを作るとなると必ずどこかで1:nが成立するということでしょうか? 今回の場合複数用意されるであろうPersonクラスがあり、それを管理・操作するKingクラスがある、というような
- 976 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 09:46:29 ]
- ダウンキャストってもの凄い勢いで嫌われてるけどダウンキャスト無しで何とかなる物?
基底クラスのインターフェイス設計が悪いと言われればそれまでだが 派生したオブジェクトを基底クラスのポインタで受けないといけないときとかキャストしないといけないシーンが多すぐるorz
- 977 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 09:58:07 ]
- dynamic_cast使ってキャスト失敗時の処理きちんとやっておけば問題ないんじゃね?
- 978 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:07:54 ]
- >>277
Effective C++なんか読んでみるとダウンキャストするよりは 派生クラスのポインタで示すか、 それが出来なければ基底クラスにデフォルトでは何もしない仮想関数を追加しろっていってるけど 機能を追加するたびそんなことやってたらインターフェイス部分が肥大化して 高い位置にあるクラスに対するインターフェイスとしては使いにくくなるわけで・・・ やはり設計は計画的にということなのかorz
- 979 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:13:33 ]
- ヘルパ関数にすればいい
- 980 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:26:22 ]
- ヘルパ関数とはなんでしょうか?
ぐぐってみたけどいまいち納得のいく説明がないです・・・
- 981 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 12:47:14 ]
- >>868
亀杉だがあらかじめ引数が変化することが分かってるなら動的引数なんて方法もあるな
- 982 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 14:31:36 ]
- 取得したデータをfile.txtというテキストファイルを自動生成してそこに出力したくて
//取得データのfile.txtファイルの自動生成 FILE *fp; fp = fopen("file.txt","w"); と書きました。 コンパイルしたら error C2065: 'fp' : 定義されていない識別子です。 と表示されました。fpというのはどのような宣言をすればいいのでしょうか。 環境はWindows XP Pro SP2、メモリ2G、VC++2005(Express)です。 アドバイスお願いします。
- 983 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 14:39:16 ]
- >>982
そのコードを見る限りでは、それで問題なさそうだよ。 ・#include <stdio.h> があるか ・C++ではなくCなら変数宣言はブロックの先頭じゃなきゃいけない ・直前のコメントを消してみる などをチェキ
- 984 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 14:57:35 ]
- >>983
#include<stdio.h>がありませんでした。 追加してみたけど変わりませんでした。 Cとかかれていたサンプルプログラムをいじっているのですが拡張子が*.cppなのでC++なのでしょうか。 int main(){ 直後に FILE *fp; を置いたらエラーが消えました! ありがとうございました! もうひとつ質問で申し訳ないのですが *.cはC言語でしょうけど*.cppというのはCでもC++でもあるのでしょうか。 判別方法というのはあるのでしょうか。
- 985 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 15:11:53 ]
- >>984
大概のコンパイラは*.cをC、.cppをC++と見なしてコンパイルする。 C99以外のCなら大抵の場合C++としても通るから、普通は.cppで問題ない。 (ただしDLLのソースとかでエクスポート関数がある場合は注意)
- 986 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 15:12:00 ]
- >>984
一般的なコンパイラならファイル名が*.cppならC++とみなして コンパイルすると思うけど、 それをCとしてコンパイルする手段はあるだろうし、 あなたがどうやってコンパイルしているかわからないので、 何とも言えず。 気になるようだったら、main()の最初に #ifdef __cplusplus printf("C++なの\n"); #else printf("Cなの\n"); #endif とでも入れてどっちが表示されるか試してみるといいかもね。
- 987 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 15:14:04 ]
- >>985-986
なるほど〜。 ありがとうございます。 コンパイルの方法は VC++のソリューションエクスプローラーのソースファイルを右クリックする といった方法でやっています。
- 988 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 16:07:49 ]
- へぇ、VC++では右クリックでコンパイルされるのか。珍しいI/Fだな。
- 989 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 16:18:43 ]
- コンテキストメニューからソースファイル単位のコンパイルってことだろ
- 990 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 17:31:22 ]
- template<bool>
struct CompileTimeChecker { CompileTimeChecker(...); }; template<> struct CompileTimeChecker<false> {}; #define STATIC_CHECK(expr, msg)\ {\ class ERROR_##msg {}; \ (void)sizeof(CompileTimeChecker<(expr) != 0>(ERROR_##msg()));\ } int main() { STATIC_CHECK(true, HOGEHOGE) } Modern C++のCompileTimeCheckerというコンパイル時にエラーチェック をするマクロなのですが、コンパイルが通るはずの条件で呼び出して も、VC++ 2008では以下のエラーが出てコンパイルできません。 関数型へのキャストが正しくありません。 'CompileTimeChecker<__formal> (main::ERROR_HOGEHOGE (__cdecl *)(void))': sizeof オペランドが正しくありません。 g++ v4でも 関数へのsizeof?が不正だといわれます。何か間違ってるところはありますか? 本のソースそのままなのですが。
- 991 名前:990 mailto:sage [2007/12/27(木) 17:39:24 ]
- ちなみにBCCでは通りました。
- 992 名前:990 mailto:sage [2007/12/27(木) 18:00:30 ]
- どうやらsizeofに一時オブジェクトを渡すのは不正みたいですね。
以下でうまくいくようです。著者はどうやってコンパイルできたか 疑問です。コンパイラの違いでしょうか?ソースも間違っている みたいです。 template<bool> struct CompileTimeChecker { CompileTimeChecker(...){} //定義が必要だった }; #define STATIC_CHECK(expr, msg) \ {\ class ERROR_##msg {};\ CompileTimeChecker<(expr) != 0> c = CompileTimeChecker<(expr) != 0>((ERROR_##msg())); \ (void)sizeof(c); \ }
- 993 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 18:10:10 ]
- >>992
BCCしか使ってないんじゃね?
- 994 名前:990 mailto:sage [2007/12/27(木) 18:16:35 ]
- >>993
いくつかのコンパイラで試したと書いてありましたが それらでは問題なかったんでしょうね。 もはや (void)sizeof(c); \ の行は不要ですね。 どうやらエラーが出ていたのは一時オブジェクトではなく sizeof(Widget())という形が関数に対してsizeofが行われて いると判断されてたみたいです。これはもちろん不正ですが。
- 995 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 20:27:19 ]
- 995
- 996 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 20:33:48 ]
- pc11.2ch.net/test/read.cgi/tech/1198755167/
はい新スレ >>1の名前は気にしないでくれ。間違えた。
- 997 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 20:36:50 ]
- 擦れた手乙埋め
- 998 名前:998 mailto:sage [2007/12/27(木) 20:41:39 ]
- 99−
- 999 名前:999 mailto:sage [2007/12/27(木) 20:42:00 ]
- 999666999666
1000!
- 1000 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 20:42:22 ]
- 1000は俺が取るよ。
- 1001 名前:1001 [Over 1000 Thread]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
|

|