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


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

スレを勃てるまでもないC/C++の質問はここで 3



1 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 20:07:56 ]
スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。

過去ログ
スレを勃てるまでもないC/C++の質問はここで
pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
pc11.2ch.net/test/read.cgi/tech/1178503366/

652 名前:デフォルトの名無しさん [2007/10/31(水) 18:09:26 ]
Win32環境+VS2005で開発を行っています。
ダブルクリックでファイルを開く処理に対応させようと頑張っていた所
Debugビルドでは成功したのですが、Releaseビルドにするとファイルを開かなくなりました。
(でもショートカットに開きたいファイル名を指定するとReleaseビルドでもきちんと開く)

そこで処理を追っていくと、どうもInitInstanceメソッドが呼び出されていないようなのですが、似たような経験をされた方はいらっしゃらないでしょうか?


653 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 18:11:41 ]
スレ違い

654 名前:652 [2007/10/31(水) 18:27:32 ]
了解しました、他スレに流れてきます。

655 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 18:59:54 ]
グリッド状に3次元ボクセルが並んでいる座標を格納したファイルがあって
0 0 0
1 0 3
5 20 9
…(順番はメチャクチャ)

ttp://up2.viploader.net/upphp/src/vlphp083780.jpg

こういう感じに1層だけ取り出して計算処理。
終わったらその上の層だけ取り出して計算処理

ということをしたいのですが

これって

for(slice=0,slice<MAX;slice++){
while(fscanf(fp,"%d%d%d\n",x,y,z)!=EOF){
array[x][y][z]に層を格納
}
格納した層について計算処理
}

という風に、計算したい層を取り出すために、毎回ファイルを読み込むという賢くない処理をしなくてはならんでしょうか
もう少し賢いやり方をしたいのですが、アドバイスいただけませんか。

656 名前:デフォルトの名無しさん [2007/10/31(水) 19:28:37 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5186.txt

これに実験結果を入れたいのですが、どこに入れたらいいか分かりません。
教えてください。

657 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 19:30:04 ]
>>656
コンパイルして、./a.out 実験結果 とでもすればいいだろ。

658 名前:wolf ◆8VH3XAqjlU mailto:sage [2007/10/31(水) 21:09:30 ]
>>655
For your Reference.

Managing Memory-Mapped Files in Win32
msdn2.microsoft.com/en-us/library/ms810613.aspx

Beej's Guide to Unix Interprocess Communication(Ref. Memory Mapped Files)
www.ecst.csuchico.edu/~beej/guide/ipc/

659 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 21:47:11 ]
>>658
thanks for your advice

but I don't mention accessing memory
and that code was rough. so I have some mistake



660 名前:デフォルトの名無しさん [2007/11/01(木) 01:31:10 ]
「派生クラスのインスタンスを生成する時、newで生成しないと使えない」
と言われたのですが、何でなのかわかりません。

  親クラス* p= new 子クラス;
  p->なんか関数();

これしか方法はないんですか?



661 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 01:39:13 ]
>>660
そんな事はない

662 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 05:49:28 ]
>>655
データ量にもよるが・・・

ファイルの読み書きと計算処理を分離し、
データはすべてメモリに読んでしまい、
計算処理はメモリ上にあるデータに対して行う。
いくつもの計算処理を済ませた後に、
メモリからファイルに書きだす。

663 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 10:38:55 ]
子クラス kokurasu;
親クラス* oyakuasu = &kokurasu;
oyakurasu->NFunction();

664 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 16:13:54 ]
>>662さん
レスありがとうございます。
小さいデータ量なら3次元配列に読み込んでしまえばいいのですが
量がメモリの容量を越えてしまうくらい大きいので…

2048×2048×2048の大規模なものや、それ以上を想定しています。。。

メモリに乗り切らない→1層ずつ処理→そのためには?
という考えからきています

665 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 16:34:53 ]
ファイルを何度もスキャンするくらいなら、
物理メモリに乗らないような巨大なサイズでも、
仮想記憶を使ってメモリ上に読んでしまったほうがマシかもよ。



666 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:00:46 ]
>仮想記憶を使ってメモリ上に読んでしまったほうがマシかもよ。
仮想記憶で扱うということはこれまでやったことが無くて。
どこかわかりやすく参考になるところありますか?

667 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:02:15 ]
>>666
ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E8%A8%98%E6%86%B6

668 名前:デフォルトの名無しさん [2007/11/01(木) 17:15:27 ]
教えてください。

