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


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

C++相談室 part69



1 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 21:04:54 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part66
pc12.2ch.net/test/read.cgi/tech/1231640498/

※part63, part66 が重複していたようですので part69 としました。

641 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 21:11:30 ]
>>635
VC++ではマルチスレッド対策の効果を独自に付加している。
msdn.microsoft.com/en-us/library/12a04hfd.aspx
Unixだとマルチスレッドでvolatileなんて使うなボケらしいが。

const_castで外したくなる状況は分からない。

642 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 22:40:15 ]
誰も答えてやらない>>616のために
Visual C++ Express Editionでぐぐれ

643 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 22:44:10 ]
Visual C++ Express Editionを知った後にTurbo Cを使うなんて、、、地獄だ。。

644 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 22:45:14 ]
>>638, >>641
どうも、ほとんどアプリ系じゃ使わんということですな

>>641 の例じゃ普通はmutexやクリティカルセクション使うんじゃないの
それでvolatileを使うメリットがよく分らん,orz. コードが簡単になるがメリット?

645 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:24:24 ]
Effective C++でconst_castはoperator[]の定義で使うことがあるみたいに書いてあったよね?
ttp://ritaz.blog64.fc2.com/blog-entry-66.html
より引用。

class sample
{
public:
...;
const char& operator[](unsigned int position) const
{
...;
return dat[position];
}
char& operator[](unsigned int position)
{
return const_cast<char&>(static_cast<const sample&>(*this)[position]);
}
...;
};


646 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:32:43 ]
>>645
blogにも書いてあるが、やりすぎな工夫の一例だな

647 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:44:12 ]
>>644
どちらかというと、そういう排他制御の仕組みを自分で作るときに使う。

例えば下のコードをコンパイラが最適化した結果、
ロック確保する前や解放した後にhogeへ読み書きするコードが生成されたらシャレにならない。
MS仕様では、volatileなデータに読み書きするとそこを境界として、それより前後に読み書き処理が
ずらされないように最適化を抑えると言っている。

void f(hoge_t* hoge) //hogeを使うには排他制御でロックが必要とする
{
// ...
ロック確保

hogeを使う

ロック解放
// ...
}

648 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:48:16 ]
>ロック確保する前や解放した後にhogeへ読み書きするコードが生成されたらシャレにならない。

意味が分からん。

最適化によって、「hogeを使う」に相当するコードが、「ロック確保」の前や「ロック解放」の後に配置されたらシャレにならないってこと?


649 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 23:50:52 ]
>>648
ああ、ごめん。そういうこと。
携帯から打つのが面倒でいろいろ略した。



650 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:34:14 ]
>>642
ありがとうございます。探してみます。

651 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 00:44:58 ]
>>645
それ第何版の何節に書いてあるの?

652 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 01:30:20 ]
>>644
そういう用途にも使えるってだけでWindowsでもマルチスレッドでvolatileなんて使わない
mutexなりクリティカルセクションなりInterlocked-系関数なり使えばそこでフェンス張られるし
(Interlocked-系関数でvolatile使われてるけどね。間接的には使うことになるのかな)

やっぱり組み込みとかドライバ以外で使うことはないと思うな

653 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 17:24:40 ]
>>647, >>652
どうも、どうも

>>647
>そういう排他制御の仕組みを自分で作るときに使う
ずばり、自分でそういう仕組みは作ることないです

654 名前:645 mailto:sage [2009/05/31(日) 20:04:50 ]
>>651
忘れた。
原著第3版に書いてあった。
確か、最初の方の章に。

655 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 21:20:51 ]
改訂2版にはどこにも書いていないんだが、
第3版には本当に書いてあるのか?


第4版まであと2年はかかりそうな気がするし、
第3版買ってくるか・・・

656 名前:645 mailto:sage [2009/05/31(日) 21:28:28 ]
>>655
第3版には本当に書いてある。
厳密に同じコードかどうが覚えてないが、
const版をnon-const版にて呼び出してconst_castでconst属性を外す
という方式であることは本当。
俺もそんなことして良いの!?と思ったから信じられなくても無理はない。


657 名前:645 mailto:sage [2009/05/31(日) 21:31:01 ]
わざわざ引っ張ってきて確かめみた。
原著第3版(日本語翻訳されているもの)で
15ページから始まる項目にある。

