- 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
- 792 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 15:25:05 ]
- >>790
いや、触れないヘッダなんですよね ほかのパッケージだから なんでC++からCを呼び出したいってのもあるんだけど なんで知ってる人いたら教えてくださいな
- 793 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 15:28:47 ]
- >>792
そのヘッダで宣言されている関数を呼ぶ、Cのソースを一つはさめばいいだろ。
- 794 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 16:42:52 ]
- 型と順番があってれば問題ないはずだから
ライブラリ利用側だけヘッダを書き換えて使うとか。
- 795 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 20:08:08 ]
- CP932なマルチバイト文字列をCP932なワイド文字列に変換する簡単な方法ってないですか?
Windows上でgcc 3.4.5(Mingw)を使ってます。
- 796 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 20:48:04 ]
- ああ、筋トレ気持ちいい
- 797 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 20:48:36 ]
- ごめん
- 798 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 20:49:35 ]
- >>796
スジトレ?どこのスジだよ。裏スジか?
- 799 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 21:00:47 ]
- 柔道部出身がマになっちゃう時代なんだよ・・・
- 800 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 22:09:56 ]
- うちにも短髪でえらくがたい良いのいるな
- 801 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:18:13 ]
- うちには男子校上がりのいい男がいる
のんけでも平気で食っちゃうらしくておそれられてる
- 802 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:23:47 ]
- なんだ?クリスマスに備えて職場のイイ男自慢大会か?悪くないな
- 803 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:13:34 ]
- >CP932なワイド文字列
って何?
- 804 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:19:10 ]
- >>803
間違えました。正しくは「ワイルドな文字」です。申し訳ありません。
- 805 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 02:52:11 ]
- liboctaveを使って行列演算しようと思っているのですが、構造体内で行列の宣言をすることはできるのですか?
- 806 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 05:44:10 ]
- kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5574.zip
以上のzipファイル内Cプログラムを組んでいるのですが、どうにもうまくいかず立ち往生してしまいました。 同梱のテキストファイルに大よその概要を入れておいたので、何とか力になってもらえないでしょうか。
- 807 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 08:15:06 ]
- >>806
*p = next(p); だと、pが指し示す先の中身を書き換えるからおかしくなってんじゃないか? next() は構造体へのポインタを返すようにしたほうが良くないか。
- 808 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 09:52:36 ]
- ワイルドな文字って何だよw
文字コードを変換したいならとりあえず iconv 使えばいい。
- 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なら警告はでないけど
|

|