(Aが1)、かつ(Bが2)以外に処理を実行するっていう場合どう記述したらいいんですか?


if((A==1)&&(B==2)){

}
else{
  処理
}

でいいのかなぁ?



669 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:17:15 ]
ありがとうございます。
だいぶ難しそうな気配がしています。。。


670 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:19:27 ]
if( (A!=1)&&(B!=1) )
処理

でいんでない



671 名前:よろず [2007/11/01(木) 17:21:39 ]
募集してるよん♪
bloom@geocities.co.jp

672 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:22:21 ]
if((A!=1)||(B!=2))
{
処理
}

673 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:22:36 ]
よくねぇよ

674 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:23:05 ]
>>668
ド・モルガンの法則でひっくり返せ。

A != 1 || B != 2

675 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:23:24 ]
>>668
if( !(A==1 && B==2) ) {
 処理
}

676 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:23:40 ]
更新してなかtったorz

677 名前:デフォルトの名無しさん [2007/11/01(木) 17:23:51 ]
ありがとう || でやってみます

678 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:24:41 ]
>>666
高々GiBオーダだろ。普通にmalloc()したらOSが勝手に確保してくれて、使うときに勝手にスワップアウトしてくれるよ。
OSがタコじゃなきゃ。

679 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:26:13 ]
WindowsXPはタコですか?

680 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:26:41 ]
>>677
果たして、>670で「(Aが1)、かつ(Bが2)以外」と読めるか?
if (!(A == 1 && b == 2)) {
処理
}
の方が読みやすいかも知れんぞ。
# ド・モルガンの定理を知らん香具師がメンテナンスするかもしれないんだし。



681 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:28:59 ]
「(Aが1以外)且つ(Bが1以外)」と読める

682 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:29:48 ]
どっちも同じようにしか見えない俺は眼が腐ってる

683 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:30:11 ]
だね

684 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 17:49:50 ]
「(Aが1以外)且つ(Bが1以外)」じゃないの?

685 名前:デフォルトの名無しさん [2007/11/01(木) 17:52:10 ]
if( !(A==1 && B==2) ) {
処理
}

こういう記述もできるんですね

みなさんありがとう 勉強になりました

686 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 18:25:35 ]
>>680
読みやすさとかより
!(A == 1 && b == 2)) と (A!=1)&&(B!=1) は別物なんだが。

687 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 18:30:38 ]
そりゃそーだ
Bの値が違う

688 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 18:47:54 ]
>>678
ためしにmallocで 1024 1024 1024 を確保して解放しただけで仮想メモリの警告が出ましたが
確保をしているような感じでした。
ただ、合計4GBくらいになるはずのものが2.5GBで解放されたのが気になりますが。。。


もう少し別のやり方調べてみます。。。

689 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 19:12:47 ]
>>688
Windowsの32ビットアプリケーションは、
3GiBオプションを付けない限り、ユーザアドレス空間2GiBしかないよ。
その2GiBをプログラム本体や、WindowsのDLL、スタックを差し引いた残りが、
およそmallocほか動的メモリ確保で使用できる領域になる。

それ以上使いたければ、64ビット化するか、2GiB未満に小分けして処理する必要がある。
いずれにせよ、同じ仮想記憶を使うのでも、
単純にmallocでメモリを確保するよりは、メモリマップドファイルにしたほうがいいと思う。

690 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 20:02:10 ]
>>687
それだけ?



691 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 20:34:15 ]
うぜ

692 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:00:13 ]
>>689
動的メモリになると2GBの壁がでるのですね…

それだと必然的に1024^3はムリになるので、目的のは出来ないかもしれません
ファイルにランダムアクセスできればいいのですが…
それかファイルをソートする方がはやいのかも

693 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:05:34 ]
>>692
ランダムアクセスはできるよ
テープじゃないんでしょ

694 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:07:58 ]
テープですよ
ランダムアクセスはできるけど

695 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:17:07 ]
>>692
流れをあんまり理解してないけど、
ファイルにランダムアクセスってfseekとかその手の話?

696 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:19:59 ]
まさか数GBのファイルを全部メモリに読むつもりとか

697 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:20:04 ]
そのファイルはテキスト?

698 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 22:21:37 ]
層毎に読み込むのがいいよ

699 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:21:22 ]
>>655のことです
層ごとに読み込みたくて。

15GBくらいのデータを縦軸・横軸の層で読み込んで計算したくて伺っていました。
テキスト形式のデータで要素数にして数億個のデータです。