658 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 21:48:18 ]
2版の21項「使えるときは、必ずconstを使おう」に
対応するんじゃないかなと思うけど、
そこではmutableをサポートしてないコンパイラのための苦肉の策として
「みっともないけど」と前置きした上でconst外しをしている。

これのことじゃないよな?

659 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:06:17 ]
>>658
じゃないってば。
少しは俺を信じろ(笑)

他の人も誰か証言してくれ。



660 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:08:18 ]
ようやっと見つけたが、
さっぱり読めなくて意図が分からん。
books.google.co.jp/books?id=d-2Im_Ox7qMC&pg=PA24&as_brr=3&source=gbs_toc_r&cad=0_0#PPA41,M1

俺の英語力も落ちたな・・・

661 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:10:32 ]
ああ、これって王家の血を引く者にしか読めないよ

662 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:10:40 ]
>>659
すまんwww
明日買ってくる。

663 名前:645 mailto:sage [2009/05/31(日) 22:12:21 ]
>>660
メンバ関数foo()のconst版とnon-const版の定義が
同じようなものになることは多々あるじゃない。
同じような定義を繰り返し書きたくない、そんなあなたにconst_cast

って言うような主旨。
const版をうまく定義することで、non-const版の定義は
それを呼び出してconst性を除去するだけ
で良くなる。


664 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:13:17 ]
>>661
俺読めたw
・・・そろそろ天の啓示が来る頃だろうか。

665 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:14:26 ]
>>664
もしかして、お兄様なの!
こんなところで巡り合えるなんて。。

666 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:16:24 ]
おまえか
しょせん、暇をもてあました神々の遊び

667 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:20:04 ]
理解した。解説thx

感覚的にconst側で非constのコードを
再利用したくなりそうなものだけど
それも理由があるのかな。

とりあえず第3版買ってくるよ。
生き別れた妹はいなかった気がするし。

668 名前:645 mailto:sage [2009/05/31(日) 22:23:19 ]
>>667
俺もそう思ったが、
理由としては
const側で非constメンバ関数を呼び出すというのはダメ
ってことらしい。
たとえ実際にはオブジェクトが変更されないとしても。

まあ買ってくる価値はあるかと。
何てったって名著だし、無駄な出費ではないと思う。

669 名前:デフォルトの名無しさん [2009/05/31(日) 22:41:23 ]
#define UNICODE
#define _UNICODE
で定義されたソースコードがあるとします。

それを
#define UNICODE
#define _UNICODE
と定義してはエラーになってしまう、つまりANSI版のソースに混ぜて使いたい場合どの
ようにすればいいのでしょうか?

たとえば


int WINAPI WinMain(…){
    …(ANSIソースコード)
   sub();
}

int sub(){
#define UNICODE
#define _UNICODE
   …(UNICODEソースコード)
}


みたいなことはできるでしょうか?




670 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:49:30 ]
できます。

671 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:52:12 ]
いまいち質問内容がよく分からんが、

#define UNICODE
#define _UNICODE
したあと
#undef UNICODE
#undef _UNICODE
すればdefineは消える。

でもWIN32なら、
UNICODE版、ANSI版両方そろってるはずだが。

672 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 23:25:45 ]
CreateWindow("aaa",....
とかやってるんだろ

673 名前:デフォルトの名無しさん [2009/05/31(日) 23:59:32 ]
>>670 >>671
いやできなかった
結論からいうと
原理からいうとその方法でできるのは確かなんだが
UNICODEと_UNICODEは最初の最初で定義しておかなければならならないみたいだ
先にwindows.hとか読み込まれてるからその関係で動作がおかしくなる

>>672
アホすぎ



てか解決法をいうと単純にソースファイルをわければ解決できる
最初からやればよかったけど

674 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 00:14:01 ]
本筋とは全く関係ないが、>>669を見ると_tWinMainにしろと言いたくなる。

675 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 01:15:41 ]
もうこれから書くコードは全部_UNICODEでいいかもと思ってしまうがな。

676 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 04:06:41 ]
なに、いいってことよ┏( ^ω^)┛

