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


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

【初心者歓迎】C/C++室 Ver.47【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 15:14:51 ]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.46【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1198755167/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

159 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:40:28 ]
>>134
お願いします。

160 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:19:55 ]
public:
template <class T> class templateA {
protected:
T value;
public:
各種メソッド
};

template <class T> class templateB {
protected:
T value;
public:
各種メソッド
}

class child : templateA<templateB<type> >{
追加メソッド
}

以上のようなクラスを作成し、
子クラス内でthis->value.valueでテンプレートクラスB内の値にアクセスしようとしたのですが、protectedの要素にアクセスできないというエラーが出ます。
どこを直せばよいのか分かりません。
どなたかご教示下さい。
宜しくお願いします。

161 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:30:06 ]
templateBのvalueをpublicにすれば良い
childはtemplateBを継承してないんだからtemplateBのprotectedメンバにはアクセスできない

162 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:31:45 ]
安易にpublicにしていいのだろうか。

163 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 23:47:24 ]
なら安易にアクセスすんなよw

164 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:05:00 ]
public にするくらいなら friend にするわ。
でも、設計をもうちょっと考える事をまず検討した方がいい気がする。

165 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:45:04 ]
>>161-164様、ありがとうございます。
それぞれのテンプレートクラスにgetメソッドを追加して、要素にアクセスできるようにしてみました。
あまり綺麗な方法とは思いませんが、ひとまずこれで妥協しておきます。
C++初学者なので、friend関数の存在は知っていますが、使った事がないので、こちらも少し勉強してみようと思います。
オブジェクト指向が少しずつ理解できるようになってきて、数ヶ月前に作ったクラスのリファインが楽しすぎて困ります。
お陰で研究が全然進まないYO...

166 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:47:56 ]
おすすめ   設計見直し > get > friend > public   おすすめしない

って順かな。

167 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:51:39 ]
friendもpublicも大差ない気がするけどな
研究とかならいっそstructでもいい気がする



168 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 00:57:23 ]
一応公開する相手が制限されてる分、public よりマシだとは思うが、
決しておすすめはできないという点では確かに似たようなもんだな。

169 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:01:32 ]
>>166
getは○〜△というところでしょうか。
一応意図したものにはなったので、取りあえずこれで行ってみます。

>>167
この先数年使う可能性があるので、ある程度しっかりしたものが作っておきたかったのです。
最悪の場合、お上に献上しないといけないものなのでw
リファイン前は各変数毎にgetメソッドとsetメソッドを用意していました。
これではあまりにも酷いと思いまして。

>>168
難しいですね。
自分の知識がついてきたら、またリファインすると思います。
そして無限ループへ…

170 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:08:37 ]
作る前に設計をよく練った方がよさそうな・・・
設計に関する知識が無いならC++なんかやってないでそっちの勉強すべきだし

171 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:32:23 ]
#include <stdio.h>
class A{
public:
virtual void func(){printf("A::func¥n");};
};

class B :public A{
private:
virtual void func() {printf("B::func¥n");}
};

int main (void)
{
A* b = new B;
b->func(); //B::funcと出力される。privateなのにアクセスできる!?
}

上記のコードについて、ご教授をお願いします。
gcc4.01で試したところコンパイルすることができました。
B::func()はprivateなのになぜコンパイルエラーにならないのでしょうか?




172 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:33:38 ]
A::funcがpublicだから

173 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:53:13 ]
>>171
class A の 仮想関数テーブルには
void func(){printf("A::func\n");}
の関数アドレスが配列0番に登録されている。
また、class B の 仮想関数テーブルには
void func(){printf("B::func\n");}
の関数アドレスが同じく配列0番に登録されている。

コンパイル時には静的な型であるAのfunc()が
調べられ、publicゆえにアクセスできることが
確認される。同時に仮想関数ゆえ、func()は
意味的には以下のようにコンパイルされる。

(b->vptr[0])(this);

vptrは仮想関数テーブルへのポインタで、今の
場合、派生クラスBの仮想関数テーブルのアドレス
が格納されている。仮想関数の呼び出しでは
コンパイル時はあくまで静的な型でアクセス可能性
が決定されるのがポイント。

と思う。

174 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:56:50 ]
>>171
こういうコードだと分かりやすいと思う。
B の実装なんて知ったこっちゃないのよ。

// a.h
#include <stdio.h>
class A{
public:
virtual void func(){printf("A::func\n");};
};

// b.h
#include "a.h"
A* get_b();

// test1.cpp
#include "a.h"