700 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:39:36 ]
なんで一度に読み込みたいのかがわからん。
ある層の計算をするときは、他の層がどうなってるかは知らなくていいんじゃないの?

逐次的に計算できるなら、何億個、何兆個データがあっても関係ないでしょ?



701 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:40:03 ]
層順にソートしておくとか

702 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:44:40 ]
何層あるのか知らないけど、元ファイルを順次読み込み、層ごとのファイルに分ける。
slice001.txt, slice002.txt, ... みたいに。
で、それぞれのファイル毎に層毎の計算をする。

で、ダメ?

703 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:45:52 ]
>>700
一度に読み込まないための方法を探してるんです。

>>701
それは考えました。
縦方向に層を作るのであればZだけでソートしたファイルを読み込み処理ですむのですが
横方向に層も必要で
最悪2つの15GBのデータを作らないといけなくなりそうです。



704 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:47:23 ]
あー、2k*2k*2k程度を想定してるのか。
層ごとに分けてしまえば次元が一つ減るから、オンメモリでいけるでしょ。

705 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:48:41 ]
めんどくせーから、64bitOSにしちゃえよ

706 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:49:57 ]
めんどくせーから、諦めちゃえよ

707 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:51:50 ]
めんどくせーからDBにしとけ

708 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:56:27 ]
>>703
> 横方向に層も必要で
おいおい、必要な情報は一度に開示しとけよ。

709 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:59:58 ]
>>708
はい、すみません。

縦方向の層/横方向の層 でスライス作って計算するのが一番速そうですね。
始めは15GBの3次元の塊から、層を2次元配列で確保していくつもりでしたが

レスありがとうございました

710 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:43:29 ]
> (Aが1)、かつ(Bが2)以外に処理を実行するっていう場合どう記述したらいいんですか?

どーみても、
if ( (A==1) && (B!=2)) {
処理
}
だろ。

それとも日本語が不自由なのか?



711 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:45:03 ]
668の例を見てそう言えるお前のほうが不自由

712 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:45:12 ]
うは亀レス
日本語が不自由なんですね

713 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 00:45:41 ]
もうその話題終わったよ

714 名前:デフォルトの名無しさん [2007/11/03(土) 01:41:40 ]
実体のまだないData型のpDataAというクラスが、ポインタで関数DataA_Setupにわたってきます。
DataA_Setupの中で、実体化(new)して、いろいろ値をつめます。
次に、このpDataAを、別の処理関数DataA_Modifyにわたして中身を書き換えるのですが、
DataA_Modifyのインタフェースが、Data型の参照を受けているのです。

int DataA_Setup(Data* pDataA)
{
pDataA = new Data();
// pDataAにいろいろ値をセット

    DataA_modify(ここが、Data型の参照になっている);



715 名前:デフォルトの名無しさん [2007/11/03(土) 01:45:14 ]
>>714の続き
で、DataA_modifyにpDataAを渡すには、どのように変換すればいいのでしょう。

Data rDataA = &pDataA;

とすると、
error: conversion from `Data**' to non-scalar type `Data' requested

とエラーが出ました。

716 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 01:48:22 ]
*pDataA でいいんではないの

717 名前:デフォルトの名無しさん [2007/11/03(土) 01:51:06 ]
ありがとうございます。

DataA_modify( *pDataA );

で通りますか?

718 名前:デフォルトの名無しさん [2007/11/03(土) 02:35:35 ]
ゲームに制限時間を付けたいんですが、どうすればいいのか
わかりません。


719 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:52:32 ]
>>714
> 実体のまだないData型のpDataAというクラスが

「クラス」???
基本的なことを理解していないっぽいな。

> ポインタで関数DataA_Setupにわたってきます。

実体がないのに、どうしてポインタが渡せるんだ?

そして案の定、

> int DataA_Setup(Data* pDataA)
> {
> pDataA = new Data();

なんていう変なことをしている。

引数の型はData*ではなくData**か、Data*&にしないと。
pDataAに何を代入したって、DataA_Setupの呼び出し側には伝わらないぞ。

> Data rDataA = &pDataA;

わかってなさすぎ。

720 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 08:39:58 ]
>>718
あなたがどんなゲームをどのように作っているのか判らないので「こうしなさい」などとおこがましいことは言えません。



721 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 16:40:26 ]
>>714
>>719のとおりだなあ。
とりあえずC++ Primerと初心者本を買って理解することをお勧めする。

722 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:35:46 ]
二次元配列で
foo[たて][よこ]
を走査したいのですが
どんなループが一般的にやられてますか?