677 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:32:49 ]
下の様な感じで合成関数を作ろうと思ったのですが、
error C2678: 二項演算子 '*' : 型 'composite_impl<result_type_,arg_type_>' の左オペランドを扱う演算子が見つかりません
とエラーが出ます。どうやって回避すればいいのでしょうか?

678 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:33:55 ]
struct composite_type{};
template<typename result_type_, typename arg_type_>
struct composite_impl{
typedef result_type_ result_type; typedef arg_type_ arg_type; typedef result_type (*fn_type)(arg_type);
static fn_type &fn_holder(){ static fn_type fn; return fn; }
result_type operator ()(arg_type a) const{ return (fn_holder())(a); }
};
template<typename result_type_a_, typename result_type_b_, typename arg_type_b_>
struct composite_impl<result_type_a_, composite_impl<result_type_b_, arg_type_b_> >{
typedef result_type_a_ result_type; typedef arg_type_b_ arg_type; typedef result_type (*fn_type)(arg_type);
static fn_type &fn_holder(){ static fn_type fn; return fn; }
result_type operator ()(arg_type a) const{ return (fn_holder())(composite_impl<result_type_b, arg_type_b_>()(a)); }
};
template<typename result_type, typename arg_type>
inline composite_impl<result_type, arg_type> operator *(composite_type, result_type (*fn)(arg_type)){
composite_impl<result_type, arg_type> a; a.fn_holder() = fn; return a;
}
template<typename result_type_a, typename result_type_b, typename arg_type_b>
inline composite_impl<result_type_a, composite_impl<result_type_b, arg_type_b> > operator *(composite_impl<result_type_a, result_type_b> a, result_type_b (*fn)(arg_type_b)){
composite_impl<result_type_a, composite_impl<result_type_b, arg_type_b> > a; a.fn_holder() = fn; return a;
}
composite_type composite;
#include <iostream>
#include <cstring>
int fn_a(int a){ return a * a; }
char *fn_b(int a){ static char str[0xFF]; std::sprintf(str, "%d", a + 1); return str; }
int main(){ std::cout << (composite * fn_a * fn_b)(2) << std::endl; return 0; }

679 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:42:39 ]
>>668
> const側で非constメンバ関数を呼び出すというのはダメ
> ってことらしい。
これって、単純にconstメンバ関数内で非constメンバ関数を呼び出すと
コンパイルが通らないって話。



680 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 15:00:03 ]
>>679
const_castで*thisからconstを外すって話だよ。

681 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 15:12:45 ]
>>680
あーそういうことね。
でも*thisのconst外しが駄目なのも当たり前の話だな。

682 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 20:59:19 ]
*thisのconstは外してないぜ
むしろconstメンバ関数を呼ぶために*thisにconstを付けてる
外してるのは戻り値のconst

683 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 21:04:09 ]
>>682


>>667-668
>>679-681
を読みかえしくれ。



684 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 21:13:26 ]
???
>>645のことだろ?
static_cast<const sample&>(*this)は明らかに*thisにconstを付けてる
何か間違ってるのか

685 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 21:15:12 ]
>>684
> >>645のことだろ?
否。
>>667-668の事。
それに対し>>679-681というやりとりが行われている。
皆は>>645は理解している。


686 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 21:18:48 ]
なるほど理解した

687 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:34:32 ]
いろいろあるよ。
www.sengoku.co.jp/CategoryIndex/wire.htm

個人的には極細より線と鈴メッキ銅線が好きだけど (どうせ趣味だし)、
信頼性からジュンフロン線使う人のほうが多い。
このシリーズのより線はストリッパー必須。

ジュンフロンは苦手です。ええ。

688 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:36:18 ]
ご、誤爆・・・

689 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:43:04 ]
どんまい、
というかハードとソフト両方いけるとかうらやましい



690 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:45:09 ]
>>687
全然 なんだかわからないwww
すごいな。

691 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 01:02:51 ]
とりあえずイミフだからストリッパーってあたりに反応しとこうぜ

692 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 01:44:25 ]
ストリッパーくらい分かるだろ
線の被覆を剥ぐための工具だろ

693 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 02:19:34 ]
struct A{A();virtual void fun() = 0;};
struct B:A{B();fun();};
struct C{C(A&b); C problem(A&b);};