int main (void)
{
A* a = get_b();
a->func();
}

// b.cpp


175 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 01:57:24 ]
間違えた。こうだ。

// test1.cpp
#include "b.h"

int main (void)
{
A* a = get_b();
a->func();
}

176 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:04:01 ]
一般的なコンパイラの実装の仮想関数呼び出し
メカニズムで理解しておいたほうがいいんじゃね?
静的な型でアクセス可能性が決まるというのが
真実だと思うが。

177 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 02:15:42 ]
>>171-176 さん、ありがとうございました。
Final Draft IS に、そのまんまの答えがありました。
www.kuzbass.ru/docs/isocpp/access.html#class.access.virt

>静的な型でアクセス可能性が決まるというのが
>真実だと思うが。
そういうことになりますね。




178 名前:デフォルトの名無しさん [2008/01/19(土) 04:15:38 ]
typedef{
int x,y;
}data;
・・・
hogehoge(std::vector<data>dist);

こんな使い方はできるんでしょうか?
また、こんな使い方はトリッキーなんでしょうか?

179 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 04:22:37 ]
>>178
vectorにユーザー型を入れれるのか?
ということであれば、普通に使えます。
その書式はおかしいけどな

180 名前:デフォルトの名無しさん [2008/01/19(土) 04:33:56 ]
>>178
structかclassつけーや

181 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:07:21 ]
struct a { ... };
typedef t_a { ... } a;

C++コード上で下の利点ってどういったものがありますか?

182 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:12:45 ]
>>181
C でも使えるコードを書くのでなければ特に何の意味もない。

183 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 09:21:06 ]
d

184 名前:デフォルトの名無しさん [2008/01/19(土) 10:09:32 ]
勉強で簡易Stringクラスを作ろうとしてます。
ところがコンストラクタだけの段階で、実行時に
アクセス違反の例外で死にます。なんで?

#include <cstring>

class String {
  int len;
  char* s;

public:
  String (const char* ch_ini) {
    len = (int) strlen(ch_ini);
    strcpy(s,ch_ini);
  }
};

実行は
String k1("kkkkk1");
だけ(作っただけのつもり)。
これで死にまする。


185 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:12:37 ]
土曜の朝から釣りか
char *sの指してる領域はどこなんだよ?

186 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:13:18 ]
>>184
そのコードじゃstrcpyで死ぬわ。
char* sはどこを指してるのかね?

187 名前:デフォルトの名無しさん [2008/01/19(土) 10:17:02 ]
unsigned long型 = 256 * unsigned char型の計算をしています。
unsigned char型の変数に入る値はランダムで0〜150くらいの値が入るのですが、大体100以上の値が入ったときに4,294,967,295などの変な値になります。
なんで正しい値が入らないのでしょうか?



188 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:27:09 ]
わかりました。あなたは世界を革命するしかないでしょう。

189 名前:184 [2008/01/19(土) 10:28:34 ]
どこも指してない!?
どーすればよいのでしょうか。

190 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:29:29 ]
古っ

191 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:29:53 ]
>>189
その辺はポインタの基本中の基本なんだから、本でも読んで勉強してくれ。

192 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:39:07 ]
>>187
本当に unsigned char なのかね?
符号つきになってないか?

193 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:44:12 ]
>>189
正直自作クラスとか以前の問題。
文字列やポインタなどの基本から学び直してからのほうが良い。

194 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:46:26 ]
>>187
ソースを晒すんだ

195 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:53:04 ]
産業スパイか

196 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 10:57:22 ]
(int)4294967295u == -1

197 名前:187 [2008/01/19(土) 11:32:13 ]
処理の部分だけ抜き出して見ました。
traは0〜255が入ります。

unsigned char tra_undf = 0;
unsigned char tra_buff = 0;
static unsigned long ValuePuls = 0;
void main (void){
while(1){
if (tedgf_tracr == 1)
 {tra_buff = tra;
flag_edge = 1;
tedgf_tracr = 0;}
if(tundf_tracr == 1)
 {tra_undf++;
tundf_tracr = 0;}
if(flag_edge == 1)
 {Sort();
tra_undf = 0;
flag_edge = 0;}

}}

void Sort(void){ValuePulse = ((256 * tra_undf) + (255 - tra_buff));}

結果は
tra_undf=189のときにValuePulse=4294950301
tra_undf=234のときにValuePulse=4294961868

念のため+ (255 - tra_buff)の部分を消して見ましたが
tra_undf=223のときにValuePulse=4294958848
でした。