723 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:39:32 ]
ふつう

for(y = 0;y < たて;y++){
for(x=0;x < よこ:x++){
}
}

724 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:40:09 ]
二重ループ

725 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 16:58:20 ]
>>723-724
ありがとうございます。

あとすいません、言葉足りなくて
foo[][]を

行だけ取り出して、計算→次の行へ。
列だけ取り出して、計算→次の列へ

ということです。



726 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 17:01:18 ]
>>725
for(y = 0;y < 列;y++){
for(x=0;x < 行:x++){
}
}

for(y = 0;y < 行;y++){
for(x=0;x < 列:x++){
}
}


727 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 17:05:07 ]
…そうだ。そうですね
なんか変に考えすぎてました。

ありがとうございます

728 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:03:47 ]
if(条件1){処理1}
else if(条件2){処理2}
else if(条件3){処理3}
else if(条件4){処理4}
else{処理5}

という処理をやりたいのですが、ネストは3までと決められているので、このままの形では書けません
なんとかスマートにネストを減らしたいのですがどうするのがいいのでしょうか
今は仕方なくこんな風に書いてるんですが、不格好だし面倒くさいし…

int flg;
if(条件1){flg=1}else{DoNothing();}
if(条件2){flg=2}else{DoNothing();}
if(条件3){flg=3}else{DoNothing();}
if(条件4){flg=4}else{DoNothing();}
if(条件5){flg=5}else{DoNothing();}
switch(flg)
{
 case 1:処理1;break;
 case 2:処理2;break;
 case 3:処理3;break;
 case 4:処理4;break;
 case 5:処理5;break;
 default:DoImpossible();break;
}

729 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:07:49 ]
ごめんなさい
条件の方のflg=*にセミコロン忘れました

730 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:17:22 ]
>>728
ネストが3ということだが、一番はじめに提示したソースはネストは1じゃないか?
普通かどうかしらんが、俺の感覚でネストが深くなるといわれると
if ( XXX ) {
if ( YYY ) {
if ( ZZZ ) {
}
}
}
ということだと思うんだが?



731 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:20:14 ]
一応、回避策(?)も提示してみる。
int Check( void ) {
if ( 条件1 ) return 1;
if ( 条件2 ) return 2;
if ( 条件3 ) return 3;
if ( 条件4 ) return 4;
if ( 条件5 ) return 5;
return -1;
}
/**/
switch( Check( ) ) {
case 1://以下略
}

732 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:22:28 ]
else if{〜}はelse{if{〜}}のことなので、最初のソースのネストは5なんです
正直納得いかないんですが、コードチェッカがそう言って怒るので仕方ありません

733 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:28:20 ]
>>731
結局条件を数値に直してswitchしかないんですかね
elseは必ず書くことになってるので正直あまり変わらない気がします。ごめんなさい

734 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:33:01 ]
そのコードチェッカーは必ず、例外なく、何があっても、守らなければいけないもの?
可読性や汎用性やテスト容易性まで犠牲にしてまで守る利点はあるの?
っていっても、守らなきゃならない状況ってのはあるんだろうけど・・・
関数分割をなるたけして、厳しい部分はswitchに落とすしかないかな?

735 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:40:00 ]
>>733
elseはcase -1:でよくね?-1じゃなくてもなんでもいいけど。
条件の内容次第ではうまくいく場合もあるよ。
例えば、文字列比較によって関数呼び出しを行うなら・・・
typedef sturct {
const char * str;
void ( * func )( void );
} T_HOGE;
const T_HOGE Hoge[ 3 ] = {
{ "right", Func1 },
{ "center", Func2 },
{ "left", Func3 },
};
for ( cnt = 0; cnt < 3; cnt++ ) {
if ( strcmp( Hoge[ cnt ].str, input ) == 0 ) {
Hoge[ cnt ].func( );
}
}
条件が複雑になれば厳しくなるけど・・・

736 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 02:41:57 ]
bool notYet = true;
if (notYet && condition1) {process1; notYet = false;}
if (notYet && condition2) {process2; notYet = false;}
if (notYet && condition3) {process3; notYet = false;}
...

737 名前:1/2 mailto:sage [2007/11/14(水) 05:31:15 ]
#include <utility>
#include <vector>
#include <iostream>
#include <functional>

