はきだめC/C++下級者の質問箱
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/08/17(水) 14:20:27ここは、C/C++に挫折し、それにもかかわらず、C/C++やらなければならない者達がたむろするスレです。
なお、質問する人は回答はあまり期待しないでください。
0002デフォルトの名無しさん
2005/08/17(水) 14:22:450003デフォルトの名無しさん
2005/08/17(水) 14:45:010004デフォルトの名無しさん
2005/08/17(水) 17:28:190005デフォルトの名無しさん
2005/08/17(水) 17:29:130006デフォルトの名無しさん
2005/08/17(水) 17:46:45*p++ = *q++;
って、書きたがるのですか?
*p = *q;
p = p + 1;
q = q + 1;
って書いたほうが、間違いがなくて、はるかに分かりやすいと思うけど、
こう書いたら、死ぬほど怒られた・・・
0007デフォルトの名無しさん
2005/08/17(水) 17:48:08処理が遅くなる
0008デフォルトの名無しさん
2005/08/17(水) 17:52:06ハハハハハ。
「はきだめC/C++下級者の質問箱」ならではのナイスレスw
0009デフォルトの名無しさん
2005/08/17(水) 18:08:01プログラム言語c++の165p〜167Pを
立ち読みしてください。
0010デフォルトの名無しさん
2005/08/17(水) 18:18:11どうすればいいですか?
0011デフォルトの名無しさん
2005/08/17(水) 18:21:010012デフォルトの名無しさん
2005/08/17(水) 19:26:09俺ならつりセットして道路に放置、釣れるまで待つwww
0013デフォルトの名無しさん
2005/08/17(水) 19:53:41少なくとも
p=p+1;はやめとこうな。
0014デフォルトの名無しさん
2005/08/17(水) 20:05:29だと一行に情報が詰まってって、瞬間的にやってることが理解できる。
慣用句みたいなものだし。
*p = *q;
p = p + 1;
q = q + 1;
だと、3行見ないといけないので、理解速度落ちる。
0015こえだめ
2005/08/17(水) 22:11:24敢えて書くとしたら
(*p)++=(*q)++じゃなくて
*(p++)=*(q++)という意味だろう
*型は、入れ物の最初のアドレスを示す
この感覚を持っておくのは、間違いを防ぐために重要だよ
0016デフォルトの名無しさん
2005/08/17(水) 22:57:04どうせだったら
p[0] = q[0];
p = &p[1];
q = &q[1];
と書いてみてはどうだろう。
きっとその先輩も納得してくれるはず。
0017デフォルトの名無しさん
2005/08/17(水) 23:43:530018デフォルトの名無しさん
2005/08/17(水) 23:47:24VC7.1
0019デフォルトの名無しさん
2005/08/17(水) 23:52:15レス
アリガトウゴザマス
0020デフォルトの名無しさん
2005/08/18(木) 00:02:00ここは「通報しますた」と返す所じゃないか?
0021デフォルトの名無しさん
2005/08/18(木) 01:17:420022デフォルトの名無しさん
2005/08/18(木) 01:20:24皮肉りますた
0023デフォルトの名無しさん
2005/08/18(木) 02:40:49すごいな。Cプログラマーは、これを一瞬見ただけで理解できるのか・・・
下級者な俺は、カッコとかつけてみて、一個ずつ考えてかないと何やってるのか
サッパリ分からないよ。
こんなの、どうやったら一瞬見ただけで分かるようになるのですか?
てか、なんで上級者は、できるかぎり分かりにくく書くように努めるのですか?
0024デフォルトの名無しさん
2005/08/18(木) 02:48:34俺も凄いと思った。こんなコードを一瞬で理解できるなんて、天才か基地外の
どちらかだな。どちらかというと後者の方だろうな。
0025デフォルトの名無しさん
2005/08/18(木) 02:53:160026デフォルトの名無しさん
2005/08/18(木) 03:37:000027デフォルトの名無しさん
2005/08/18(木) 08:39:280028デフォルトの名無しさん
2005/08/18(木) 09:38:34だめだ、エラーが出るOrz
0029デフォルトの名無しさん
2005/08/18(木) 10:14:52だめだ、エラーが出るOrz
0030デフォルトの名無しさん
2005/08/18(木) 10:57:09すたんだーどあぃおー
0031デフォルトの名無しさん
2005/08/18(木) 11:13:30003227
2005/08/18(木) 11:21:25由来は知っています。読み方が知りたいです。
0033デフォルトの名無しさん
2005/08/18(木) 11:22:040034デフォルトの名無しさん
2005/08/18(木) 11:24:27上級者向けの本に書いてあった。僕は上級者じゃないけど
0035デフォルトの名無しさん
2005/08/18(木) 11:26:350036デフォルトの名無しさん
2005/08/18(木) 11:54:08カタカナでは表現しきれない発音なので困っています。
0037デフォルトの名無しさん
2005/08/18(木) 12:38:08コンパイル通らないぞ
>p=&p[1];
>q=&q[1];
だいたい、
p[1]自体、*型のp+1なわけで、
Buhi* pa;
Buhi a[値];
なら、
pa=a;と書けるわけで、
しかし、a=pa;とは書けないわけで、
やりたけりゃ、
charならstrcpy[a,pa]もしくはlstrcpy使えるわけで、
strcpyやlstrcpyがあるのは、
このようにchar配列→char*型に入れられるという存在意義が大きいわけで
0038デフォルトの名無しさん
2005/08/18(木) 12:40:450039デフォルトの名無しさん
2005/08/18(木) 13:03:43p[値]なとき、pが示すのは、配列の先頭アドレス
*paなとき、paが示すのは、入れ物の先頭アドレス
世の中の本の説明はへたくそだと思う
0040デフォルトの名無しさん
2005/08/18(木) 13:10:35> コンパイル通らないぞ
配列として宣言するからだろ
0041デフォルトの名無しさん
2005/08/18(木) 18:14:250042デフォルトの名無しさん
2005/08/18(木) 18:36:44Java にもコンパイラ要るだろ?
しかも Java はコンパイラだけじゃなくランタイムまで要るだろ?
0043デフォルトの名無しさん
2005/08/18(木) 19:12:400044デフォルトの名無しさん
2005/08/18(木) 20:03:09失礼、知人から古いパソごと貰ったものですから・・・
Cみたいな値段するんですか?
0045デフォルトの名無しさん
2005/08/18(木) 20:11:33VCのコンパイラもフリーであるし
0046デフォルトの名無しさん
2005/08/18(木) 20:16:46プログラマが楽をして、そのツケをユーザー側に押しつける最低言語。
0047VCでは
2005/08/18(木) 20:28:31要は、例えば、Viewクラスから、CDoc::〜なんて、関数を使っちゃうことができない
(おそらく、この機能は、それぞれの基本クラスで、protect:指定されて関数が定義されているからではないかと勝手に推測してる)
だが、それでは、困るから、お互いのクラスをアクセスする為の関数が各クラスに少しだけ設けられている
これらを介すれば、例えば、Viewクラスから、Docクラスの関数を全てかどうか分からないが、スコープ(::)で使えなかったあらゆる関数が使えるようになる
で、これらのクラスの関係のしくみをとり仕切っているのがボスであるCWinAppクラス
この派生クラスであるC〜Appクラスでドキュソメントテソプレートというテンプレート(テンプレ自体はC++の機能。おそらく雛型はCWinAppにあると勝手に推測している)というのを使って、
Flame(子も含め)、Doc、Viewの各クラスの関係を定義している
実装は、C〜AppのInitInstanceにある
はきだめらしく、変かもしれない
0048デフォルトの名無しさん
2005/08/18(木) 20:30:360049デフォルトの名無しさん
2005/08/18(木) 20:41:43というのが正しいかもしれない
とにかく、InitInstanceにRUNTIME_CLASS()という関数がある
0050デフォルトの名無しさん
2005/08/18(木) 21:36:24>Viewクラスから、CDoc::〜
C〜Viewクラスから
C〜Doc* pDoc;
pDoc->〜
なんてことはできない
0051デフォルトの名無しさん
2005/08/18(木) 23:34:47燃やすんですか?<Flame
0052デフォルトの名無しさん
2005/08/19(金) 00:17:390053デフォルトの名無しさん
2005/08/19(金) 00:27:440054奥義のほんの一部だが
2005/08/19(金) 00:33:05ある意味、守られたオブジェクト群ともいえる
しかーし、この法の目を抜けて、気ままにお互いアクセスする手段もある
例えば、
同じプロジェクト上で、新規に.hと.cppを作り、Docを派生させてクラスを作ってやる(例えばclass ONEW:public〜)
注)ウィザードの新規クラスでは、コンボになくて、継承できなくなっている、MSがそんな抜け道させない為か・・・
そして、ViewでONEW on;とでも宣言してやれば、あら不思議、
on.〜でViewからDocがGetDocument関数も使わずに自由にアクセスできてしまう
ちなみに、この技、アマグラマーだけに許されている
なぜなら、制限がないだけにプログラマーが、仕事で使うと危ういからだ
ヤケドするぜw
なんちゃって
0055デフォルトの名無しさん
2005/08/19(金) 01:02:45ONEWクラスファイルのインクルードを忘れずに
それと、逆にいうと、新規クラスを作るときはRUNTIMEの目が届かない可能性があるから、注意が必要だとも言える
005656
2005/08/19(金) 03:56:46c++についてなのですが、2つcppファイルを作って片方から片方の変数を見る事ができません。
メソッドについてはexternを使えば参照できる事がわかったのですが、変数などが参照できません。
教えてください。よろしくお願いします。
0057デフォルトの名無しさん
2005/08/19(金) 07:37:00メソッドってなんだろうな…と。
関数は普通に関数宣言で。変数は extern で。
宣言と定義の意味をちゃんと理解しておこう。
0058デフォルトの名無しさん
2005/08/19(金) 13:51:19ゴチャゴチャしててよく解らんが、もしかして
>そして、ViewでONEW on;とでも宣言してやれば
View に Doc を内包させようとしてる?
そら確かに掃き溜めらしいが…
0059デフォルトの名無しさん
2005/08/19(金) 14:29:110060デフォルトの名無しさん
2005/08/19(金) 18:12:58せめてこうしようぜ。これなら俺は許す。
*p = *q;
p++;
q++;
0061デフォルトの名無しさん
2005/08/19(金) 18:22:20クラス宣言に class を使わず struct を使う(最低)。
0062デフォルトの名無しさん
2005/08/19(金) 19:04:59CとC++では変数のスコープが違っているから注意せよ。
C++はわざわざextern付けないと、グローバルにならない。staticはもはや
classやstruct中でしか使われなくなった。
0063デフォルトの名無しさん
2005/08/19(金) 20:31:40CでもC++でもグローバル変数の宣言にはexternが必要だが。
0064デフォルトの名無しさん
2005/08/19(金) 21:18:04その上にくっついている、 c って何の意味があるんですか?
command? それとも c++? の略かなんかですか?
0065デフォルトの名無しさん
2005/08/19(金) 21:22:07Console
0066デフォルトの名無しさん
2005/08/20(土) 01:18:140067デフォルトの名無しさん
2005/08/20(土) 08:41:190068デフォルトの名無しさん
2005/08/20(土) 16:22:19上級者:自分が分かってないことを分かってないヤツ
0069デフォルトの名無しさん
2005/08/20(土) 16:33:510070デフォルトの名無しさん
2005/08/20(土) 22:48:38関数内
0071デフォルトの名無しさん
2005/08/22(月) 14:38:090072デフォルトの名無しさん
2005/08/22(月) 14:48:26どんなでかいプログラムも一本のファイルになるからお勧めだよ。
0073デフォルトの名無しさん
2005/08/22(月) 14:54:100074デフォルトの名無しさん
2005/08/22(月) 17:34:13俺もそれやってるよ。ヘッダファイルを全部コピペで一本のソースに
貼り付けてる。プログラムを一つも書かなくても、ソースの大きさが100MBを
超えて、すごい快感だよなww
0075デフォルトの名無しさん
2005/08/22(月) 18:48:11全部1ファイルにマージするツール作ったよ。
GUIフロントエンドから、使用したいクラスを選択すると、関連ソースを全部1ファイルに
してくれるから、あとは自分のコードを追加するだけという優れもの。
0076デフォルトの名無しさん
2005/08/22(月) 18:48:37例えば、とあるクラス(or構造体)HogeをA.cppに書いたとする。
しかし、別のファイルB.cppでも同じクラスを使いたい場合ってのが出てくる。
そんなとき、ヘッダファイルにHogeクラスの宣言を書いておけば
それをインクルードすることで共通のクラスを使える。
簡単にまとめるとこんな感じ。
-- A.h ----------------------
class CHoge{
CHoge();
int Test();
…
};
-- A.cpp ----------------------
#include "A.h"
CHoge:CHoge(){
…
}
int CHoge:Test(){
…
}
-- B.cpp ----------------------
#include "A.h"
void Func()
{
CHoge hoge;
hoge.test();
}
------------------------------
もちろん、クラスだけじゃなくてマクロや関数定義でもOK
0077デフォルトの名無しさん
2005/08/22(月) 19:48:26いけるよな。
main なんかどんな cpp ファイルでも必要だから、ヘッダファイルに書くのは常識だよ。
0078デフォルトの名無しさん
2005/08/22(月) 20:21:07まじめに答えると量が多くなってくると面倒くさくなる。
打ち間違いも心配。コピペでもなんとなく不安。
0079デフォルトの名無しさん
2005/08/22(月) 20:31:45じゃぁ私もまじめに答えよう。
コピーペーストだと、一箇所書き換えると
そこからコピーしたファイル全部を修正する必要がある。
.h にまとめておくと、再コンパイルだけで済むのでミスが少なくなる。
0080デフォルトの名無しさん
2005/08/22(月) 23:33:23#include "main.h"
0081デフォルトの名無しさん
2005/08/23(火) 14:16:14ヘッダファイル → 大盛りネギダク
.cppファイル → 牛鮭定食
という対応はわかったかな? >>71
0082デフォルトの名無しさん
2005/08/23(火) 14:53:200083デフォルトの名無しさん
2005/08/24(水) 01:21:30処理系依存
0084デフォルトの名無しさん
2005/08/24(水) 16:25:12// $(CC) -DIFILE=\"....\" ...
0085デフォルトの名無しさん
2005/08/27(土) 13:45:390086デフォルトの名無しさん
2005/08/27(土) 14:10:480087デフォルトの名無しさん
2005/08/27(土) 17:24:430088デフォルトの名無しさん
2005/08/27(土) 17:36:010089デフォルトの名無しさん
2005/08/27(土) 18:04:48何が必要ですか?
0090デフォルトの名無しさん
2005/08/27(土) 18:13:470091デフォルトの名無しさん
2005/08/27(土) 18:25:15他にコンピュータとコンパイラは最低限必要だな。
あぁ、気兼ねなくネットサーフィンできる環境があると
ちょっとした調べごとがさくっとこなせてベター。
0092デフォルトの名無しさん
2005/08/27(土) 19:22:450093デフォルトの名無しさん
2005/08/27(土) 19:24:560094デフォルトの名無しさん
2005/08/27(土) 23:42:570095あぼーん
NGNG0096デフォルトの名無しさん
2005/08/27(土) 23:58:16勤め人だったら○○在住 会社員の山田太郎
フリーだったら○○在住 自営業の山田太郎
こうなるからじゃないのか?と思った。
0097デフォルトの名無しさん
2005/08/28(日) 05:45:140098デフォルトの名無しさん
2005/08/29(月) 12:21:130099デフォルトの名無しさん
2005/08/29(月) 13:53:20・駅の点字ブロックに荷物を置いた老人を
線路に突き落とした自称プログラマ。
・親子でキャッチボールしてる所に車で突っ込んだ後、
父親を包丁でメッタ刺しした自称プログラマ。
・出張32◆Rb.XJ8VXow。
0100デフォルトの名無しさん
2005/08/30(火) 10:38:420101デフォルトの名無しさん
2005/08/30(火) 12:54:23■ このスレッドは過去ログ倉庫に格納されています