198 名前:デフォルトの名無しさん [2008/01/19(土) 12:01:07 ]
>>184
何の本読んで勉強してんだ
さらしちまえ

199 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 12:49:14 ]
>>197
コンパイラは?

200 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 12:56:10 ]
int と size_t はどういう違い、あるいは、どのように使い分ければよいのでしょうか?

201 名前:デフォルトの名無しさん [2008/01/19(土) 13:02:40 ]
>>197
ソースを晒すんだ

202 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 13:09:31 ]
>>197
>念のため+ (255 - tra_buff)の部分を消して見ましたが
>tra_undf=223のときにValuePulse=4294958848でした。

intが16bitの環境か?
256がintなのでtra_undfがintに格上げされ乗算され0xdf00になるが
これはintでは負数になる。
でunsignd longに代入されると符号拡張され0xffffdf00になる。
これは符号無しだと4294958848になって一致する。

203 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 13:52:20 ]
LSI_C 試食版の悪寒

204 名前:187 [2008/01/19(土) 13:57:43 ]
>>202
ありがとうございます。
NC30というコンパイラを使っているのですが、調べたらintは16bitと書いてありました。
回避方法は256の前に(unsigned)を付けるんで大丈夫ですか?

205 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:02:10 ]
256u でおk。

206 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:03:11 ]
(unsigned long) にしないと一緒じゃね?

207 名前:206 mailto:sage [2008/01/19(土) 14:03:49 ]
そんなことないか、(unsigned)でもいいかも



208 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:06:30 ]
256 * unsigned char 値 なら一応 16 ビットに収まるしな。
別に 256lu にしてもいいとは思うが。

209 名前:187 [2008/01/19(土) 14:15:25 ]
助かりました!
本当にありがとうございます。

210 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:20:37 ]
まだはじめたばかりなんですが、short int とかlong、double longなどの意味が分かりません。

無視して進んでも大丈夫ですか?
どんな場合に使うのかなどが把握できていない状況です。

211 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:26:14 ]
必要になれば使うし、必要にならなければ使わない。
それだけの話。

212 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:26:16 ]
ビールをグラスに入れるか、ジョッキに入れるか、ピッチャーに入れるかの違いだ。

213 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:31:33 ]
SFCで遊ぶか、PSで遊ぶか、PS2で遊ぶかの違いくらいか?

214 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:35:10 ]
現在「猫でもわかるC言語」で勉強しています。
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
double pai=3.14159265358979;
int mon=2;
float flt=1.2f;

printf("%5.2hf\n",flt); ←ここだけtypeのプレフィックスの「h」を使っているのか分からないです。
printf("%-5.2f\n",flt);
printf("%05.2f\n",flt);
printf("%+08.2f\n",flt);
printf("%-08.2f\n",flt);

printf("%d\n",mon=3);
printf("%e\n",pai);
printf("%08.2f\n",pai);
printf("%05d\n",mon);

printf("円周率は%fです\n",pai);
printf("円周率は%1fです\n",pai);
printf("もう少し詳しい値は%10.8lfです\n",pai);
printf("もう少し詳しい値は%15.13lfです\n",pai);←ここの2行も「l」が使われていますが何のために使用しているのか分かりません。
printf("もう少し詳しい値は%20.18fです\n",pai)
system("PAUSE");
return 0;
}

見難いと思いますが、現在このような感じで悩んでます。
質問の内容がおかしかったらすみません。

215 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:44:13 ]
hとl(長さ修飾子)そのものがわからないのか
それともどうしてそのタイミングで修飾子を使っているのがわからないのか
前者ならprintfでぐぐると一番上に出てくるけど

216 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:45:01 ]
>>214
www.linux.or.jp/JM/html/LDP_man-pages/man3/snprintf.3.html

長さ修飾子
h 整数変換に対応する引き数が short int か unsigned short int で、
n 変換に対応する引き数が short int へのポインタであることを示す。

そこで h はおかしくね?

217 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:47:08 ]
lf : C89 の場合、規格違反。ただし、f と同じになるコンパイラも多い。
  double を渡す時につい l を付けてしまう人がいるが、
  l が必要になるのは scanf の方だけ。
  printf の方では l は必要ない。
  ただ、l をつける間違いを犯す人が多く、さらにそれをサポートしているコンパイラも多いため、
  C99 になって l を付けてもいいことになった。
  lf は f と同じ。



218 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:56:32 ]
>>217
hf は?