struct func_holder : public std::unary_function<void,void> {
  typedef result_type (*func_type)(argument_type);
  func_holder( func_type f ) : m_func(f) {};
  result_type operator()(argument_type) const { return (*m_func)(); }
private: func_type m_func;
};
struct pred_holder : public std::unary_function<int, bool> {
  typedef result_type (*func_type)(argument_type);
  pred_holder( func_type f ) : m_func(f) {};
  result_type operator()(argument_type a) const { return (*m_func)(a); }
private: func_type m_func;
};
template< class Pred, class Func >
struct dispatcher
 : public std::unary_function<typename Pred::argument_type, void> {
  typedef std::pair<Pred, Func> pair;
  typedef std::vector<pair> vector;

  void add(pair const& p) { v.push_back(p); }
  void operator()(argument_type a) {
    for (vector::iterator i = v.begin(); i < v.end(); ++i) {
      if ( i->first(a) ) { i->second();break; }
    }
  }
private: vector v;
};

738 名前:2/2 mailto:sage [2007/11/14(水) 05:34:32 ]
void out1() {
  std::cout << "out1!\n";
}
void out2() {
  std::cout << "out2!\n";
}
bool pred1(int i) {
  return i > 0;
}
bool pred2(int i) {
  return i == 0;
}
int main() {
  dispatcher<pred_holder, func_holder> dis;
  dis.add( std::make_pair(&pred1, &out1) );
  dis.add( std::make_pair(&pred2, &out2) );
  dis(0);
}

.*_holderで指定する関数の方を変えてやったり、predのargumentとして状態を保持した構造体を渡すようにすれば
もっと複雑な条件でも使えるかもしれない
boostを使えば使い勝手が良くて読みやすいのが作れる?

739 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:11:34 ]
>>734
必ず守らなければならないとしたときの利点:
  お前のように、ごちゃごちゃ文句言う奴に対応する時間を取らなくて済む

740 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:18:34 ]
>>739
必ず守らなければならないとしないときの利点:
  お前のように、ごちゃごちゃ文句言う奴に対応する時間を取らなくて済む



741 名前:738 mailto:sage [2007/11/14(水) 17:59:11 ]
よく考えるまでもなく激しく車輪の再発明してる気になるなぁ(それ以前にC++)
これと同じようなものが「boostにあるよ」とか「lokiにあるよ」とか「俺が作ったよ」とかあれば
是非情報をおながいします

あとこういうのって、デザパタ用語で責任の連鎖パターンっていうんですか?

742 名前:デフォルトの名無しさん [2007/11/14(水) 21:50:49 ]
コンソール上で動かすプログラムを作っています。
画面消去の方法で『ESC [2J』と解説されてるサイトが多いのですが、
XPではエスケープ・シーケンスが使えないようなのです。
他に画面消去に使えるような命令はないでしょうか?
コンソール画面上をスペースで塗り潰す以外の方法は無いのでしょうか。

743 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:51:38 ]
プログラムを書くというのは、特殊化だと思う。
だから、汎用に書くのは間違い。

可読性を損なわないようにベタっと書くべき。

744 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:55:55 ]
DRY原則は守ってね

745 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:09:17 ]
>>742
Win32APIスレで質問すべし。

746 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:13:36 ]
APIじゃなくてもclsでよくね?

747 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:18:55 ]
そこでPDCursesですよ
単にコンソールIOのシステムコールをCursesのインターフェースでラップしただけだけど
そのまま使うよりは使いやすいような使いにくいような

748 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:25:05 ]
血圧が高くて疲労感が取れません。

749 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 03:23:46 ]
A.cpp
CSample *Sample = 〜〜〜


B.cpp
Sample->Loop();

という風にしたいんですが
どうにかしてB.cppでSampleオブジェクトを使う方法はありませんか

750 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 04:30:17 ]
>>749
グローバル変数




751 名前:デフォルトの名無しさん [2007/11/15(木) 04:45:48 ]
windowsでC言語の開発環境を整えようと思いbcpadをダウンロードしようとしたのですが、
ベクターでダウンロードできなくなっており、自身で探してみたのですが、ダウンロードできるサイトが見つかりません。
ご存知の方がいらっしゃいましたら教えてください。

752 名前:デフォルトの名無しさん [2007/11/15(木) 10:28:55 ]
>>751
シェアウェアにするとかなんとか書いてるから
フリーのVC++2005expとSDKでやれば?
ANSIIの関数で複数の関数が
警告で「安全性がなんたらかんたら・・・」って警告
でるけど、別に関数の使い方間違ってなかったら
問題無いし、C言語の開発環境としては
VC++2005で十分気軽に使えるでしょ






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

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

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