スレを勃てるまでもないC/C++の質問はここで 4
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/09/17(水) 15:41:48過去ログ
スレを勃てるまでもないC/C++の質問はここで
http://pc11.2ch.net/test/read.cgi/tech/1167476845/
スレを勃てるまでもないC/C++の質問はここで 2
http://pc11.2ch.net/test/read.cgi/tech/1178503366/
スレを勃てるまでもないC/C++の質問はここで 3
http://pc11.2ch.net/test/read.cgi/tech/1187521676/
0451デフォルトの名無しさん
2008/12/02(火) 01:13:26>>439をひたすら縦に引き伸ばしてから同じことを考えるんだ
明らかに右上の座標のx+yのほうが小さくなる
0453デフォルトの名無しさん
2008/12/02(火) 14:47:45(0,0)と(0,1)のどちらが左上だ?
凹四角形の扱いはどうするのだ?
0454デフォルトの名無しさん
2008/12/02(火) 15:15:12>>429
0455デフォルトの名無しさん
2008/12/02(火) 17:33:01int b[100];
bの[0~99]までの全内容を a[0~99]にfor文とかmemcpyやmemmoveとか使わないで
代入する方法なんてありますか・・・?
0456デフォルトの名無しさん
2008/12/02(火) 17:39:07a[0]=b[0];
a[1]=b[1];
a[2]=b[2];
・
・
・
a[99]=b[99];
0457デフォルトの名無しさん
2008/12/02(火) 17:49:01やはりないかぁ・・・
0458デフォルトの名無しさん
2008/12/02(火) 18:04:11struct array_of_int_100 {
int array[100];
};
int a[100];
int b[100];
*(struct array_of_int_100*)a = *(struct array_of_int_100*)b;
0459デフォルトの名無しさん
2008/12/02(火) 18:09:590460デフォルトの名無しさん
2008/12/02(火) 18:21:47a = b;
0461デフォルトの名無しさん
2008/12/02(火) 18:44:570462デフォルトの名無しさん
2008/12/02(火) 19:20:46バイナリデータからバイナリ列をサーチする関数、STLないですか?
0463デフォルトの名無しさん
2008/12/02(火) 19:23:280464デフォルトの名無しさん
2008/12/02(火) 19:32:15list<int> list[M][N];
みたいな2次元配列って出来るんですか?
0465デフォルトの名無しさん
2008/12/02(火) 20:22:08できるよ
0466デフォルトの名無しさん
2008/12/02(火) 20:55:07質問があるのでどうか答えてほしい。
C++とVB.NETで両方ともオブジェクト指向でわけわからんになってしまった経験があるのだが。オブジェクト指向って本当に必要なんですか?
コンピューターの世界で無理やり知らなければならないような方向に誘導されてるような気がするのですが。
オブジェクト指向は効率的なプログラムを組むために必要だとか利便性を説いてるが、かえって複雑になって習得が難しくなってる気がする。
Windows上でツールを作ることを目的としてプログラミング言語を2,3勉強したが。身についたのはC言語だけ。
もうこうなったらオブジェクト指向はさっぱりあきらめてC言語だけで行こうかと思ってるのですけど。
C言語でアプリやツール、ゲームをつくる需要は今後も残るのでしょうか?
0467デフォルトの名無しさん
2008/12/02(火) 21:06:00俺は詳しいとはいわんが、C の需要は残ると思う。ただ、アプリ、ゲームを
チームで全てCで作ることはあまり無くなるだろう。一人で作るなら勝手に。
ドライバとか低レベル(悪い意味で無くて)のものはCで残るものがあるはず。
ただ、オブジェクト指向使えた方が楽だと思うんだけどなぁ…
(C→C++,Java と来た人だけど)
他の人の意見も見てみたい
0468デフォルトの名無しさん
2008/12/02(火) 21:12:54今ではすっかりC++に馴染んでオブジェクト指向じゃないと面倒だと感じるようになりました^q^
>>467の言う通り完全に需要がなくなることは当分無いと思う(実際COBOLとか未だに需要あるし)けど、
やっぱり自分一人という範囲に限らないならオブジェクト指向の知識は必要だと思う。
ライブラリの類もオブジェクト指向前提のものは多いしね。
0469デフォルトの名無しさん
2008/12/02(火) 21:20:11みんながむやみやたらと唱えるバズワードと化してしまったのがだいぶ前から。
あと、Cで書かれたプログラムだってオブジェクト指向的な部分はいくらでも指摘できる。
もちろん、Cはオブジェクト指向プログラミング言語ではないし、
そこで書かれたプログラムにも、オブジェクト指向プログラミングでよく見かける特徴は
あまり見出せないけど。
0470デフォルトの名無しさん
2008/12/02(火) 21:23:52気持ちはすごいわかる。
自分もそんなに分かってるわけじゃないけど、世間のオブジェクト指向って
それっぽい文法を採用してるよ、ってぐらいなので、そんな気にすることはないと思う。
言語体系が複雑になっているのは、汎用性とのトレードオフじゃないかね。
C言語のコアはシンプルだけど、何かするなら結局OSのAPIとか使わないとならない。
Javaみたいにそれ全部仕様に含んじゃうと、当然仕様は膨らんじゃう。
仕事でチーム作業の場合 C++で統一するってのは仕方ないだろうね
でも自分は C で作ってる。必要最小限のコードで済ませられるし、
プログラムとかプロセスのレベルでシステムを設計すれば、実際のところ
言語はなんでもいいしね。
0471デフォルトの名無しさん
2008/12/02(火) 21:23:55そのうち慣れるって。
慣れたらもう戻れないけどね。いや、戻れるけど
クラス無いのきびしーって思うようになるよ。
関数やローカル変数なかったらきびしーなんてもんじゃないけど。
そういえばCOBOLには無いんだっけw
0472デフォルトの名無しさん
2008/12/02(火) 21:26:04ご回答ありがとう。
C++とVB.NETと一通り勉強したけど、自分でオブジェクト指向でプログラムつくれなくて挫折したわ。
これを理解できるのはかなり頭のいい人だろうね。
趣味でプログラミングをやってるので、チームワークの必要なことはしないし知ってるのは唯一自分でコードが書けたC言語だけでいいかなとも思った。
ところで質問をもうひとつしますが。
ウェブブラウザのFirefoxってフリーでソースが公開されてるけど、
ビルドするのにGCCを用いる様だけど、これってC言語でできてるのでしょうか?
0473デフォルトの名無しさん
2008/12/02(火) 21:30:56オブジェクト指向で何がしたいのか分かると思う
0474デフォルトの名無しさん
2008/12/02(火) 21:33:21確かに色々と覚えることがあって回りくどくて面倒なんで
うんざりするほどその気持ちはわかる。
自分もそう思っていたんで。
でも、とりあえずクラス化したら楽だと思うんだ。
慣れないうちは全部publicなメンバでも良いと思う。
関数名とか変数名とかdrawとかxみたいに短くても楽に管理できるし。
それだけでも重宝するかと。
0475デフォルトの名無しさん
2008/12/02(火) 21:59:58なんだか知らないけれど新たにがんばってみようと言う気になったわ。
ありがとうよ。
0476デフォルトの名無しさん
2008/12/02(火) 23:33:31だけで大分便利。ついでに自分で template 書けるようになると
もっと便利。そんなことしてるうちに自然と OOP。
0477デフォルトの名無しさん
2008/12/03(水) 02:46:39ファイル処理関連はどの言語もOOPみたいなもんだ
単に語順と追加機能の有無だけ
0478デフォルトの名無しさん
2008/12/04(木) 17:38:38左上に「ファイル」、右上に最小化最大化閉じる、といったものがある普通のアプリの段階にはいつ入るものなのでしょうか?
あるいはこういった骨格みたいなの?は入門書的にはなんという項目から始まるものなのでしょうか
0479デフォルトの名無しさん
2008/12/04(木) 17:54:24入門書は普通、CやC++の基礎部分を解説するもの
ウィンドウシステムは応用部分にあたるので
入門書ではあまり語られない
一通り入門書を触ったら、Visual C++ Express 辺りを落として
インスコした Visual C++ をテキトーに弄ったり
Windowsプログラミングの書籍を読んで勉強するヨロシ
0480デフォルトの名無しさん
2008/12/04(木) 18:17:54http://homepage2.nifty.com/c_lang/index_sdk.html
0481デフォルトの名無しさん
2008/12/04(木) 18:19:18ある程度共通項が多い上扱いやすい stdio に対して
ウィンドウシステムの扱いは各環境でバラバラ。
そしてその多くはそれだけで本が1〜数冊書ける複雑さ。
直接扱うのは複雑だからと、簡単に扱うためのライブラリもある。
(WindowsならMFCや.net、LinuxならTkやGTKやQtなど)
それから、色んな環境で扱えるように作られたライブラリもある。
(wxWidgetとか。.netやTkも一応互換環境がありこっちにも分類可能)
環境も手段も多様で、総てを統括するのは困難。
0482デフォルトの名無しさん
2008/12/04(木) 18:32:53ありがとう、また文字を表示する作業から勉強しなおしてきます
0483デフォルトの名無しさん
2008/12/05(金) 09:10:330484デフォルトの名無しさん
2008/12/05(金) 09:34:160485デフォルトの名無しさん
2008/12/05(金) 09:38:400486デフォルトの名無しさん
2008/12/05(金) 11:47:410487デフォルトの名無しさん
2008/12/06(土) 10:25:010488デフォルトの名無しさん
2008/12/06(土) 10:27:230489デフォルトの名無しさん
2008/12/07(日) 10:30:310490デフォルトの名無しさん
2008/12/07(日) 10:47:51アクセスできなくて困ることはあるが。
0491デフォルトの名無しさん
2008/12/07(日) 17:10:34int v(char *c){int i;sscanf(c,"%4d",&i);return htons(i);}
この関数をもっと短くする方法あるかな?
Code Golfの感じで。
引数のcharポインタは"YYYYMMDD"といった数字文字列の領域を指してると思いねぇ。
0492デフォルトの名無しさん
2008/12/07(日) 17:32:09七行スレのログ読めば短くするノウハウが沢山あると思う
0493デフォルトの名無しさん
2008/12/07(日) 18:38:38先頭のintを省く
0494デフォルトの名無しさん
2008/12/07(日) 23:11:370495デフォルトの名無しさん
2008/12/08(月) 08:24:270496デフォルトの名無しさん
2008/12/08(月) 11:20:15いいえ
0497デフォルトの名無しさん
2008/12/08(月) 11:47:46↑を見てインターフェースクラスというものを知ったのですが
インターフェースクラスをスーパークラスとして実装を行った場合、
特定のサブクラスのみが持つようなメンバ関数にアクセスすることができないと思いました。
このサイトに書いてあるインターフェースクラスというものが間違いなのか、
それとも私の理解がぜんぜん足りていないのでしょうか。
どこが間違っているか、どこが理解不足かの指摘をお願いします。
0498デフォルトの名無しさん
2008/12/08(月) 11:51:55型キャストすれば特定のサブクラスのみが持つようなメンバ関数にアクセスすることができる。
reinterpret_castだったかな?
0499デフォルトの名無しさん
2008/12/08(月) 11:54:55特定のサブクラスのみが持つ特殊なメンバ関数などには興味がないはずである
0500デフォルトの名無しさん
2008/12/08(月) 11:55:17>>497のサイトでCExample3という、IExampleを継承したクラスを追加するとして、
IExampleがもしMethod2()というメンバ関数を持っていたら、
大幅な修正を加えないとMethod2を呼ぶことができないように思います。
理解が足りないのでしょうか…
C++は難しいです
0501デフォルトの名無しさん
2008/12/08(月) 11:57:34>>498
レスをありがとうございます。
スーパークラスからサブクラスへのキャストはあまりよろしくないと聞きました。
実際は使っても良いものなのでしょうか。
それとももっと別の書き方をするのでしょうか。
>>499
レスをありがとうございます。
ということは、特殊なメンバ関数を使いたい場合には、
やはりどういったクラスがあるかを確認して、
そのクラスの型を持つポインタを用意する必要があるということでしょうか。
0502デフォルトの名無しさん
2008/12/08(月) 11:58:370503デフォルトの名無しさん
2008/12/08(月) 11:59:21partition(b,e,p)を定義しろってのがあったんだけどだれかおしえてくだしあ><
0504デフォルトの名無しさん
2008/12/08(月) 12:00:59頭の回転が遅いので、これをヒントにもっと考えてみます。ありがとうございます。
0505デフォルトの名無しさん
2008/12/08(月) 12:03:45Javaを学ぶと良い。言語仕様にInterfaceを含んでいる。
0506デフォルトの名無しさん
2008/12/08(月) 12:04:01特定のサブクラス固有の特殊なメンバ関数を使いたいというのは、
すべてのクラスを共通のインタフェイスで扱いたいという趣旨に反している
設計がどこかおかしい
0507デフォルトの名無しさん
2008/12/08(月) 12:42:56template<class T>void copy(T * b, T * e, T * d) {for (; b != e; ++b, ++d) *d = *b;}
他は仕様が余りに曖昧なのでパス。
0508デフォルトの名無しさん
2008/12/08(月) 12:50:36template<typename FI, typename PRED>FI partition(FI b, FI e, PRED p)
{
if (b == e) return b;
while (p(* b)) if (++b == e) return b;
FI n = b;
while (++n != e) if (p(* n)) swap(* ++b, * n);
return b;
}
0509デフォルトの名無しさん
2008/12/08(月) 14:05:260510デフォルトの名無しさん
2008/12/08(月) 14:11:070511デフォルトの名無しさん
2008/12/08(月) 14:11:410512デフォルトの名無しさん
2008/12/08(月) 14:23:05でもなんか動作がほんの少しちがうようだ。原因は不明
0513デフォルトの名無しさん
2008/12/08(月) 14:27:01つーか、>508ってSTLの実装じゃないの?w
0514デフォルトの名無しさん
2008/12/08(月) 14:33:51ここで「unused parameter 'parent'」のWarningが出てしまいます。
コンパイラを変える
コンパイラオプションを変える
#pragmaで抑制する
以外の簡単な解決法があれば教えてください。
0515デフォルトの名無しさん
2008/12/08(月) 14:39:340516デフォルトの名無しさん
2008/12/08(月) 14:48:54�d
なんで気付かなかったんだろ
0517デフォルトの名無しさん
2008/12/08(月) 14:51:060518デフォルトの名無しさん
2008/12/08(月) 21:46:41class CHoge
{
const int path; // ここでのconstがエラー?
public:
CHoge();
void Show();
};
CHoge::CHoge(){ path = 1024; }
void CHoge::Show(){ printf( "%d\n", path ); }
void main()
{
CHoge hoge;
hoge.Show();
}
上記のソースでコンパイルするのですが
error C2758: 'path' : オブジェクト コンストラクタの初期化リストで初期化されませんでした。
とコンパイルエラーがでます
const int path を int path にするとコンパイルは通るのですが、
pathをconstにして変更不可にしたい場合どのような手段があるのでしょうか?
0519デフォルトの名無しさん
2008/12/08(月) 21:53:52↓
CHoge::CHoge() : path(1024){}
constなんだから代入できるわけ無いだろカス
0520デフォルトの名無しさん
2008/12/08(月) 22:10:07ではどうしろと?
0521デフォルトの名無しさん
2008/12/08(月) 22:14:110522デフォルトの名無しさん
2008/12/08(月) 22:17:27参考書にはその書式載ってなかったんだ
ありがとう
0523デフォルトの名無しさん
2008/12/08(月) 22:30:52class CHoge
{
const int path
public:
CHoge();
void Show();
};
CHoge::CHoge() : path(1024){}
void CHoge::Show(){
char lo[path]; // ここでエラー
printf( "%d\n", path ); // ここはOK
}
void main()
{
CHoge hoge;
hoge.Show();
}
う〜ん
error C2057: 定数式が必要です。
error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。
error C2133: 'lo' : サイズが不明です。
とエラーがでるんですが、#define の変わりにはならないんでしょうか?
0524デフォルトの名無しさん
2008/12/08(月) 22:34:22CHoge::pathとかいろんな言語でありがちな書き方だと思うけど
0525デフォルトの名無しさん
2008/12/08(月) 22:37:070526デフォルトの名無しさん
2008/12/08(月) 22:45:11あとそうすると定義方法が変わるけど
0527デフォルトの名無しさん
2008/12/08(月) 22:46:20C++ではできるよ
0528デフォルトの名無しさん
2008/12/09(火) 00:04:01これ、クラス・関数外ならstaticは要らない。
0529デフォルトの名無しさん
2008/12/09(火) 11:59:20while(a!=c) a++;この文ってa++だけ繰り返すんだよね?
0530デフォルトの名無しさん
2008/12/09(火) 12:00:25static ではない const は「インスタンス生成後に書き換えないよ」というだけで
コンパイル時に決定できないかも知れない。なので、
>#define の変わりにはならないんでしょうか?
ならない。ここは素直に頭に static 付けて、後ろに = 1024 付けるよろし。
但し、もし VC++ 6.0 だとこれもできないんで enum hack 使うしかない。
>>529
是。
0531デフォルトの名無しさん
2008/12/09(火) 12:07:40529だけどおkと解釈しますね
0532530
2008/12/09(火) 12:42:49そです。おk。
0533デフォルトの名無しさん
2008/12/09(火) 13:02:42a!=c も繰り返すよ、というのが正確だけどまあいいか
0534デフォルトの名無しさん
2008/12/09(火) 14:23:28なんでa=c;にしないの
0535デフォルトの名無しさん
2008/12/09(火) 14:36:210536デフォルトの名無しさん
2008/12/09(火) 15:01:030537デフォルトの名無しさん
2008/12/09(火) 15:43:060538デフォルトの名無しさん
2008/12/09(火) 16:28:47言われてみればそうだな
指摘あんがと
0539デフォルトの名無しさん
2008/12/09(火) 18:14:40大丈夫、中国語では「そう」って感じの意味だ
0540デフォルトの名無しさん
2008/12/09(火) 18:43:190541デフォルトの名無しさん
2008/12/09(火) 19:59:200542デフォルトの名無しさん
2008/12/09(火) 20:15:130543デフォルトの名無しさん
2008/12/10(水) 02:06:45「是」は「はい」だ
「対」が「そう」に近い
0544デフォルトの名無しさん
2008/12/10(水) 02:46:18対か。謝謝。
0545デフォルトの名無しさん
2008/12/10(水) 08:30:11つまり、「「はい」ではなく「いいえ」だとしても」という意味だね。
0546デフォルトの名無しさん
2008/12/10(水) 09:24:260547デフォルトの名無しさん
2008/12/10(水) 09:36:53台詞からして、相良軍曹だな。
0548デフォルトの名無しさん
2008/12/10(水) 12:46:39scanf()は入力したものを受け取る関数だと思うのですが、
受け取れる箇所は1つだけなのでしょうか?
例:scanf("%d",&a)は10進数で受け取り、aに保存?すると思いますが
scanf("%d",&a,&b)のように複数に保存できるようにはできないでしょうか?
変な質問でスマソ、意味がわからなかったら軽くスルーしてください orz
0549デフォルトの名無しさん
2008/12/10(水) 12:48:08scanf("%d %d", &a, &b);
//コンマ区切り
scanf("%d,%d", &a, &b);
0550デフォルトの名無しさん
2008/12/10(水) 17:40:07b=a;
とするしか。
0551デフォルトの名無しさん
2008/12/10(水) 18:09:08馬鹿だな。
■ このスレッドは過去ログ倉庫に格納されています