だいたい長さ修飾子に対して浮動少数点数って関係あるの?
上のリンク読む限り関係ないと思えるんだが。

219 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 14:57:51 ]
hf はおかしいっつーのは既に >>216 が書いてあるから

220 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:00:18 ]
>>215
>>216
>>217
せっかくお答え頂いてるのにいまいち理解できないです・・・。すいません。

この「h」も「l」も書かなくても結果には関係しないのですが、
ここでは「h」も「l」も書く意味はないということですか?

221 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:00:30 ]
>>217
l (エル)
各変換に対応する引き数が、整数変換では long intか unsigned long int、 n
変換では long long int へのポインタ、 c 変換では wint_t、 s 変換では
wchar_t へのポインタであることを示す。

L
a, A, e, E, f, F, g, G 変換に対応する引き数が long double であることを
示す。 (C99 では %LF を使うことを認めているが、SUSv2 では認められていな
い。)

lfじゃなくてLfのことじゃねえの?上の説明では明らかにlとLは違うし
lの意味を考えるとlfはおかしくね?

222 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:05:42 ]
>>220
おれは今の場合だと、lもhも指定する意味が無いと思う。
(コンパイルエラーにはされないみたいだが。)
ありうるとすれば、Lfだが、long doubleの
引数を渡してるわけではない(floatの引数になってるよね)
のでLfも無意味だと思う。

223 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:07:23 ]
>>221
seclan.dll.jp/c99d/c99d08.htm#dt19991115

224 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:18:30 ]
>>222
この場合は特に意味は無いんですね。

引数がいまいち分かっていないので、皆さんの説明を上手く理解することができませんでした。
引数はもっと本の先で解説されているようなので、そこまで進んでまた戻ってみます。
アドバイスを上手く活用できなくてすいませんでした。ありがとうございました。

225 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:19:38 ]
>>223
ほほー thx
以下でいいの?
%f doubleを出力
%lf doubleを出力(実質的には今までの%fと同じ)
%Lf long doubleを出力

要は表記を許しただけということか。

226 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:20:22 ]
>>224
おい、>>223を見といたほうがいい

227 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:27:44 ]
>>225
Yes.

>>226
まあもう少し後でいいんじゃね。
というか、可変個引数の引数の規則とか
先まで進まないとよく分からんと思うし。



228 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:39:11 ]
C89は実情に見合ってないしC99は明々後日の方向向きすぎ

229 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 15:56:52 ]
試したみたのはgcc,bcc32, vsのやつ、です
float.hのマクロ定数を表示させる文
1.
printf("FLT_MIN = %e\n", FLT_MIN );
printf("FLT_MAX = %e\n", FLT_MAX );
2.
printf("FLT_MIN = %f\n", FLT_MIN );
printf("FLT_MAX = %f\n", FLT_MAX );

としたところFLT_MAXはどちらもまともに表示されるのですが
FLT_MINのほうは2.の方が0.000000という表示になってしまいます
これはなにがまずいのでしょうか?
どなたかお願いします

230 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:04:55 ]
%.50f くらいやっとけ

231 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 16:10:07 ]
>>230
桁が足りなくて丸められてたのですね
ありがとございました

232 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 17:56:54 ]
丸められていたというか表示されていなかっただけかと

233 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 18:06:26 ]
>表示されていなかっただけかと
処理系依存かどうか知らないけど、printfって小数点以下表示桁で四捨五入しないっけ?

234 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 18:14:01 ]
>>233
ですよねぇ
>>232
言われて
気になって確かめてみました

235 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:08:00 ]
>>233
%fって%.6fと同じだからこれで合ってるんじゃないの?

236 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:17:53 ]
丸めるか切り捨てるかの話だろ

237 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 19:23:27 ]
>>236
切り捨てって丸めの一種なんだけどね。



238 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 21:37:55 ]
>>235
あぁいや、大したこっちゃないんだけど、四捨五入した結果だったら、
表示されてないだけというより丸められてるって方があってるかな、と思っただけ。
実際問題じゃどっちでも良いかな

239 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:07:23 ]
Visual Studio Std 2005 で Win32API を勉強中です。

ウィンドウを表示して、その中にMoveTo や LineTo で線を書くことはできました。
そこで、その書いた線上にマウスを持って行くと
マウスポインタが変更できるようにしたいのですが、
どんな感じに作っていけばいいのでしょうか?

マウスの位置を調べる関数があるのですが、
マウスが動くたびにその関数を呼び出して、
その値を、先ほど書いた2点間の線上の一次方程式に入れて判断していくとか、
そんな感じになるのでしょうか?
それとも、もっと簡単な方法とかあるのでしょうか。

