1 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 01:18:41 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.47【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1200464091/ 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
626 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:36:58 ] >実際の職業プログラマさんなんかはC#やVB.NETみたいなのを使う 業種にもよるけどMFC使ってる職業プログラマも多いよ むしろそっちの方が多いはず MFCの情報が少ないのは調べ方が悪いと思う
627 名前:デフォルトの名無しさん [2008/02/14(木) 10:44:20 ] template <>の中にかけるのは、classと、typename、それにintだけですか?
628 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:46:03 ] >>623 スレ立てるまでもない質問はここで 第89刷 pc11.2ch.net/test/read.cgi/tech/1202726651/ SET /P password=
629 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:56:59 ] >>627 type parameter non-type parameter(intは可 現規格では幾つか制限アリ) template template parameter(デフォルト引数は考慮されないことに注意) の三つがOKだよ。 (例) template<typename T> template<int I> template< template<typename, typename> class C >
630 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:59:57 ] template<class A, class B> void Foo( B b ){} という関数があったとき、使う側で Foo<int>( bar ); と引数から特定できない型のみを指定できるのは、 C++において正しい仕様なのでしょうか?VS2005では一応コンパイルが通る ようですが…
631 名前:625 mailto:sage [2008/02/14(木) 11:05:33 ] >>626 なるほど・・どうにもうまく調べられないようで、ちょっと離れたプログラム関連の本が多い 書店へ行ったのですが、MFCについての本は独習シリーズを書いている方のものが1冊(古い)と その他薄いものが何冊かしかありませんでした それと合わせて情報が少なくマイナーなのかと思ってしまっていました もうちょっとMFCについて調べてみます
632 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 11:08:19 ] というかそのプログラム関連書籍が多い書店を教えて欲しいw
633 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 11:23:26 ] 池袋にあるジュンク堂ってとこです 大型書店何件か回ったけどあそこが群を抜いて多かったです
634 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 11:30:11 ] あそこいいね 立ち読み客のために椅子まで用意されてたし ちょっと前まで近所だったからよく行ってたよ
635 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 11:49:07 ] ただちょっと会計が面倒ですよね 一応MFCやってみようと思います、WinAPI知らないままで不安ですが独習シリーズの人の本買ってみようと思います ありがとうございました
636 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 12:18:20 ] 今更MFC?…… 目的にも依るし、ここで続けるのもスレ違いだから詳しくは書かないけれど。
637 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 12:19:34 ] MFCはこれから落ち込んでいくんじゃないか?.NET系(C#とか)やるべきだと思うの俺だけ?
638 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 12:31:40 ] 落ち込んでから.NETなり時代に沿ったものに切り替えればいい 目的にもよるけど
639 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 12:45:38 ] MFCはまあ、最初の枠組みやってくれるのだけあてにして使ったりするな。
640 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 13:07:23 ] >>621 ttp://www.kmonos.net/alang/boost/classes/assign.html
641 名前:デフォルトの名無しさん [2008/02/14(木) 13:28:04 ] サブスレッドがデータ更新した事を知るためにはwhileなどで繰り返しチェックする以外にどのような方法がありますか
642 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 13:29:25 ] >>635 その本は良書だしMFCを少しでも触ったことがあれば難しくはないが、 MFCの情報を探し出せないという検索の腕からいってもお前さんにその本はまだ早い。 というかMFCなんて仕事で必要でない限りは今更初心者が手を出すべきものでもない。
643 名前:641 [2008/02/14(木) 13:32:48 ] イベントドリブンっていうのはきいたことあるのですが、BCBとかでは無い標準のC言語、C++でどうやるのかわかりません
644 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 13:51:27 ] >>641 Windowsならイベントオブジェクト、Unixなら条件変数 >>643 標準のC/C++にサブスレッドなんて概念は無いと思うが…
645 名前:641 [2008/02/14(木) 14:02:49 ] サンクス
646 名前:デフォルトの名無しさん [2008/02/14(木) 14:13:28 ] CreateEvent() の使い方がわからないので適当なSleepいれてwhileでチェックしようかと思うのですが CreateEvent()のほうが断然良いですか? たとえば500msとか、100msとか待ったとき CreateEvent()のほうが即時性とCPU負荷低いですか
647 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:15:07 ] やってみると、それ自体は簡単だからまずやってみろって。
648 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:16:31 ] 断然良いです 即時性は高いです 負荷は100msも寝るなら大差ない
649 名前:デフォルトの名無しさん [2008/02/14(木) 14:18:13 ] DLLにしたいんのですが、なるべく負荷を下げたいんです 一つのサブスレッドがデータを受信したらそれを知りたいのですが、間隔は2〜10秒くらいです whileで監視しても変わらないですか
650 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:20:42 ] 少しでも下げたいならイベントオブジェクトの方がいいんじゃね 通知が来るまで寝っぱなしだし 100msごとに起きるよりは当然
651 名前:デフォルトの名無しさん [2008/02/14(木) 14:22:04 ] 初心者がわかる文書ありませんか
652 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:30:41 ] CreateEventの使い方なんか簡単だ。 HANDLE handle; handle = CreateEvent(NULL, FALSE, FALSE, NULL); これで良い。
653 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:31:42 ] winapiのメリットってなんでsか
654 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:34:42 ] >>653 何に対するメリット?比較対象は?
655 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:41:07 ] ウィンドウプロシージャではよくswitchが使われていますが、 ifではなくswitchを使う理由みたいなものがあるんでしょうか?
656 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:42:24 ] >>655 ifでも書けるから、ためしにifで書いてごらん。 理由がわかると思うよ。
657 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:48:20 ] int main(void){ for(;;) return 0; } これのコンパイルが普通に通って(´・ω・`)?ってなってるんですが、 ぶら下がり文って次の行でなくても許されてるんですか?
658 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:51:34 ] 空白文字(改行含む)はいくらあっても構わない形式なのです。
659 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:51:35 ] for (;;) return 0; って解釈されてるんだろ
660 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:54:21 ] >658-659 なるほど、どうもです。 同じ行か、次の行までしか許されないもんだと思いこんでました。
661 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:54:45 ] >>657 こんなのでも普通にコンパイル出来るよ びっくり? int main( void){ for( ; ;) return 0;}
662 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:58:05 ] >>661 たぶん、そういうのはわかっちゃいるけど、「ついなんとなく」 ぶら下がり文に対してだけ異なる感覚を持ってしまったんだろう。
663 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 15:01:51 ] p r i n t f ( " t e s t \n " ); でもこれは通らないんだね(´・ω・`)
664 名前:641 [2008/02/14(木) 15:02:00 ] サンクス できましたよ #include <iostream> #include <windows.h> #include <process.h> using namespace std; HANDLE handle; unsigned WINAPI fnc(void *x){ int n=(int)x,m; m=3000-n*300; Sleep(m); cout<<n<<"ban "<<m<<"msec Sleep\n\n"; SetEvent(handle);} main(){ handle = CreateEvent(NULL, FALSE, FALSE, NULL); for(int n=0;n<10;n++){ _beginthreadex(NULL, 0, fnc, (void*)n, 0 ,NULL);} while(1){ WaitForSingleObject(handle, INFINITE); cout<<"main reep ga ugoita\n"; }}
665 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 15:05:42 ] >>656 if(○○ == WM_xxx) ○○ ==の部分を毎回書かなければいけない事くらいしか思い当たりません。 その代わりbreak(もしくはreturn)がいらないので記述ミスが減るかなぁと。 と書いているうちに一つ思い浮かんだのが、breakを挟まないことで case WM_CREATE: 〜処理1〜 case WM_PAINT: 〜処理2〜 break WM_CREATEがきたときは処理1,処理2をどちらも行うという事が出来ますね。 これがswitchを使う理由ですか?
666 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 15:12:56 ] >>665 そもそもswitch文の存在理由を考えてみるといいかと およそほとんどのswitch文はif文で書けるわけだし、 C言語のswitch文って要らないよね、ってのは、 それはそれでひとつの考え方だが…
667 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 15:14:05 ] ぶっちゃけswitchでできることはみんなif-elseでできるし、 while、do-whileでできることはみんなforでできる。 選ぶ基準はどっちが見やすいか、書きやすいか。
668 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 15:23:30 ] >>630 正しい仕様です。
669 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:03:06 ] >>668 ありがとうございます。安心して使うことができます。
670 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:08:59 ] 店で売ってるソフトって大半がMFC製じゃないの?
671 名前:デフォルトの名無しさん [2008/02/14(木) 18:49:22 ] wchar_tの文字列をcharの文字列に変換したいのですが char buf[256]; wchar_t wbuf[] = _T("Test123あいうアイウ"); int c; setlocale(LC_ALL,"ja"); wcstombs_s(&c,buf,256,wbuf,256); ではwbufに入っている「Test123」までがbufにコピーされ、それ以降は無視されているようです。 理由を教えていただけませんか?
672 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:55:03 ] 変換できないワイド文字が検出されたのでその直前で変換を打ち切った
673 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 19:40:47 ] "ja"がロケール文字列として有効なのか怪しいな。 単にsetlocale(LC_ALL, "");で試してみたら? あと、本当のワイド文字列リテラルに_Tは使うな。直接L付けろ。 wchar_t wbuf[] = L"Test123あいうアイウ";
674 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 19:54:01 ] Windows だったら setlocale(LC_ALL, "japanese"); だったと思う
675 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 20:12:53 ] WCHAR
676 名前:デフォルトの名無しさん [2008/02/14(木) 21:13:33 ] >>672-675 ありがとうございます setlocale(LC_ALL, "japanese"); で解決しました。
677 名前:デフォルトの名無しさん [2008/02/14(木) 22:00:06 ] ttp://www.uploda.org/uporg1251163.zip.html (展開時9.7KB程度) Windowsゲーム向けタイマクラスを作ってみたんですが (1/60秒休んで累積の休憩時間からfpsや簡易CPU率を取得する機能) どうにも少しでも負荷がかかるとWindowsタスクマネージャで見てると まだまだCPUが余裕な割に53fpsくらいに落ち込んでしまいます。 もうすこし改良したいと思うのですが、どこか改良の余地はありますでしょうか?
678 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 22:05:20 ] タイマーをパワーアップ
679 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:55:33 ] >>677 あまり詳しく見てないけど、 Sleepが1/60秒以上帰ってこないことが7回/秒あったら53fpsになるのかな? Sleepの精度なんてそんなもんだし。 理論値どおりに増加するフレームカウンタを作り、 実際に処理できたフレーム数がそれに追いついたら休む、 追いつくまでは休まず連続して何フレームでも処理する、 とすれば、平均のfpsは理論値と合う。
680 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 00:57:29 ] こんな感じで見やすくC++の標準関数載せてくれてるサイトありませんか? ttp://cham.ne.jp/piro/p_stdfunc.html
681 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:03:00 ] ttp://www.cppll.jp/cppreference/
682 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:15:08 ] >>679 「どうしても追い付けなければスキップすることも辞さない」も入れとくべきではないか?
683 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:17:05 ] バイナリファイルについての質問です。 とあるバイナリファイルの中に、12ビット単位でひとつの要素となるデータが99バイト分入っています。 これを3バイトずつファイルから読み出して12ビット単位で区切り、short型に変換して 再度バイナリファイルに書き出したいと思っています。 この場合、バイナリモードでファイルを開いて、char data[3]にread関数で3バイト格納しても シフト演算子が使えないため、上手く12ビット単位でデータを取得することができません。 何か良い案ないでしょうか?
684 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:24:09 ] >>683 「シフト演算子が使えない」と思い込む根拠は? まぁ、環境依存上等でビットフィールドを使うか、自前でビット演算するかの違いだけどね。
685 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:24:18 ] やり方は色々あるけど、とりあえず3byte読んでから4byteの整数に格納sすれば?
686 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:27:43 ] >>683 short a1 = (unsigned short)data[0] << 4 | (unsigned short)data[1] >> 4; // 前半12bit short a2 = (unsigned short)data[1] << 8 | (unsigned short)data[2]; // 後半12bit これでだめかや?
687 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:31:54 ] 訂正 short a1 = (unsigned short)data[0] << 4 | (unsigned short)data[1] >> 4; // 前半12bit short a2 = (unsigned short)(data[1] & 0x0f) << 8 | (unsigned short)data[2]; // 後半12bit
688 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:33:49 ] a1とa2もunsigned shortでいいと思う。 俺の個人的嗜好だけど。
689 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:38:19 ] a1, a2はunsigned shortにすべきだな。 それはそうと、 a1 <- data[0].u data[0].l data[1].u a2 <- data[1].l data[2].u data[2].l って並びなのかな。 a1 <- data[1].l data[0].u data[0].l a2 <- data[2].u data[2].l data[1].u って並びの可能性もありそうだが。
690 名前:デフォルトの名無しさん [2008/02/15(金) 01:47:13 ] VC++のインラインアセンブラで64bitの整数の掛算(UInt32x32To64のような物)をやりたい訳ですが どのようにすれば良いのでしょうか。 32bitなら以下で良いみたいですが64bitのやり方がわからず・・・。 int mul(int a, int b) { _asm{ mov eax, a mov ebx, b mul eax, ebx } }
691 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:54:36 ] >>685 〜688 お〜なるほど、とても助かりました。 シフト演算が使えないと言ったのは自分の知識不足です。 3バイトのデータを一気にシフト演算しようとしていました。 上手くいきました。ありがとうございます。
692 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:55:49 ] 解決したと思ったら、もう一個質問ができました。すいませんが、こちらもお願いします。 読み込んできたデータを次の関数で共用体に格納して、bit単位でいじってるんですが、どうも上手くとれません。 いろいろ省略していますが、以下のような感じです。 テストデータ(バイナリ) 11111111 11111111 11111111 共用体 union UNION{ unsinged char data[3]; struct { unsinged short element1 : 8; unsinged short element2 : 3; unsinged short element3 : 5; unsinged short element4 : 1; unsinged short element5 : 7; }FILED; } 処理 UNION A; read (fd , A.data , 3): printf("%d\n" , A.FILED.elemnt1); ←255が出力される printf("%d\n" , A.FILED.elemnt2); ←7が出力される printf("%d\n" , A.FILED.elemnt3); ←31が出力される printf("%d\n" , A.FILED.elemnt4); ←何故か0が出力される printf("%d\n" , A.FILED.elemnt5); ←127が表示される 4番目の要素が1と表示されるません。 これはなんででしょう?
693 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:00:33 ] unionの使い方間違えてないか?
694 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:02:51 ] >>690 64ビットの値を返すときは、EDX:EAX。 こんな関数をコンパイルさせたら、 long long mul(int a, int b) { return static_cast<long long>(a, b); } こんな出力だった。 ; Line 3 mov eax, DWORD PTR _a$[esp-4] imul DWORD PTR _b$[esp-4] ; Line 4 ret 0
695 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:02:56 ] >>692 試しに、printf("%u\n", A.FILED.element4)にしてみたら? >>693 適切かどうかは兎も角、間違ってはいないんじゃないか?
696 名前:692 mailto:sage [2008/02/15(金) 02:19:25 ] >>695 上手くいってないような雰囲気です。 どっか自分が処理を間違えているかもしれないので、 原因を探してみます。
697 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:47:09 ] 手元のgccだとちゃんと1になるけどなぁ。
698 名前:デフォルトの名無しさん [2008/02/15(金) 02:47:14 ] >>694 上位32bitがEDXに格納されるのは解りました。 それをどうやってUINT64の変数に代入するのでしょうか。 一応、以下みたく物凄く邪道な感じでやってみたり・・・ UINT64 mul64(UINT a, UINT b) { FILETIME c; _asm { mov eax, a mul b mov c.dwHighDateTime, edx //mov dword ptr [ebp-8],eax mov c.dwLowDateTime, eax //mov dword ptr [ebp-4],edx } return *(UINT64*)&c; } >mov dword ptr [ebp-8],eax >mov dword ptr [ebp-4],edx のインラインアセンブラでの正しい記述方法が解らないです。
699 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:54:44 ] >>698 C側で対処するならこんなんとか。 union { struct { uint32 l; uint32 h; } s; uint64 w; } c; _asm { mov c.s.l, eax mov c.s.h, edx } return c.w;
700 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 02:56:12 ] これでいいよ。 __declspec(naked) UINT64 __cdecl mul64(UINT a, UINT b) { _asm { mov eax, a mul b ret } }
701 名前:デフォルトの名無しさん [2008/02/15(金) 03:29:18 ] >>699 なるほど、適当に構造体定義してやればいいのか。 >>700 これは警告も出ないしスマートだし関数でやるならこちらが良いですね。 解決です。ありがとうございました。
702 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 04:57:05 ] >>681 ありがとうございます。C++はCの標準関数+これらが使えるのね
703 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 05:17:09 ] こんな感じでも行ける UINT64 res; _asm { mov eax, a mul b mov dword ptr[res], eax mov dword ptr[res+4], edx } return res;
704 名前:デフォルトの名無しさん [2008/02/15(金) 14:36:08 ] DLLから要求があるまで動作を停止したいのですが、どのようにしたらいいんでしょうか? メインのグローバルハンドルを共有出来ないですよね?
705 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:01:58 ] >>704 環境とやりたいことを具体的に。どうせ、Windowsだろうけど。
706 名前:デフォルトの名無しさん [2008/02/15(金) 15:33:29 ] すみません 似たような質問なんですが WaitForSingleObject( HANDLE hHandle, // オブジェクトのハンドル DWORD dwMilliseconds // タイムアウト時間 ); ってHANDLEがNULLになるまで待つんですか?どういう価でうごくか教えて下さい
707 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:36:24 ] hHandleがシグナル状態になるか、タイムアウトになるまで待つ。 シグナル状態は、そのhHandleが何かによって変わる。 CreateEventしたやつならSetEventしたやつ、とかね。
708 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:40:37 ] >>706 もしそれが、WinAPIのWaitForSingleObjectならば>707。 詳しくは、MSDNかAPIスレへ。 もしそうでないなら、環境を提示すること。
709 名前:デフォルトの名無しさん [2008/02/15(金) 16:13:48 ] サンクス
710 名前:デフォルトの名無しさん [2008/02/15(金) 20:52:12 ] HTMLの文字コードをS-jisにしたいのですが、インターネットエクスプローラで読み込んでS-Jisで書きだというのをC言語でできませんか
711 名前:デフォルトの名無しさん [2008/02/15(金) 20:53:50 ] 文書全体をS-jisに変換してタグを書き換えるというのでは正しく表されないことが多いです インターネットエクスプローラは変換精度が高いです
712 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:16:31 ] すいません、質問があります。 { A a; B b; } と二つのクラスを確保したとき、デストラクタの呼ばれる順番というのは仕様で 定められているのでしょうか?それとも不定なのでしょうか? よろしくお願いします。
713 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:21:15 ] デストラクタは、コンストラクタが呼び出されたの全く逆の順で呼ばれる。
714 名前:デフォルトの名無しさん [2008/02/15(金) 21:23:44 ] すいません。1次元固定配列をを積み重ねて、 2次の動的配列にしたいのですが。 data[4]固定 data[4] data[4] ↓ 動的 typedef std::vector<int> Four; std::vector<Four> data; にすれば確かに動作するのですが、 これでは両方1次も2次も動的です。 よそのスレで typedef int Fou[4]; std::vector<Four> data; とすればいいと言われましたが スレ違いでこれ以上尋ねるわけにも行かずこちらへ 来ました。 Four four; for(i=0; i<5; i++){ for(j=0; j<4; j++){ four[j]=j; } data.push_back(????); } ここの????の書き方が分かりません。 よろしくお願いします。
715 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:27:13 ] >>713 すばやい回答ありがとうございます。継承の時と同じなのですね。
716 名前:デフォルトの名無しさん [2008/02/15(金) 21:31:00 ] >714 すいません、コピーがうまくいきませんでした。 書き込みがTABを上手いこと反映してくれないみたいですね。
717 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:32:58 ] >>710-711 日本語でおk
718 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:48:34 ] >>714 push_back は無理。 構造体にするならいける。 struct Four { int four[4]; };
719 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:50:00 ] boost::array<int, 4>ってvectorの要素にできない?
720 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:19:07 ] できる
721 名前:デフォルトの名無しさん [2008/02/15(金) 23:03:34 ] 関数の中でたまにでてくる参照引数 (int & みたいな・・) ってどういうとき使うんですか?? 複数の関数内で1つの変数を使いたいときとかですか?
722 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:04:13 ] >>721 コピーコンストラクタ作るとき
723 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:05:43 ] >>721 ・ 呼び出し元の変数の値を変更したい時 ・ 巨大なオブジェクトをコピーせずに関数に渡したい時
724 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:12:44 ] //身長を整数値として読み込んで標準体重を実数で表示 #include <stdio.h> int main() { int na; int weight; printf("身長を入力してくれ:"); scanf("%d", &na); weight = (na - 100) * 0.9; printf("標準体重は%4.1f Kg", weight); return 0; } これを実行しても標準体重が0.0 Kgになるんだけどどこを改善すればいいのでしょうか?
725 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:14:04 ] >>724 ×int weight; ○float weight;
726 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 23:17:22 ] >>724 そのコードでちゃんと警告を出してくれるコンパイラに換えるか、そのように設定する。