C c(B());
c.problem(B()); // no-match function になるのは何故?

C::problem(一時オブジェクト参照)を弾くならコンストラクタでも弾くべきだと思うんだけど

694 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 02:57:23 ]
>>692
しらんがな(´・ω・`)

695 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 03:51:45 ]
ドラクエなどで登場する戦士や魔法使いを意味するFighterクラスと Mageクラスがあったとして、
そのクラスのインスタンスが持つHPやMP,攻撃力などのステータス一覧を表示する関数を作るとき、
クラス自信にその関数を持たせるのか、あるいはクラスとは関係のない部分で作るのか、どちらがいいんでしょう?
クラス設計の考え方がまったくわかりません・・。


696 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 06:17:21 ]
>>695
その場合はカプセル化を優先する。

まず、HPやMP,攻撃力などのステータスを格納する変数(intだったりstd::size_tだったりするだろう)のアクセス指定子がどう宣言されているかによって考えを分ける。
1.
もしprivateで宣言されていて、そのステータスをpublicなメンバ関数h_point()で取得するような仕組みにしている場合(むろんそれが望ましい)は、「クラスとは関係のない部分で作る」が正解。
つまり別の関数show_status(〜)を作り、〜の部分にキャラクタのインスタンスを渡すようにする。
2.
もしpublicで宣言されているならば、「クラス自身にその関数を持たせる」ないし「friend指定して外部関数を作る」が正解。しかしステータスを格納する変数がpublic指定されていること自体、そもそも望ましくないことだが。


697 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 06:23:39 ]
>>693
private継承しているからだろ

698 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 08:07:42 ]
>>693
そのコンストラクタで本当に動くか試した?

699 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 17:56:43 ]
C c(B());

C c(B (*)());
という関数宣言に解釈される。
B b0;
C c(b0);
c.problem(b0);
とするとできましたが。
関数の引数のリファレンスの型にconstをつけて
"const B&b"、"const A&b"のようにすると
C c = C(B());
c.problem(B());
でもいけました。
なぜかは僕には分かりませんのでどなたか解説お願いします。
コンパイラはgcc4.2.1で確かめました。



700 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 19:02:59 ]
const参照型のインスタンスは、呼び出す側が値渡しと同じ感覚で扱えるように、
一次オブジェクトで初期化できることになっている。

701 名前:693 mailto:sage [2009/06/02(火) 20:13:27 ]
実コードはstruct Bにtemplate特殊化やらvirtualメンバやらなんやら絡んで魔窟状態で実は
C c(static_cacst<A&>(B())); に成ってますた。

>>699
C c((B())); でも逝けますね。

702 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 21:44:52 ]
>>701
Effective STL の第1章第6項「C++の最も奇妙な解析に注意しよう」に書かれてるね。
(この本自体はSTLの解説本だけど…)
でも、すべてのコンパイラで成功するとも書かれていない・・・おそろしや。

703 名前:デフォルトの名無しさん [2009/06/03(水) 17:16:04 ]
#include <stdio.h>

void main(void)
{
char data[3465300]
int idata[3465300];
int KOTAE[3465300/2];
int data1[12032/2][300];
int idata1[300][300];
int i,j,id,a,b,No,day,LDAY,d;
char fnamein,fnameout;
FILE *fin,*fout;
#define LDAY 30 //月ごとに変える
//No=1→ステータス;No=2→交通量;No3=速度;No4=オキュパンシー
#define No 2
for(day=0;day<LDAY;day++){
d=day+1;
printf("%d/%d\n",d,LDAY);
sprintf(fnamein,"D:\\/torakan-Y/R_barashi/Ku0409/Ku0409%02d.dat",d);
sprintf(fnameout,"D:\\/torakan-Y/R_barashi/Ku04/Q_Ku0409%02d.txt",d);
fin = fopen(fnamein,"rb");
fread(&data,1,3465216,fin);
fclose(fin);
if((fout=fopen(fnameout,"w"))==NULL) printf("Cannot open output file\n");


704 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 17:17:18 ]
>>703
なんだこの凶悪なのはっ!!

705 名前:703 [2009/06/03(水) 17:19:00 ]
703のプログラムですが、コンパイルは通る一方で
出力される結果が同じ数字の繰り返しになってしまいます。

エラーの原因としては、以下の4行が怪しいと思っています。
詳しい方、よろしくお願いします。
sprintf(fnameout,"D:\\/torakan-Y/R_barashi/Ku04/Q_Ku0409%02d.txt",d);
fin = fopen(fnamein,"rb");
fread(&data,1,3465216,fin);
fclose(fin);

706 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 17:23:44 ]
>>705
あんたが勝手に”エラー”って呼んでいるものを,具体的に書き表してごらんよ
少なくとも”出力される結果が同じ数字の繰り返し”になることは具体的に書け

707 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 17:29:33 ]
変数宣言で嫌になるものは久しぶり…

708 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 17:32:39 ]
スレの住人の中におエスパー様はおられませんか?

709 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 17:34:40 ]
>>703
とりあえず変数を#defineで上書きしているのが分かった



710 名前:703 [2009/06/03(水) 17:42:02 ]
≫>705様
レスありがとうございます。
出力されたファイルを開くと
526855268552685といった感じで同じ数列がただ繰り返されたファイルが
出力されます。

このプログラムはもともと、膨大なデータの中から
一部分を抽出するプログラムとなっています。
また、その莫大なデータにはそのような数列は見られないので
勝手にエラーと判定してしまいました。

>709様
ありがとうございます。
さっそく そこを修正したいと思います。

711 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 17:52:30 ]
>>710
かんじんのファイルに出力している部分が・・・ねぇwwwwwwさすがにESPじゃない俺にはむり

712 名前:703 [2009/06/03(水) 17:57:36 ]
for(i=0;i<3465216;i++){
idata[i]=int(data[i]);
if(idata[i]<0){
idata[i]=256+idata[i];
}
}
id=0;
for(i=0;i<3465216;i=i+2){
a=idata[i]/16;
b=idata[i]%16;
KOTAE[id]=a*16*16*16+b*16*16+idata[i+1];
id=id+1;
}

id=0;
for(j=0;j<288;j++){
for(i=0;i<12032/2;i++){
data1[i][j]=KOTAE[id];
id=id+1;
}
}

713 名前:703 [2009/06/03(水) 18:00:29 ]

/*区間データの抜き出し*/
id=0;
//////6号三郷JCT‐江戸橋JCT間////////////
for(j=0;j<288;j++){
for(i=0;i<17;i++){
idata1[id][j]=data1[4*i+(8+4*501+No-1)][j];
id=id+1;
}
id=0;
}

for(j=0;j<288;j++){
for(i=0;i<2;i++){
idata1[id+17][j]=data1[4*i+(8+4*772+No-1)][j];
id=id+1;
}
id=0;
}



714 名前:703 [2009/06/03(水) 18:02:01 ]
for(j=0;j<288;j++){
for(i=0;i<15;i++){
idata1[id+19][j]=data1[4*i+(8+4*542+No-1)][j];
id=id+1;
}
id=0;
}

for(j=0;j<288;j++){
for(i=0;i<34;i++){
fprintf(fout,"%d",idata1[i][j]);
}
fprintf(fout,"\n");
}
}
}


715 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:02:27 ]
>>712
> for(j=0;j<288;j++){ 
> for(i=0;i<12032/2;i++){ 
この辺で悪意を感じた

あと,もし仮に名前を付け替えるのが許可されているなら,ぜひデータ構造と名前を変えるべきだとおもふ


716 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:10:48 ]
まずマジックナンバーが多過ぎるから定数で宣言して分かりやすい名前を付けるべき

それと、
>char fnamein,fnameout;
ここはファイル名格納するバッファじゃなかろうか

717 名前:703 [2009/06/03(水) 18:11:01 ]
>712

すいません。まったく悪意はないです。
もうしわけないです。

名前は変更できます。



718 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:16:08 ]
なげぇwww
codepad
ttp://codepad.org/
せめてここに貼るとかさあ。。

719 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:19:07 ]
そもそも何の目的で作られた何をするためのプログラムで
どうなれば成功なんだよ
そこが分からないのに何も答えられるわけがないだろ

どうせ宿題なんだろうけど



720 名前:703 [2009/06/03(水) 18:26:59 ]
>719様

説明不足ですいません。
トラカンデータといわれる交通量や平均速度といった
情報が網羅されているデータから
一部分を抽出して、自分たちが調べたい路線の
交通量を抜き取るプログラムです。

数列が同じ数字の繰り返しにならなければ、ほぼ成功だと思います。

宿題ではないです。申し訳ないです。

>718様
さっそく、張ってみようと思います。

721 名前:703 [2009/06/03(水) 18:30:03 ]
codepad.org/jC9g9phJ

さっそく貼ってみました。

722 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:32:15 ]
ふむふむ
ひどすぎて目眩がしてきた

一つ言えるのは、これはCであってC++ではないということだ
だからスレ違い

723 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:32:56 ]
と思ったらnew使ってるからC++かよ
なんだこれは

724 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 18:52:09 ]
読むのに時間かかりそうだ…

725 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:03:32 ]
管理番号とかファイルのパスとか
危険な香りのする文字列がたくさんあるけど大丈夫なのか

726 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:09:39 ]
>>703
とりあえず
fread(&data,1,3465216,fin);

fread(data,1,3465216,fin);

727 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 19:12:43 ]
プログラムに間違いらしきものはなし。
データ解析部分でデータの構造が合致していないような感じだが?

728 名前:703 [2009/06/03(水) 19:18:54 ]
>726様

あなたは神様です。
あなたのおかげで無事解決しました。

なんてお礼をいえばいいのかわかりません。

729 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 20:18:52 ]
すげえうれしくない感謝の言葉だなぁ



730 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 20:22:20 ]
You are God.
I solved the problem, thank you.
What it only has to say the reward is not understood.

731 名前:703 [2009/06/03(水) 20:27:36 ]
と思ったら、まだ解決していませんでした。
申し訳ないです。

732 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 20:39:13 ]
<stdexcept> と <exception> って、
どっちをインクルードするほうが望ましいの?

733 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 20:41:32 ]
<stdexcept>で定義されている例外を使いたければ<stdexcept>

734 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 20:42:12 ]
>>731
書き直してもいい?

要するにファイルの内容は unsigned short 型のデータが
ビッグエンディアンで 6016x288 個格納されているのを
data1 に代入すれば data も idata も KOTAE も必要ないよね

735 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 20:53:56 ]
>>703
社内で使ってる(であろう)コードをこんなところに晒して、
ただで済むと思ってるのか?
オープンソースじゃないだろうし、上司に知られたらやばいんじゃねーの。

736 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:21:08 ]
スタックオーバーフローエラーを直してくれた先輩には
もう見限られたのか?

737 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:58:15 ]
>>731
なにが解決してないの?

738 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 22:40:43 ]
ほんとプロが作るソースって
ゴミクズだよな。
どこもかわらねえなぁ。

739 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 22:48:19 ]
え?>>703の話なら、プロのコードじゃないっしょ。

社内でコンピュータにちょっと詳しい人(事務職とかバイトのお兄ちゃんとか)に
アホ課長が「エクセルで計算するのめんどいからお前プログラム書けよ」って
仕方なくしこったんじゃない?

どうみてもCで書いたコードを、その人がやめちゃって保守要員がいなくなったので
これまたその辺のちょっとコンピュータ詳しい奴にむりくりやらせてるってところでは。

すごいエスパー。昔、エスパドリューはエスパーが身につける特別な装備だと思っていたのを思い出した。



740 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:49:15 ]
ふと思ったんだが↓↓

C++では関数が返せる変数の型は1つだけである。
(その型と継承関係によってはその子クラスの型でも返せることもあるが。)
ところが、例外処理におけるthrowは関数から外へ任意の型の例外を投げることが可能である。
これをその関数の返り値(戻り値)とみなして
プログラミングをするという面白い技法が
この世に存在していてもおかしくないのではないか

と思ったのだが、誰か知っている人いない?
例外を使ったプログラミングの話をしている訳じゃ無くて
あくまでthrowによる例外を戻り値として利用するスタイルってことで。

741 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 23:55:54 ]
テンプレートクラスを使えば戻り値の型なんて自由自在ですよ。
無茶しないでください。







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

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

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