教えてください。


240 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:14:37 ]
>>239
Win32APIスレの方がいい気もするが。

WM_MOUSEMOVEのlParamを使うなりしてカーソル位置を取得。
特定の方程式があるなら、それに当てはめればいいし、
GetPixel()を使って色で判別とかも出来る。


241 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:43:31 ]
>>240

色で判別というのもありますね。
いずれにしても、簡単にはいかないみたいですね。

Win32API スレにも質問してみます。

ありがとうございました。

242 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 22:48:03 ]
後のマルチである。

243 名前:デフォルトの名無しさん [2008/01/19(土) 23:43:44 ]
凄く簡単な質問で、自分で確かめろって感じなんですが、
今実行できる環境がないので、教えてもらえませんか。

<Head.h>で以下のように変数を宣言して、
int var;

<Main.cpp>にインクルードしたら、
#include "Head.h"

何もしないでも<Main.cpp>でvarは使えますか?
それとも<Main.cpp>で"extern int var;"としないといけないんですか?

244 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 23:47:58 ]
じゃ俺も試さないでレスw

多分何もしないで使えるはず。

245 名前:243 mailto:sage [2008/01/19(土) 23:52:22 ]
>>244
ありがとうございます。
やっぱ何か心許ないので、後で実験してみます。
すいません。

246 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 00:01:11 ]
>>229
%fなんか使わずに%gを使っとけ。

247 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 00:03:52 ]
%e との比較をしたい以上、%f の方が適切じゃね?



248 名前:243 [2008/01/20(日) 00:09:50 ]
すいません、なんか混乱してきたのでもう一度質問です。
------------
<Head.h>
extern int var;

<Head.cpp>
int var;
------------
<A.h>
#include "Head.h"

<A.cpp>
#include "A.h"
------------
<B.h>
#include "Head.h"

<B.cpp>
#include "B.h"
------------
これで<A.cpp><B.cpp>共に同じvarを使えるでしょうか?

249 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 00:18:25 ]
>>248
リンケージと宣言、定義について勉強しろ

250 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 09:29:33 ]
>>248
使える。

>>249
もしかしたらそれ以前に、#includeの意味がわかっていない気がしないでもない。

251 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 11:03:58 ]
私にも力が出せるかな
本気でがんばるから見ててね
キミらしく夢を語る瞳 宝石だってかなわない

(いちばん) 好きなことで (進める) 道を探そうよ
「大人になることはさみしいことさ」なんて逃げないよ

Overwrite 輝きながら あしたを塗り変えるため
最新Dream ステキな毎日を重ねたいだけ
一緒に行こう!

とまらない想いがあるってのに
誰にも言えずに温めてた
これからは話してみたいんだ
キミに会ってわかったよ

(ときどき) 確かめ合う
(希望が) 色あせぬように
「喜びをふたりで何倍にもしよう」いまを楽しくね

Overdive 広がる世界 あしたは無限に続く
最高Trance トキメキながらまた あふれるリズム
何でもできる!?

Overdive 広がる世界 あしたは無限に続く
最高Trance トキメキながらまた あふれるリズム
何でもできる!?
Overwrite 輝きながら あしたを塗り変えるため
最新Dream ステキな毎日を重ねたいだけ
キミの笑顔と 一緒に行こう!

252 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 17:58:42 ]
>>249
>>250
ありがとうございます。やってみたらできました。

253 名前:デフォルトの名無しさん [2008/01/20(日) 18:04:28 ]
メモリ解放というのをいつやればいいのか分からないんですが、
例えば下の場合、methodを抜けたら解放しなくても、
bufは自動でなくなるんでしょうか?

void method(){
char buf[100];
int i = 123456;
sprintf(buf,"%d",i);
}

254 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:06:07 ]
無くなる。
解放する必要があるのは malloc やら new やらしたやつ

255 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:14:19 ]
ありがとうございます。

256 名前:デフォルトの名無しさん [2008/01/20(日) 18:42:36 ]
サーセン

「+=」
とか
「-=」
ってどんな時使うんですか?(>_<)

257 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:44:09 ]
>>256
A = A + 2
でAを2回書くのがめんどくさくなったとき。



258 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:44:09 ]
a = a+10;
a += 10;

259 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 18:49:12 ]
普通は a = a + 10; なんて書かない。
BASIC や FORTRAN あがりの人が書く程度。






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

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

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