- 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
- 403 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 22:43:14 ]
- だれか>>391に突っ込んでやれよw
>>401 「_」始まりの単語はシステム予約される可能性があるから。
- 404 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 22:45:19 ]
- pは何処から出てきた?
でいいのかな。
- 405 名前:389 mailto:sage [2008/03/05(水) 22:49:40 ]
- >>403
ありがとうございます。 }の後ろに;をつけても、うちの環境では動きました。
- 406 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:06:52 ]
- レスありがとうございます。
fmtflags setf(ios::hex, ios::basefield); で、 ios::hex が 0x0800 ios::bsaefield が0x0e00 とすると、 ios::hex & ios::basefield で、 0000 1000 0000 0000 と 0000 1110 0000 0000 の論理積なので、 0000 1000 0000 0000 で、結局 ios::hex(0000 1000 0000 0000) そのものと変わらないじゃんと思ったのですが、どこかで勘違いしているのでしょうか。
- 407 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:08:47 ]
- >>406
> 論理積なので、 いや、違うから。
- 408 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:14:46 ]
- とりあえず
SAFE_DELETE(_arr); を {delete (_arr); (_arr)=NULL;}; に置き換えてコンパイルが通るかどうか。 あと、コンパイラは何?
- 409 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:16:54 ]
- >>400
flgは立てたいビット、maskはflgの属するフィールドを指定するが、 flgがmaskのフィールドに属さなかった場合に、 余計なフィールドのビットを立ててしまうのを防ぐため。
- 410 名前:デフォルトの名無しさん [2008/03/05(水) 23:24:26 ]
- 質問させて頂きたいのですが、
このように宣言しましたが、 char a[] = "1234"; char b[] = "4567"; char* abc[2][255]={ a, b }; *abc[1]で値が取り出せません。 こういうやり方は無理でしょうか?
- 411 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:30:23 ]
- >>410
abcはポインタが二次元に並んだ配列だが、それでいいのか? やりたいのは、ポインタの一次元配列のように見えるが。 つまり、こう。 char* abc[2] = {a,b}; そうしたら、 *abc[0]は'1' になる。
- 412 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:47:55 ]
- >399
>あ、_arrがテンプレートの、T**型なのですが >395を見ると delete _arr[i]; とあるから、_attrは new[] で確保したアドレスを前提としていないか? それなら delete ではなく delete[] とすべき。 コンパイルエラーの件とは無関係だが。
- 413 名前:デフォルトの名無しさん [2008/03/05(水) 23:55:17 ]
- 411>
おっしゃるとおり二次元配列のポインタですね。 全然気がつきませんでした。 ありがとうございます。
- 414 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 00:16:05 ]
- >389
とりあえず本論とは別だが、その手のマクロは if(flag) SAFE_DELETE(p); else do_something(); みたいにするとエラーになるのでしばしば #define SAFE_DELETE(p) do { delete (p); (p) = NULL; } while(0) のように定義されることが多い。
- 415 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 00:23:46 ]
- この場合なら
#define SAFE_DELETE(p) ((void)(delete (p), (p) = NULL)) でもいいと思うけどね。 まあ、式中に書けるのが嫌だというのであれば、 do-while 使ったのでもいい。
- 416 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 00:50:58 ]
- SAFE_DELETEを使ってるのを見ると
ああ10年前に学ぶのを止めてしまったんだなと分かる 自分自身がSAFE_DELETEされてしまったんだ
- 417 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 03:06:00 ]
- >416
ちなみにトレンドは?
- 418 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 03:32:56 ]
- 416じゃないけどshared_ptrとかじゃないの
- 419 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 03:44:42 ]
- ずっと前から auto_ptr と vector によって delete の出番はほとんど無くなっている。
- 420 名前:417 mailto:sage [2008/03/06(木) 04:10:27 ]
- ああ、そういう意味でか。勘違いしてた、さんきゅ。
- 421 名前:デフォルトの名無しさん [2008/03/06(木) 06:12:17 ]
- ガベージコレクションの緩いやつの理論はありますか?
たとえばファイルに書き出すために複数のバッファを用意したとして もう書き込みが発生しないだろうと予測されたら書き出してメモリを解放するというやつです
- 422 名前:デフォルトの名無しさん [2008/03/06(木) 06:15:54 ]
- 100ファイルに書き込みがあって試行するうちに総数の10%のみの書き込みだけになったら
それ以外は書き込みがないだろうと思って解放したいのですが、タイミングをいつにするか具体的に計算する方法は ありますか
- 423 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 06:49:42 ]
- LRUでぐぐればいいんじゃない?
- 424 名前:デフォルトの名無しさん [2008/03/06(木) 07:02:10 ]
- ちょっと違うんです
たとえばバッファは10個なら、10個前が一番古いですが、11個目の後 1〜10番が続くかもしれないじゃないですか もっとも利用されなかっただけではなく、バッファサイズを増したほうがいいかも調べたいんです
- 425 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 09:24:11 ]
- 最終使用時間を記録しといて、N秒以上使われてなかったら削除
とかでいいんじゃない?
- 426 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 14:33:28 ]
- >>419
それって大問題なんじゃなかったっけ?
- 427 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 16:20:10 ]
- 質問でございます。
int* A_PTR = new int[5]; として確保した領域の、たとえば、A_PTR[3]のような、 途中の領域だけ解放(delete)することは可能でしょうか?
- 428 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 16:45:33 ]
- >>427
無理
- 429 名前:427 mailto:sage [2008/03/06(木) 16:59:15 ]
- >>428
やはり無理なんですね。 別のポインタに入れてからdeleteなど、 いろいろ実験していて気が狂いそうでしたので 大変すっきりしました。 れす、ありがとうございました。
- 430 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 17:32:23 ]
- CString cstr;
unsigned char uc[sizeof(cstr)] = (unsigned char)(LPCSTR)cstr; コンパイル通りません。要は、↓を動的にしたいです。 unsigned char uc[10]="0123456789"; よろしくおねがいします
- 431 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 17:39:19 ]
- 配列のサイズを動的に変えるのは無理です。
ヒープで取って良いのなら、 char* uc = new char[文字列の長さ+1]; strcpy(uc, コピーしたい文字列へのポインタ) でもしてください。
- 432 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 17:41:23 ]
- これではだめ?
unsigned char* uc = (unsigned char*)(LPCSTR)cstr;
- 433 名前:430 mailto:sage [2008/03/06(木) 18:04:24 ]
- >>431
やっぱり無理ですか。。 >>432 uc[0],uc[1]みたいに、ポインタではなく配列としてアクセスしたいんですよね。。 なんか根本的に駄目なソース書いてる気がしてきたので、発想を変えてみます。 どうもありがとうございました。
- 434 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 18:06:06 ]
- 動的に大きさを変えたいならstd::vector使えばいいやん。
- 435 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 18:06:34 ]
- あ、文字列ならstd::stringな。
- 436 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 18:09:14 ]
- >>433
添え字演算子はポインタでも使えるけど。
- 437 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 18:29:09 ]
- >>433
E1[E2] は *((E1) + (E2)) の syntax sugar だ。 uc[0] → *(uc + 0) uc[1] → *(uc + 1)
- 438 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:40:20 ]
- uc[0] → *(uc + 0) → *(0 + uc) → 0[uc]
uc[1] → *(uc + 1) → *(1 + uc) → 1[uc]
- 439 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:43:02 ]
- >>438
さんざん既出 "0123456789ABCDEF"[i] を大昔はやっていた。
- 440 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:44:58 ]
- それは関係ないだろう・・・。
i["0123456789ABCDEF"] ならともかく。
- 441 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:48:59 ]
- >>440
おんなじやんけ
- 442 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:49:41 ]
- あま〜〜〜い
- 443 名前:389 mailto:sage [2008/03/06(木) 22:58:20 ]
- みなさん色々とアドバイスありがとうございました。
>>408 通ります。Visual Studio.NET 2003を使ってます。 >>412 _arr = new T*[_max];という感じで確保してます。 delete[] は使ったことないですが、やってみます。 >>414 それは思いつきませんでした。 >>415 その書き方は初めて見ました。 >>416 10年前というか、C言語始めてまだ1ヶ月半なんですが。。。
- 444 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:05:22 ]
- アレだ、「個体進化は系統進化を繰り返す」
- 445 名前:デフォルトの名無しさん [2008/03/06(木) 23:10:44 ]
- 以下のコードでファイルの2番目のバイトだけを
書き換えようとしたんですが 全く何も代わりません #include <stdio.h> int main(void){ FILE *fp; char cIn; char cOut = 'X'; int cnt; fp = fopen("test.txt", "rb+"); fread(&cIn, 1, 1, fp); printf("%c\n", cIn); cnt = fwrite(&cOut, 1, 1, fp); printf("%d\n", cnt); fclose(fp); return 0; } <test.txtの内容↓> ABCDEFG <出力結果↓> A 1 これはどう理解したらいいんでしょうか? BCとVCで試してみました
- 446 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:20:59 ]
- freadしてA読んで、表示した(出力1行目)
fwriteして次のBをXで上書きして、(test.txtの中身変化) 要素数の1が戻ってきて表示(出力2行目) 何が不思議なんだ?
- 447 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:21:31 ]
- >>445
readからwriteに切り替える時、もしくはwriteからreadに切り替える時は 必ず間にfseek()を挟む事。
- 448 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:39:54 ]
- >>445
コンパイル君のぼやき 「freadとfwriteに&使わないで下さいよ。あと、辞書ぐらい買ってくださいよ。 何でもかんでも私に聞かないで下さいよ。なんでもかんでもプリントにしないでくさいよ。 宣言するんだったらまともに宣言してくださいよ。main関数の引数ぐらい使ってくださいよ」
- 449 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:43:29 ]
- Visual C++についてなのですが、
分割コンパイルについていまいちよくわかりません。 main.ccp ClassA.ccp Def.h ClassA.h resource.h と5つあって、 main.ccpではDef.hがインクルード、 ClassA.hでもDef.hがインクルードされ、Classの宣言と、インラインでのメンバの定義、 ClassA.ccpではClassA.hとDef.hがインクルードされています。 また、Def.hではresource.hがインクルードされているほか、#ifdnefを使って重複しないようにしています。 ビルドをすると、C2143構文エラーなど、ものすごい沢山のエラーが出てきてしまいます。 このようにヘッダとソースファイルを分割する場合、どのようにインクルード等をすればよいのでしょうか。
- 450 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:48:48 ]
- > ClassA.ccpではClassA.hとDef.hがインクルードされています。
とりあえずこのDef.hはインクルードしなくていいいような・・・
- 451 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:49:48 ]
- >>449
その文面だけを見る限り、ファイル分割のしかたもインクルードの仕方 も問題ないよ。エラーが出るのはファイルの内容がどこか間違っている とか、何かの定義が足りないとか。
- 452 名前:デフォルトの名無しさん [2008/03/06(木) 23:51:02 ]
- newを使って確保した領域をポインタとして返す関数を作ったんですけど、開放するにはどうすればいいんですか?
個人的には↓の方法でできるような気がするのですが、できるかどうか心配なので教えてください char *func(){ char *buf = new char[1024]; //bufにデータを入れる return buf; } int main(){ char *ptr = func() //ptrであんな処理やこんな処理 delete [] ptr; }
- 453 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:51:16 ]
- 膨大な数のエラーと聞くと、本当に何か書き間違えている気がする。
- 454 名前:デフォルトの名無しさん [2008/03/06(木) 23:55:48 ]
- 初心者も上級者もnew使うならクラスでつかえよな
解放する方法を間違えたり、しなかったりする クラスならデストラクタがする
- 455 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:56:25 ]
- >>452
どうでも話にはなるが、 メイン関数のファンクがカマを彫られたって泣いてるが、 わかっててほられたのかほられてないのか気になる。
- 456 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:56:44 ]
- >>452
それで特に問題はないが、 void func(std::vector<char>& buf) { buf.resize(1024); // buf にデータを入れる } int main() { std::vector<char> buf; func(buf); // buf であんな処理やこんな処理 } とやった方が面倒がないし例外とかあっても確実にメモリが解放されるから安全で便利。
- 457 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:57:05 ]
- >>454
それ・・・なんの冗談?
- 458 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:57:48 ]
- 日本語はおかしいが、要するに RAII ってことじゃね?
- 459 名前:デフォルトの名無しさん [2008/03/06(木) 23:58:43 ]
- string buf
buf.reserve(1024) &buf[0] でも良い
- 460 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:59:30 ]
- それはちょっと・・・。
length 変わらないじゃんか。
- 461 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:59:47 ]
- >>451
あってますか… 1行目初っぱなから Naive_Grid_Class.cpp(4): error C2143: 構文エラー : ';' が 'NaiveGridCtrl::ChkhCtrl' の前にありません。 などと出てきて(下のようなコード) #include "DefHeader.h" #include "Naive_Grid_Class.h" BOOL NaiveGridCtrl::ChkhCtrl(){ return (BOOL)hCtrl; } もう何が何だかさっぱりなんですが…
- 462 名前:デフォルトの名無しさん [2008/03/07(金) 00:01:05 ]
- >>457
class ABC { char *buf; ABC(){確保} ~ABC(){解放} }; main(){ ABC x; } とやれば簡単って事
- 463 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:03:17 ]
- 呼ばれたタイミングだけでnewしたいとは限らんだろうに
- 464 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:04:43 ]
- >>461
class NaiveGridCtrl の最後の ; を忘れているんじゃないか?
- 465 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:08:16 ]
- 質問です。
前から思ってたんだけど、 メモリの解放以外にデストラクタって使い道あるの?
- 466 名前:デフォルトの名無しさん [2008/03/07(金) 00:09:25 ]
- データの残りを書き出す
- 467 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:11:43 ]
- リソースの開放
- 468 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:22:56 ]
- 質問です。
C++で住所録を作っているのですがソートができません。 構造体に名前、住所、年齢、電話番号・・・など 項目ごとに入れるところまではできたのですが、 名前、住所、年齢、電話番号・・・など項目ごとに分かれているので、 名前なら名前だけがソートされてしまい他のはそのまま。 名前をソートしたらその順序で他の項目が付いてくるようにするには、 どうしたらいいのでしょうか。
- 469 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:24:16 ]
- >>468
まず、どうやってソートしてるんだ? そこのプログラムみせてみ
- 470 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:24:24 ]
- >>468
え?なんでそうなるのさ? ソートした順に構造体を並べ替えればいいだけじゃんw
- 471 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:25:22 ]
- 名前だけ入れ替えてるんじゃねw
- 472 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:26:52 ]
- 構造体にしてる意味がねぇw
- 473 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:27:37 ]
- 名前をソートするんじゃなくて、名前のソート順通りに構造体のオブジェクトをソートするんだ。
- 474 名前:デフォルトの名無しさん [2008/03/07(金) 00:33:47 ]
- int i = 1;
while(i <= 10){ fout[i].open("dat$i.dat"); fout[i] << i <<'\n'; i++; } てな感じでデータファイルを10個作りたいのですが、 ""の内のiは変数と見てくれなくて困ってます。 何かいい方法ありませんか??
- 475 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:36:20 ]
- >>474
あたりまえだろw こうすればいい char filename[100]; sprintf( filename, "dat$%d.dat", i ); fout[i].open( filename );
- 476 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:36:50 ]
- >>474 stringstream
- 477 名前:デフォルトの名無しさん [2008/03/07(金) 00:37:46 ]
- >>468
#include <iostream> #include <string> #include <set> using namespace std; class memberlist{ public: string name; string tel; string adress; memberlist(string a, string b,string c){ name=a; tel=b; adress=c;} bool operator<(const memberlist& a)const{ if(name<a.name)return 1;return 0;} }; main(){ set<memberlist> x; x.insert(memberlist("山田太一","030000000","東京都")); x.insert(memberlist("明石家明","077777777","沖縄県")); x.insert(memberlist("佐藤一郎","051111111","大阪府")); set<memberlist>::iterator p; for(p = x.begin(); p!=x.end(); p++){ cout<< p->name <<" "<< p->tel <<" "<< p->adress <<endl; }}
- 478 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:41:10 ]
- >>463
どちらにしろ管理クラスに入れとけば デストラクタが勝手に delete してくれるだろ。
- 479 名前:445 mailto:sage [2008/03/07(金) 01:06:00 ]
- みなさんドモドモ
>>447 それそれ。それです。 fseek(fp, 0, SEEK_CUR); が必要みたいなんですが これがわからない。 カレントポジションから0バイト進めるのは 何もしないのと同じなのではないのでしょうか? OSのAPIなどの場合 readしてそのままwriteする事でファイル位置が 自然に進む事が多い気がする訳ですが この仕様はよくわからないです これはC(ライブラリ)の明示された仕様なのでしょうか?
- 480 名前:445 mailto:sage [2008/03/07(金) 01:12:39 ]
- そうそう。あと一つ・・・
fwriteで1バイト書き込めたはずなのに その1バイトはどこへ行ってしまったんでしょうか・・・
- 481 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:13:18 ]
- >>479
APIと違って、バッファリングするのが前提だからfseek()などでバッファを同期を取ることに決められている。
- 482 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:16:55 ]
- >>461
Naive_Grid_Class.h の最後に ; が足りないとか、 BOOLの定義がどこにもないとか。
- 483 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:17:54 ]
- >>480
同期を取っても書き換わらない?
- 484 名前:デフォルトの名無しさん [2008/03/07(金) 01:22:57 ]
- >>475
そのようにすれば、できました! ありがとうございます。 >>476 stringstreamも勉強します。
- 485 名前:445 mailto:sage [2008/03/07(金) 01:49:51 ]
- >>481
なるほど。仕様ですか・・・ 多分FILE構造体の内容とかから必然なのかな? 直感的には把握が難しかったです >>483 fseekはさめば書き換わりますが、 はさんでなくてもfwriteの結果が1というのが 納得いかず・・・ 試しにfread/fwrite/fseek(fp, 0, SEEK_END) というのもやってはみたけれどやはり書き換わらず・・・
- 486 名前:デフォルトの名無しさん [2008/03/07(金) 02:03:11 ]
- int main(){
fin.open("aaa... fout.open("bbb... function(....); } function(.....){ fout << "thanks" <<'\n'; } のようにmain関数でデータファイルを開いて、 function関数の中に開いたファイル持ってきて、書き込みたいんですけど。 どうするのがいいのでしょうか?
- 487 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:11:36 ]
- >>486
ストリームを引数にとればいいんじゃねーの?
- 488 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:23:55 ]
- >>486
ストリームを大域変数にすればいいんじゃねーの?
- 489 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 02:48:25 ]
- >>486
ストリームを参照で取る constで取ったらあかんよ
- 490 名前:デフォルトの名無しさん [2008/03/07(金) 03:42:36 ]
- >>486
(ofstream& fout[], ifstream& fin[]) ってことですか?? 参照型の配列は許されないとかなるんですが。。。 困り果てた。
- 491 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 03:47:08 ]
- >>490
何故いきなり配列に? >486では一言もそんな話が……
- 492 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 03:50:43 ]
- >>490
常考参照のポインタだろ *&fout
- 493 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 04:00:42 ]
- #include <iostream>
これで通る #include <fstream> void sub(std::fstream* f) { f[0]; } int main() { std::fstream f[10]; sub(f); }
- 494 名前:デフォルトの名無しさん [2008/03/07(金) 04:17:54 ]
- >>493
すいません、素人目からはさっぱりなんですが。。。 fout,fin???どうなったのでしょうか??
- 495 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 04:25:17 ]
- >>494
配列だったらリファレンスではなくポインタで渡せばいいだけの話。
- 496 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 04:28:51 ]
- >>494
あんた>486=>490? >489に答えがあるのに、それをどう曲解したのか>490になって、 >491の質問を無視して>494みたいなこと言われても最早誰も対処できないぞ。
- 497 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 07:12:46 ]
- もらった回答をすっ飛ばす奴の神経がわからんね。
漢字読むのが面倒臭いからって、上の行↑を「もらったをすっばすのがわからんね」と読んで 「うーん、さっぱりわかりません」とか一人で勝手に困ってるようなものだろ。
- 498 名前:デフォルトの名無しさん [2008/03/07(金) 08:49:37 ]
- どっちでもいいといえば どっちでもいいのですが、
現在ゲームを作ってまして、敵の動きを実装するのですが、 C言語で関数のポインタを保持し、タイミングが来たら 保持していた関数を呼び出すのと C++で、基本のクラスを用意し、それから派生してポリモーフィズムで呼び出すのと どちらが良いでしょうか 開発規模は個人なのでそれほど多くならないです、ですがまだ、仕様が決まってないのでなんともいえないのです。 なにが不満かというと Cだと 関数だらけになってしまう C++だと 開発に時間がかかったら保守が大変そうなことです
- 499 名前:デフォルトの名無しさん [2008/03/07(金) 09:01:36 ]
- 作ったことがないが、C++に一票
- 500 名前:デフォルトの名無しさん [2008/03/07(金) 09:03:21 ]
- 迷ったらC++。これ鉄則。
- 501 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 10:54:41 ]
- >>498
Commandパターン or Callback by template
- 502 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 11:07:04 ]
- くだらない質問で申し訳ありません。
namespace myname{ hogehogehoooge; }; //← namespace mymyname{ hagehagehaaage; } //← コンパイル自体はどっちでも通ったのですが、どっちが本来の文法的に正しいのでしょうか。
- 503 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 11:25:44 ]
- コンパイラ的には上のセミコロンは空文があるってだけかと
|

|