■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
C++相談室 part13
251
名前:
デフォルトの名無しさん
:02/12/04 21:44
>>249
誤植。
252
名前:
249
:02/12/04 21:46
>>250
Visual C++(2) はじめてのオブジェクト指向プログラミング
>>251
やっぱそうですか!ありがとう!
253
名前:
デフォルトの名無しさん
:02/12/04 21:55
http://www.shoeisha.com/book/errata/er_detail.asp?bid=979&printno=1&pageno=all
1刷/ P.156
【MyClassの定義】 誤 ア( )void SetDat;は、private:なメンバ関数である。
正 ア( )void SetDat;は、public:なメンバ関数である。
254
名前:
デフォルトの名無しさん
:02/12/04 21:59
>>253
こんなにあったですか・・・
255
名前:
デフォルトの名無しさん
:02/12/04 22:04
どうしてこんな誤植が発生するんだ・・・
256
名前:
デフォルトの名無しさん
:02/12/04 22:49
ヘッダに長大なインラインメンバ関数書いたとき
インライン展開されるかどうかの境目ってどこらへん?
257
名前:
デフォルトの名無しさん
:02/12/04 22:51
コンパイラの機嫌によるんじゃないか?
ネスト制限もあるだろうし
258
名前:
デフォルトの名無しさん
:02/12/05 00:14
質問よろしいでしょうか?
VC6を使っている者ですが、
newで確保した領域に対して_msize()で
サイズを得るコードは問題が発生する可能性がありますか?
259
名前:
デフォルトの名無しさん
:02/12/05 00:17
サイズを得るだけなら、VC6専用になるという問題以外は
思いつかないなあ。
つかそのサイズ使って何やるの?
260
名前:
デフォルトの名無しさん
:02/12/05 00:26
状態遷移図を直接クラス化したようなライブラリってないですか?
261
名前:
デフォルトの名無しさん
:02/12/05 00:48
>260
えぴすてーめーが本で紹介してたような気がする。
262
名前:
デフォルトの名無しさん
:02/12/05 00:57
>>259
可変長の要素をもつ動的配列をダブルポインタで管理するので
それを元に、newで作った動的配列の要素数を知ることができれば
管理が楽になると思ったのですが…
それともSTLのlist<>などを使うべきなのでしょうか?
現状ではこうしています
inline int GetArrayLength(void* p, int typesize) {
return _msize(p) / typesize;
}
263
名前:
デフォルトの名無しさん
:02/12/05 01:01
std::vectorがいいと思う
264
名前:
デフォルトの名無しさん
:02/12/05 01:01
>>258
newがmalloc()したアドレスの先頭を返すなんて保証がない。
265
名前:
258
:02/12/05 01:05
>>259
>>263
>>264
STLのvector<>など管理が楽なものを使おうと思います。
回答していた頂いた方、ありがとうございました。
266
名前:
デフォルトの名無しさん
:02/12/05 01:08
この話どー思います?
http://pc3.2ch.net/test/read.cgi/tech/1038405432/616-
267
名前:
デフォルトの名無しさん
:02/12/05 01:26
げっ通る。気持ち悪い。
gcc3.2(MinGW)です。
template <class $>
class A {
public:
$ i;
};
int main()
{
A<int> $;
}
268
名前:
デフォルトの名無しさん
:02/12/05 01:28
@(アットマーク)も通ったっけ?
269
名前:
デフォルトの名無しさん
:02/12/05 01:30
bcc5.51は通んないね。
エラー E2206 doltest.cpp 1: 不正な文字 '$' (0x24)
エラー E2206 doltest.cpp 4: 不正な文字 '$' (0x24)
エラー E2303 doltest.cpp 4: 型名が必要
エラー E2206 doltest.cpp 9: 不正な文字 '$' (0x24)(関数 main() )
エラー E2108 doltest.cpp 9: typedef 'A<int>' の使い方が間違っている(関数 main()
270
名前:
デフォルトの名無しさん
:02/12/05 01:32
f[no-]dollers-in-identifier
271
名前:
デフォルトの名無しさん
:02/12/05 01:37
>>268
さすがに @ はだめなようだ。
parse error before `@' token
272
名前:
デフォルトの名無しさん
:02/12/05 01:54
class Aをclass Bとclass Cへ継承させたいんですけど
こんなエラーが出ます
error C2011: 'super_class' : 'class' で示される型としてすでに定義されています。
うーーん助けてください・・・・・・
273
名前:
デフォルトの名無しさん
:02/12/05 02:13
>>272
そのエラー出したソース書かんかい。
274
名前:
デフォルトの名無しさん
:02/12/05 02:46
http://www.tietew.jp/cppll/archive/5647
↑この話、おかしいですよね?
ソート済みベクタより赤黒木のほうが速い場合なんて、あり得ないはずなんだけど。
実験用ソースの実装が腐ってるだけにみえるのに、誰も突っ込まないまま話がおわってるっぽい。
275
名前:
デフォルトの名無しさん
:02/12/05 03:01
276
名前:
272
:02/12/05 03:01
class Aとclass Bとclass Cはそれぞれ異なる3個のヘッダファイルに存在します。
class AのファイルをclassBのあるファイルとclassCのあるファイルヘインクルードし、
classB:public classA
classC:public classB
とすると先ほどのエラーが出ました。
今原因がわかったのですが、これは2重定義なのでしょうか?
(classAが、classBとclassCの2つのファイルで定義されたことになる?)
どうしてもこのclassAを他の複数のファイルにあるクラスへ継承させたいのですが
かのうでしょうか?
277
名前:
272
:02/12/05 03:02
↑訂正
classB:public classA
classC:public classA
です
278
名前:
デフォルトの名無しさん
:02/12/05 03:05
classAのヘッダをガードしてないに一票。
#ifndef classa_h
#define classa_h
#endif
で囲ってるか?
279
名前:
デフォルトの名無しさん
:02/12/05 03:05
>>276
ヘッダーで
#ifndef ... #define ... #endif
(通称インクルードガード?)
してますか?
280
名前:
272
:02/12/05 03:16
すみません、解決しそうです。
ご迷惑かけました
281
名前:
272
:02/12/05 03:58
>>278-279
おっしゃるとおりやってみたところ、解決しました!
ありがとう御座いました!!
282
名前:
デフォルトの名無しさん
:02/12/05 04:21
>>274
有り得ないなんて決め付けずに実験してみなさい。
cppll でその話題が出た時
ソート済み vector に対して
std::binary_search
std::lower_bound
set,multiset に対して
メンバ find lower_bound count
のベンチマークを要素数・要素の型・最適化の有無等の条件を変えて実験してみた。
STL の実装は は dinkumware, STLport の2つ。
コンパイラはVC7。
その結果
1.ソート済みベクタが速度・メモリ効率の両面で連装コンテナを上回る場面は
それほど多くはない。
2.ソート済みベクタが速度・メモリ効率の両面で連装コンテナを上回る場合でも、
その差は大きいとは言えない。
3.検索速度のみに限ればソート済みベクタが勝る場合が多いが
その差は大きいとは言えない。
となった。
結論:
More Effective STL 第23項
連装コンテナをソート済みベクタに置き換える事を検討しよう
これは大抵の場合ほとんどメリットが無いと言える。
検索速度・メモリ効率に不満を感じた場合の解決にはならない。
その場合はその他のデータ構造を考えるべきだろう。
283
名前:
274
:02/12/05 11:08
> 有り得ないなんて決め付けずに実験してみなさい。
実験したもん。検索時間に関してだけど。(メモリ効率の測定方法がわからんない)
結果は、それぞれソート済みベクタが、
1.連想コンテナを上回る場面がある。
2.連想コンテナを下回る場合でも、その差は大きいとは言えない。
んで、1については、要素数が多い場合が該当しやすいような気がする。
2については、「比較」の処理に比べて「次の比較対象へ移動」の処理が
無視できない場合に該当しやすいような気がする。
> ソート済み vector に対して
> set,multiset に対して
そのテスト、vectorの内容をset,multisetと等価にするために、
vectorに対してどんな操作がしてありますか?
わざとそこらへんをしくじった状態でテストしたら、
http://www.tietew.jp/cppll/archive/5687
↑と同様な結果が得られたのですが。
ちなみにテスト環境はcygwin gcc-3.2。
ってなわけで結論:
More Effective STL 第23項
「連想コンテナをソート済みベクタに置き換える事を検討しよう」
検索速度・メモリ効率に不満を感じた場合には、検討の余地が十分にある。
284
名前:
:02/12/05 11:51
C++のソースを解析して クラス毎のメンバ関数名/メンバ変数名を抜き出す
手っ取り早い方法を教えてください。
285
名前:
デフォルトの名無しさん
:02/12/05 11:54
VC++
286
名前:
284
:02/12/05 12:17
いや 抜き出したクラスのメタ情報を元に処理をおこなうプログラム
を書きたいんですが
287
名前:
デフォルトの名無しさん
:02/12/05 12:17
perl
288
名前:
デフォルトの名無しさん
:02/12/05 12:22
>>284
パーサ書くなりすればいいじゃん
たいした手間じゃない
289
名前:
デフォルトの名無しさん
:02/12/05 12:32
map::operator[]でkeyからmapdataを探して見つからなかったとき、
自動的にデフォルトコンストラクタでmapdataが作成されて登録されますが、
mapdataがポインタの場合、mapdata==0は保障されるのでしょうか?
それとも素直にfindを使うべき?
ちなみにBCBで試してみたらちゃんと0になってましたが…。
そもそもポインタを入れるな、って解答はナシでお願いします。
290
名前:
デフォルトの名無しさん
:02/12/05 12:37
>>289
OK
291
名前:
デフォルトの名無しさん
:02/12/05 13:58
「Koenig参照」という言葉を聞いたのですが、具体的な例が思い浮かびません。
C++の場合どのような時にこの規則が適用されるのですか?
292
名前:
289
:02/12/05 15:55
>>290
thanks!
293
名前:
デフォルトの名無しさん
:02/12/05 15:56
>>291
http://member.nifty.ne.jp/~masumoto/cpp/topic/#SEC7
294
名前:
おっぱいあげ
:02/12/05 16:24
おっぱいあげ
295
名前:
makoto♂
:02/12/05 16:26
質問
296
名前:
デフォルトの名無しさん
:02/12/05 17:13
>>293
ありがとうございます。namespaceに関連する機能のようですね。
std::プリフィックスが場合によっては省略できそうですね。
297
名前:
デフォルトの名無しさん
:02/12/05 19:26
iostreamでファイル操作しているのですが
ファイルサイズはどうやって調べればよいでしょうか?
298
名前:
デフォルトの名無しさん
:02/12/05 19:34
>>297
getline(strm, str, '0')でstd::stringに読み込んでからsize()またはlength()とか。
299
名前:
デフォルトの名無しさん
:02/12/05 19:35
http://lists.boost.org/MailArchives/boost/msg35658.php
これつかってみたやつおる?
300
名前:
デフォルトの名無しさん
:02/12/05 19:37
GetFileSize
301
名前:
デフォルトの名無しさん
:02/12/05 19:37
>288
C++ フルスペックのパーサー書くのはめんどいぞ。template とか名前空間とか
絡んでくると、そりゃーいろいろと。
302
名前:
デフォルトの名無しさん
:02/12/05 19:43
>>301
放置しとけ。
303
名前:
デフォルトの名無しさん
:02/12/05 19:46
>>298
やはりそういう方法しかないんですか
>>300
できるだけWin32APIは使いたくないんですが
304
名前:
デフォルトの名無しさん
:02/12/05 19:48
>>303
fstat
seek&ftell
305
名前:
デフォルトの名無しさん
:02/12/05 19:57
std::ifstream ifs("manco", std::ios_base::binary);
ifs.get();
std::streamsize size = ifs.rdbuf()->in_avail() + ifs.gcount();
306
名前:
303
:02/12/05 20:04
>>304
>>305
ありがとう御座います、ヘルプを見ながら理解しようと思います。
307
名前:
:02/12/05 20:29
>>288
たいした手間じゃないなら書いてアップしてあげたら?
無理しなくてもいいけど。
308
名前:
デフォルトの名無しさん
:02/12/05 20:56
>>296
つーか、Koenig参照がなかったら、
namespace NS {
class A {};
void operator<< (std::ostream& os, const A& a) {}
}
int main()
{
NS::A a;
std::cout << a; // ここの << は、NS::operator<< を呼ぶ
}
みたいなことはできんわな。
309
名前:
デフォルトの名無しさん
:02/12/05 21:10
>>308
> namespace NS {
> class A {};
friend
> void operator<< (std::ostream& os, const A& a) {}
> }
か?
310
名前:
デフォルトの名無しさん
:02/12/05 21:54
>>283
実験の結果
「なんだ、ほとんど差が無いじゃないか」というのが私の結論。
「いや、この差は大きいよ」と思うんならそれは貴方の自由。
要素数が少ない場合・要素の型が単純な場合は有意な差が無い、
場合によっては連装コンテナの方が速い場合もある。
要素数が多くその数が予測できない場合
vector は大抵の実装ではメモリを大量に消費する。
メモリ容量・要素数にもよるが、これは速度の大幅な低下をもたらす。
Effectiv STL 第23項 にもある通り、連装コンテナをソート済みベクタに
置き換えるにはいくつかの条件を満たさなければならない。
また、その条件を満たした場合でも、様々な制限が発生する。
その後の保守にも悪影響を与える可能性が大きい。
つまりソート済みベクタは守備範囲が極めて狭いと言える。
これらを考慮すると、わざわざ連装コンテナをソート済みベクタに置き換える
メリットは見出せない。
検索速度を重視する場合、ソート済みベクタを検討している暇があるのならば
まともなハッシュテーブルを使うべきだろう。
311
名前:
デフォルトの名無しさん
:02/12/05 22:52
>>309
あー、マジメに書くと、
namespace NS {
class A {
friend std::ostream& operator<<(std::ostream& os, const A& a);
};
std::ostream& operator<<(std::ostream& os, const A& a) {
return os;
}
}
ですな。ま、Koenig参照の本質には関係ないということで、許してたもれ。
312
名前:
デフォルトの名無しさん
:02/12/05 22:53
Koening Lookupをkoening参照と訳すのは
激しく誤解を招く気がする
313
名前:
デフォルトの名無しさん
:02/12/05 22:54
検索ルール?
314
名前:
デフォルトの名無しさん
:02/12/05 23:49
>310
なんで「あなたの自由」と言いつつ、
> これらを考慮すると、わざわざ連装コンテナをソート済みベクタに置き換える
> メリットは見出せない。
と断言したがるかね。両者とも、もう判断するに十分な情報は出してるんだから、
そのへんで止めとけ。
315
名前:
283
:02/12/06 02:30
連想コンテナをソート済みベクタに置き換える見返りは、
メモリ効率に関する効果がメインなのだと思いました。
検索速度については、劇的な変化は期待できません。
メモリ効率の向上は劇的なものが期待できます。
たとえば、要素数の上限が分かっている場合に、
動的メモリの使用を回避できる可能性もあります。
>>310
×連装
○連想
この辺で止めときます。
316
名前:
デフォルトの名無しさん
:02/12/06 05:05
C++をはじめようとおもうのですが、
フリーでC++ができるようになるソフトって何ですか?
今のところボーランドのフリーのコンパイラしかないです。
使い方もわからないです
学校の授業でC++Builderを使っていて自宅でもやりたいのですが。
317
名前:
デフォルトの名無しさん
:02/12/06 05:08
>>316
まずはおれとエチしないか?
318
名前:
デフォルトの名無しさん
:02/12/06 05:32
C++Builder風で無料なものは無い
319
名前:
デフォルトの名無しさん
:02/12/06 06:02
ぼーらんどのBCCは
まず、ファイル→新規作成
で出てくる窓でプロジェクトのタブをクリックして
ディレクトリ名は適当なフォルダ(自分のCの作業場所)
を指定して、プロジェクト名を決める。
このプロジェクト名で指定したフォルダのしたにその名前の
フォルダができる、そして、C/C++ソースタブを開いて
CもしくはC++のソースファイルを適当にhello.cppとかすると
ソースの編集画面がぱっと開き、そこにソースを書き
できたら
プロジェクト→メイクで実行ファイルがプロジェクト名の
下にできるdebugフォルダにできてる。
ライブラリのパス設定はbccの使い方説明してるサイトの
通りにしとく。
320
名前:
デフォルトの名無しさん
:02/12/06 06:05
ttp://members.tripod.co.jp/hi_tag/cpp/freetool00.html
でも、見て
逆ポーランド法の演習でもやっとけ
321
名前:
デフォルトの名無しさん
:02/12/06 10:05
>>316
>使い方もわからないです
おいおいC:\borland\bcc55\readme.txtくらい読めよ
322
名前:
デフォルトの名無しさん
:02/12/06 10:45
>>316
つーかフリーに頼らずに買えよ。
たった1〜2万の自己投資をケチるなよ。
323
名前:
デフォルトの名無しさん
:02/12/06 11:57
borlandなら買え。
マイクロソフトなら落せ
324
名前:
デフォルトの名無しさん
:02/12/06 13:28
(´-`).。oO( 今にも死滅しそうだってのに悠長だね…)
325
名前:
デフォルトの名無しさん
:02/12/06 13:29
(´-`).。oO( すまん、誤爆だ…)
326
名前:
デフォルトの名無しさん
:02/12/06 13:40
g++使え
327
名前:
デフォルトの名無しさん
:02/12/06 13:47
Stroustrupマンセー!
凄いですね。
328
名前:
デフォルトの名無しさん
:02/12/06 13:59
センセイ質問!
CString hoge(int a)
{
CString s;
s.Format("%d",a)
return s;
}
hoge()の呼び出し元で戻り値は破壊されちゃってますか?
329
名前:
デフォルトの名無しさん
:02/12/06 14:02
C++言語自体の学習だけが目的なら、VC++もBCBもいらないだろう。
Borlad-C++5.5で十分過ぎる。gcc-3.2でもいい。
しかし、そこは人情というもの、C++を覚えたらすぐにWindowsプログラム
を書いて画面に表示してみたくなるに違いない。やっぱりコンソール画面
だけでは飽きる。
で、VC++でMFCか、BCBでVCLを弄びたくなるはずだ。飽きが来てやめて
しまわないように、製品版の言語を買っておくとよい。また、金を払ったと
いう自覚があれば、触らずにお蔵入りなんて勿体ない事もせずに済む
だろう。
330
名前:
デフォルトの名無しさん
:02/12/06 14:04
>>328
CString& hoge() なら破壊されるが、実体を返しているので、return文を
実行した時にコピーコンストラクタが呼び出されて、コピーを返すので
問題ない。
331
名前:
デフォルトの名無しさん
:02/12/06 14:19
質問させてください。
ポインタのポインタの所で
(void *)*a
というのが出てくるのですが
(void *)
の意味が分りません。
何でvoidをつけるんですか?
教えてください。
332
名前:
デフォルトの名無しさん
:02/12/06 14:20
>>331
気にすんな。
333
名前:
デフォルトの名無しさん
:02/12/06 14:21
>>330
CString&返しなら「戻り値」は隠しポインタであって
hoge()の呼び出し元では破壊されてないだろ
>>328
はs自体が戻り値であると勘違いしているように見受けられるが
お主もそのケあるんじゃないか?
334
名前:
デフォルトの名無しさん
:02/12/06 14:23
>>331
正体不明のオブジェクトへのポインタ
335
名前:
デフォルトの名無しさん
:02/12/06 14:24
>>333
(´,_ゝ`)プ
336
名前:
デフォルトの名無しさん
:02/12/06 14:32
(void *) なんて必要なのか?
337
名前:
デフォルトの名無しさん
:02/12/06 14:34
そもそも*なんて必要なのか? &でいいじゃん。
338
名前:
デフォルトの名無しさん
:02/12/06 14:35
>>335
333 のどこがおかしいんだ?
339
名前:
デフォルトの名無しさん
:02/12/06 14:36
>>337
ポインタ無しで多態をどう表現する?
340
名前:
デフォルトの名無しさん
:02/12/06 14:38
>>339
C++の限界だな。
341
名前:
デフォルトの名無しさん
:02/12/06 14:40
なんだかCすら理解していないくせにC++を語ろうとする香具師が紛れ込んでるな。
342
名前:
デフォルトの名無しさん
:02/12/06 14:46
気に食わなきゃchar**でもなんでも使え。
343
名前:
331
:02/12/06 14:49
レスありがとうございます。
、、、皆さんの会話がまったく理解できません
出直してきます><
344
名前:
デフォルトの名無しさん
:02/12/06 14:51
>>339
,
>>340
struct giko { virtual void wara() = 0; };
void wara(giko& r) { r.wara(); }
void wara(giko* p) { p->wara(); }
限界とは?
345
名前:
デフォルトの名無しさん
:02/12/06 14:53
>>338
やってみりゃわかるよ。
346
名前:
デフォルトの名無しさん
:02/12/06 14:55
>>333
そうか?「ローカル変数への参照をreturnしようとしている」というエラーが
出てコンパイルできないぞ。
347
名前:
333
:02/12/06 14:58
>>346
漏れが言いたいことそのままだが?
348
名前:
デフォルトの名無しさん
:02/12/06 14:58
>>343
コールバックとかスレッドとか使えばいやでも
ありがたく感じるよ。
349
名前:
デフォルトの名無しさん
:02/12/06 15:04
>>346
あんた、関数の型を CString じゃなくて CString& にしてないか?
350
名前:
338=349
:02/12/06 15:05
ごめん、何か勘違いしていたよ
351
名前:
デフォルトの名無しさん
:02/12/06 15:17
333は頭がおかしい
352
名前:
デフォルトの名無しさん
:02/12/06 15:17
>>347
>>349
スマソ。
> CString&返しなら「戻り値」は隠しポインタであって
> hoge()の呼び出し元では破壊されてないだろ
の意味を勘違いして、CString&返しなら破壊されないと読んでいた。
353
名前:
デフォルトの名無しさん
:02/12/06 15:18
ネタ萎え。
ネタは単発糞スレでどうぞ。
354
名前:
333
:02/12/06 15:18
>>351
遊んで欲しけりゃオマエも何か言え
355
名前:
デフォルトの名無しさん
:02/12/06 15:28
>>333
は参照と値の区別が付いてない上に
「ポインタの値」の類推で勝手に「参照の値」なるものを捏造している。
多くの実装で参照がメモリ間接を利用していようが、それは
C++において参照がポインタと同等であることを意味するわけではない
第一それ以前にメモリ間接=ポインタということが言える訳でもない
356
名前:
333
:02/12/06 15:34
>>355
では訊こう
貴殿の考える参照と値の区別とは?
357
名前:
デフォルトの名無しさん
:02/12/06 15:42
328 のようなコードでは、関数の型にかかわわりなく s は破棄される。
だから関数の型が CString& では正常に返せない。
関数の型が CString の場合は、return の時点での s のコピーが渡る。
コンパイラによっては s の実体をとっておき、それをそのまま返すように最適化
するかも知れないが、漏れは見た事がない。
358
名前:
デフォルトの名無しさん
:02/12/06 15:44
>>356
本気で聞いてるのか…?
359
名前:
デフォルトの名無しさん
:02/12/06 15:47
>>356
その前に、あんたが参照と値をどう捕らえているのか説明してくれ。
360
名前:
328
:02/12/06 15:50
みなさんレスさんくす。
よーするにs自体は破壊されるけどsの内容は呼び出し元でも保証される…って認識で合ってますか?
361
名前:
デフォルトの名無しさん
:02/12/06 15:52
(´-`).。oO(…貴殿?)
362
名前:
デフォルトの名無しさん
:02/12/06 15:52
そうだね
363
名前:
デフォルトの名無しさん
:02/12/06 15:53
>>361
(´-`).。oO(イタいよね、その言い方。
364
名前:
デフォルトの名無しさん
:02/12/06 15:54
>>328
関数がリターンするところをステップでトレースすると理解が深まるよ。
365
名前:
宿題教えて!
:02/12/06 15:56
#include<iostream.h>
/*行列を表すクラス*/
template <class T=int,int a=3> class Matrix {
T x[a];
public :
Matrix();
T &set(int row,int col){return x[(row-1)+(col-1)*a];}
//+演算子
friend Matrix<T,a> operator+(Matrix<T,a> &n,Matrix<T,a> &m){
int i;
Matrix<T,a> ret;
for(i=0; i<a*a; i++){ret.x[i] = n.x[i]+m.x[i];}
return ret;
}
void show();
};
//コンストラクタ
template<class T,int a> Matrix<T,a>::Matrix(){
int i;
for(i=0; i<a*a; i++) x[i] = 0;}
//表示関数
template<class T,int a>void Matrix<T,a>::show(){
int i;
for(i=0; i<a*a; i++){cout << x[i] << " " ;if(i%a == 2)cout << "\n";}
}
366
名前:
デフォルトの名無しさん
:02/12/06 15:56
つーか、CString の代わりに、コンストラクタとデストラクタで this のアドレスを
cout に投げる class を書いて実験すればいいのに。
367
名前:
宿題教えて!続
:02/12/06 15:56
int main(){
int length=3;
Matrix<int ,3> a,b,c;//3行3列の行列
int bNumber[9] = {6,5,4,3,2,1,9,8,7};
int i;
for(i=0; i<length*length; i++){a.set(i%length+1,i/length+1) = (i+1)*10;//i*10をセットする}
for(i=0; i<length*length; i++){b.set(i%length+1,i/length+1) = bNumber[i];//あらかじめ用意されたbNumberを入れる}
c.show();
c = a + b;//ここが実行されない
c.show();
return 0;
}
/*C++ですが、行列のクラスをテンプレートで実現して、
+ - * の演算子とinverse関数を実現せよ!とか云って来るんですよ
だから・・・お願いします。教えてください。
+のとこだけでよいので・・・*/
368
名前:
デフォルトの名無しさん
:02/12/06 15:57
> 365 :宿題教えて! :02/12/06 15:56
叩かれまくりたいスレ違い君の登場
369
名前:
333
:02/12/06 15:58
>>357
まあそうなんだが
話というか因果の順序に違和感を覚えるぞ
関数の型がCStringの場合はreturn式が何であるかにかかわりなくCString型の戻り値が生成され、戻り値を初期化するコンストラクタに渡されるのがreturn式の評価結果である
関数の型がCString&の場合はreturn式が何であるかにかかわりなくCString&型の戻り値が生成され、戻り値の参照先として渡されるのがreturn式の評価結果である
hoge()の呼び出し側でCString&型の戻り値がデッドリンクになっていれば未定義動作
ポインタという用語を使うのが気に入らなきゃこんな説明だろうさ
最適化の過程の中で一時オブジェクトを削減するコンパイラは結構あるぞ
コピーコンストラクタが実行されないのにコピーコンストラクタをprivateにすると
文句たれるコンパイラ見たことないのか? 某ランドもその1つ
370
名前:
デフォルトの名無しさん
:02/12/06 15:59
(´-`).。oO(…おっぱい?)
371
名前:
デフォルトの名無しさん
:02/12/06 16:00
>>365
http://pc3.2ch.net/test/read.cgi/tech/1036572120/l50
372
名前:
宿題教えて!
:02/12/06 16:01
スレ違いスマソ
>>371
そちらに質問します
373
名前:
333
:02/12/06 16:07
>>359
おまえ
>>355
か?
漏れに反問する前に
漏れを「区別が付いていない」と言い切った
ことの挙証責任を果たしてからにしろ
374
名前:
デフォルトの名無しさん
:02/12/06 16:10
(・∀・)オオ!
375
名前:
デフォルトの名無しさん
:02/12/06 16:27
「区別していない」と言い切ったことを実証するために
333がどう区別できていないかを検証したいので
333が参照と値をどう捕らえているのか聞かせて欲しいな
376
名前:
デフォルトの名無しさん
:02/12/06 16:30
#include <stdio.h>など良く使う物をみなさんは単語登録してるのでしょうか?
マジ質問です
377
名前:
333
:02/12/06 16:32
>>375
おまえは
>>355
か?
おまえは333の時点の発言内容だけで
漏れを「区別ができてない」と断定できたんだろ
自分に揚げ足取られない自信がないからって
逃げ回ってんじゃねえよ
恥をかくのが怖ければとっとと引き下がれ
378
名前:
デフォルトの名無しさん
:02/12/06 16:33
>>377
説明できないんですね?(藁
379
名前:
333
:02/12/06 16:35
>>378
説明できないかどうか漏れの今までの発言を読み返してみろ
380
名前:
デフォルトの名無しさん
:02/12/06 16:35
>>376
してません。
小説家は「目次」のハンコを持っているのか、というくらい馬鹿らしい質問。
時間がかかるのは本文。
381
名前:
デフォルトの名無しさん
:02/12/06 16:37
>>376
俺もしてない。
イチイチIMEをON/OFFしたり変換候補を選択するくらいなら
そのまんま打ったほうがはやい。
382
名前:
デフォルトの名無しさん
:02/12/06 16:38
>>379
釣れた( ´,_ゝ`)
383
名前:
デフォルトの名無しさん
:02/12/06 16:42
333の言いたいのは、
スタック上のCStringが破棄されて不正なアドレスを指している「CString &」がちゃんと返っている、
ということ? それならそのとおりじゃん。何がおかしいのかな? ようわからん。
でも貴殿なんて言葉を使う変な奴の味方はしたくないね…。
384
名前:
デフォルトの名無しさん
:02/12/06 16:44
>>376
古い形式のヘッダは知らん。
385
名前:
333
:02/12/06 16:45
>>383
>でも貴殿なんて言葉を使う変な奴の味方はしたくないね…。
なんだよー
煽り厨と議論の相手を区別して呼んだのが
そんなに気持ち悪かったんか?
まあ相手あってのことだ
気に入らないなら気をつけるよ
386
名前:
デフォルトの名無しさん
:02/12/06 16:49
>>376
それすらタイプするのが面倒ならプログラマーやめたほうがいいよ。
その数千倍くらい毎日タイプするのが仕事なんだから。
#includeなんて全体のタイプ量の0.1%以下。
387
名前:
386
:02/12/06 16:53
まだ初めて3日くらいだったので
タイピングですね、わかりました
ありがとう
388
名前:
376
:02/12/06 16:53
間違い
386→376です
389
名前:
デフォルトの名無しさん
:02/12/06 16:53
>>333
粘着しないで放置すればいいのに。
390
名前:
333
:02/12/06 17:01
>>389
遊んで欲しけりゃ○○しろつーたら
○○しよったんで約束を守った
ちゃんと遊んでやろうとしたのに
ずいぶんつまらん香具師だったんで
結果的にああなってしまった
すまそ
391
名前:
デフォルトの名無しさん
:02/12/06 17:05
333 は 383 を同意または否定してくれ。
話が決着してない。
392
名前:
デフォルトの名無しさん
:02/12/06 17:06
ほかでやってよ(´・ω・`)
393
名前:
333
:02/12/06 17:11
>>391
わかった
>>383
が言っていることと漏れの言いたいことは同じだと思う
394
名前:
デフォルトの名無しさん
:02/12/06 17:14
他でやれよ( ´∀`)
395
名前:
デフォルトの名無しさん
:02/12/06 17:18
ローカル変数の参照を返すような関数はそもそもコンパイルが通らない。
396
名前:
デフォルトの名無しさん
:02/12/06 17:22
>>395
>>346
でガイシュツ
397
名前:
デフォルトの名無しさん
:02/12/06 18:51
int &f(int x){int *p=&x;return *p;}
これはもちろん未定義だ。
「ちゃんと返っている」とか言ってる馬鹿は誰だ?出て来い
398
名前:
デフォルトの名無しさん
:02/12/06 18:54
つまんねえよヴォケ( ´∀`)
399
名前:
デフォルトの名無しさん
:02/12/06 18:59
蒸し返してなんだが、
「参照と値の違いって?」と聞く奴と
「参照とポインタの違いって?」と聞く奴で
どちらがセンスがいいかというと、
もちろん後者。
400
名前:
デフォルトの名無しさん
:02/12/06 19:03
>>397
そうか?pを返すならともかく、*pを返すのなら話は別では?
401
名前:
デフォルトの名無しさん
:02/12/06 19:07
xはろーかるヴぁりあぶる
402
名前:
デフォルトの名無しさん
:02/12/06 19:43
>>401
関係ない。
return *p; は x の参照ではなく、x の値を返している。
403
名前:
402
:02/12/06 19:44
ごめん、関数の型読み違えてた。
404
名前:
:02/12/06 20:34
>>399
わざわざ蒸し返すようなことか?
405
名前:
デフォルトの名無しさん
:02/12/06 21:50
以下のコードについて質問です。
--
const char* getName() const;
--
const は java でいうところの final でメソッド再定義禁止というのは分かります、が、
カッコ の後の const はどういう意味ですか?
406
名前:
デフォルトの名無しさん
:02/12/06 21:53
>>405
みてちょ
http://www.microsoft.com/japan/developer/library/vccore/_langref_constant_member_functions.htm
407
名前:
デフォルトの名無しさん
:02/12/06 21:54
> java でいうところの final でメソッド再定義禁止
そーゆーモノは C++ にはありません。
const char* は getName() が (const char*) 型を返す事を示します。
後ろの const は、そのメンバ関数がメンバ変数を変更しない事を示します。
408
名前:
333
:02/12/06 22:20
>>397
リンク自体がないこととデッドリンクの違いがわからない馬鹿は誰だ? 出て来い
>>399
では訊こう
const float* p = &float(1); // a
const float& r = 1; // b
aとbの違いは何だ?
409
名前:
333
:02/12/06 22:21
↑
あんたの考えるaとbの違いは何だ?
^^^^^^^^^^^^^^
ここが訊きたい
410
名前:
デフォルトの名無しさん
:02/12/06 22:29
> const float* p = &float(1); // a
コンパイル通りませんけど。
411
名前:
デフォルトの名無しさん
:02/12/06 22:32
何か変な風が吹き荒れてるな。
412
名前:
デフォルトの名無しさん
:02/12/06 22:41
333は「未定義」を理解していないようだ
さらに実装において有効であることと
C++の仕様上未定義であることは別問題。
333は実装と規格という違う次元のものを完全に混同してしまっている
ある実装において
int &f(int x){int *p=&x;return *p;}
がint f(int x){return x;}と同様に動くからといって
これが規格に沿ったコードであるというわけではない
いうなればコピーコントロールCDだ
413
名前:
333
:02/12/06 22:49
>>410
なあ、それじゃ答えになってないんだよ
int a[1];
int& r[1] = { a[0] };
int* p[1] = { &a[0] };
「違い」って何だ?
414
名前:
デフォルトの名無しさん
:02/12/06 22:50
>>410
もうネタはいいから真面目な質問してくれよ
415
名前:
デフォルトの名無しさん
:02/12/06 22:53
ここまで粘着してるヤツも久しぶりだな
416
名前:
デフォルトの名無しさん
:02/12/06 22:56
VBで作成したactivex.dllをVC6.0で
使用しようとしているのですが、
どうしてもスレッドクラスから呼び出すと
エラーになってしまいます。
なにかやり方があるのでしょうか?
(クラスウィザードを使用しCOleDispatchDriverから派生された
クラスで試みてます)
417
名前:
デフォルトの名無しさん
:02/12/06 22:58
>>416
釣りやネタでないならどんなエラーか書こうな。
418
名前:
416
:02/12/06 23:05
>>417
すみません。
バンドルされていない例外は???.exe(MSVBVM60.dll)にあります
0xc0000005: Access Violation.
です。
419
名前:
デフォルトの名無しさん
:02/12/06 23:06
>>413
p には代入できるけど r には代入できない。
420
名前:
デフォルトの名無しさん
:02/12/06 23:14
>>413
質問の仕方がまちがっていないか(w
inta;
int&r = a;
int*p =&a;
421
名前:
333
:02/12/06 23:15
>>420
いんや、まさしくお前さんに聞きたい質問だ
int a;
int& r = a;
int* p =&a;
int a[1];
int& r[1] = { a[0] };
int* p[1] = { &a[0] };
「違い」って何だ?
422
名前:
デフォルトの名無しさん
:02/12/06 23:24
333が何をしたいのか今一分からない。
ちょっと言いたいことを簡潔にまとめてくれないか?
>333
423
名前:
デフォルトの名無しさん
:02/12/06 23:24
>>421
だから、コンパイル通らないものの違いを訊いてどうするんだよ。
424
名前:
デフォルトの名無しさん
:02/12/06 23:27
> int& r[1]
(゚Д゚)ハァ?
425
名前:
333
:02/12/06 23:29
>>422
漏れの言いたいことは
>>369
ですでに述べ終えたが
まだ遊んで欲しそうに因縁つけてくる小僧の相手をしてやってる
426
名前:
デフォルトの名無しさん
:02/12/06 23:38
CString hoge = s;
CString &hoge = s;
が実行されてるだけだろう。
で、s は関数を抜けるとデストラクトされるので CString& だとデッドリンクになる。
だから 369 は間違っていないが、あのように回りくどく言う必要はない。
で、それと今話してる内容と何の関係があるんだ?
てっきり新しい話題だと思っていたのだが。
427
名前:
デフォルトの名無しさん
:02/12/06 23:45
つーか、421 の質問が何を目的としてるのか知りたいんだが。
428
名前:
デフォルトの名無しさん
:02/12/06 23:55
>>427
わからん。精神的に病んだものを感じるんだよな。なんだか。
429
名前:
デフォルトの名無しさん
:02/12/07 00:01
>>351
430
名前:
デフォルトの名無しさん
:02/12/07 00:02
だよなあ、質問が間違っていないかと指摘されて上での再掲だからなあ・・・。
431
名前:
デフォルトの名無しさん
:02/12/07 00:03
じゃんけんのプログラムをつくっているのですが、コンピューターの手をランダムに
出す必要があるのでsrand()を使うのはわかるのですが
#include <iostream>
#include <cstdlib>
using namespace std;
static int pre=0;//前回の手
static int crn=0;//今回の手
extern int draw;
extern int win;
extern int lose;
int kettei()
{
srand(pre*(win+lose)+draw);←()の中の仕組みを解説してくれる方がいたら教えてください
crn=rand()%3;
pre=crn;
return crn;
}
432
名前:
デフォルトの名無しさん
:02/12/07 00:09
>>431
1 回のプログラム実行で srand() を 2 回以上呼ぶのが間違い。
433
名前:
デフォルトの名無しさん
:02/12/07 00:11
> extern int draw;
> extern int win;
> extern int lose;
本気で C++ を使うつもりある?
434
名前:
デフォルトの名無しさん
:02/12/07 00:13
>>431
スレ違い。C++に関わるのは、
#include <iostream>
#include <cstdlib>
using namespace std;
の無問題な部分だけ。
435
名前:
デフォルトの名無しさん
:02/12/07 00:13
>>431
乱数の種を掻き回そうとしてるだけ
436
名前:
デフォルトの名無しさん
:02/12/07 00:14
>>433
そう書いてあったんだから仕方ないべ
437
名前:
デフォルトの名無しさん
:02/12/07 00:23
> つくっているのですが
> そう書いてあった
(゚Д゚)ハァ?
438
名前:
デフォルトの名無しさん
:02/12/07 00:24
>>431
掻き回していない。
これだと、同じ入力をすれば必ず同じ結果になる。
439
名前:
デフォルトの名無しさん
:02/12/07 00:28
>>432
疑似乱数の周期を嫌って、結果によってシードを再設定しているんだろ。
世の中にはそういうのが必要なプログラムもあるんだよ。
で、式の中身はだいたい適当でいいんだよ。
440
名前:
デフォルトの名無しさん
:02/12/07 00:30
>>438
drawがどんな動きをするのか不明だけれど、
前回の手を元データにして勝ちてる手を推定しようとしているのでは?
441
名前:
デフォルトの名無しさん
:02/12/07 00:32
>>440
こう書いてありますが何か?
> コンピューターの手をランダムに出す必要があるので
442
名前:
デフォルトの名無しさん
:02/12/07 00:33
> シードを再設定
それが必要な理由を教えてください。
443
名前:
デフォルトの名無しさん
:02/12/07 02:33
friendは、極力使わないほうがいいとのことですが、goto のループ2重抜けみたいに
使わなくてはいけない時って、どんな時ですか?
444
名前:
デフォルトの名無しさん
:02/12/07 02:40
プライベートメンバが必要な関数オブジェクトとか・・・。
445
名前:
デフォルトの名無しさん
:02/12/07 02:43
>>443
2項演算子のオーバーロードで、左右両項に暗黙の型変換を適用したいとき。
446
名前:
デフォルトの名無しさん
:02/12/07 04:39
>>443
コンストラクタをpublic以外にするなど特殊な生成のされ方をするクラスのインスタンスを
生成・解放・取得なんかするのを別なクラスのメソッドで行なおうとする時。
447
名前:
デフォルトの名無しさん
:02/12/07 09:52
>>443
まず、あるメソッドをprivateに保ちたい、という要求があるとする。
特別なクラス、たとえばシステムの中枢部や、デバッグ用のクラスがあり、
そのメソッドを使わなければならない、という要求が生まれることがある。
これを実現するには、そのメソッドをpublicにしなければならない。
しかしそうすると、想定したシステム中枢部やデバッグクラスではない
普通のクラスからもアクセスできてしまう。これはよろしくない。
friendを使うと、そのメソッドをprivateでキープしたままに、
システム中枢部がアクセスできるようになる。
448
名前:
デフォルトの名無しさん
:02/12/07 12:17
>>443
friend を乱用してはいけない。既に言われているように
どうしても使わなければいけない場面もあるけれど、
それ以外の場面で性能を気にしないなら、
外部用にインターフェイス分けをして、見せたい部分には実体を、
「外部」には外部用インターフェイスのみのプロクシを渡すと良い。
449
名前:
デフォルトの名無しさん
:02/12/07 13:56
>448
> 「外部」には外部用インターフェイスのみのプロクシを渡すと良い。
わざわざプロクシクラス作らなくても、必要なメソッドのシグネチャだけ純粋
仮想関数で宣言した基底クラスを用意してやって、それを多重継承するの
が普通かと。
実装の多重継承はいろいろトラップが多いが、インターフェースの多重継承
なら、あまり問題ない。性能面でも間接参照が一回入るだけなので、タイトな
ループ中で呼ぶのでなければまず問題ない。
450
名前:
デフォルトの名無しさん
:02/12/07 14:44
333は逃げたか
451
名前:
333
:02/12/07 14:48
>>450
釣れました。
452
名前:
デフォルトの名無しさん
:02/12/07 14:54
>>449
そういえば、g++にはsigofってのがあった
453
名前:
デフォルトの名無しさん
:02/12/07 14:54
VC++.netで、codecvt、wcin使ったことある人いますか?
おれ、使ってみたんすけど、うまく変換できません。
わかる人いたら、まともに使えてるかどうか教えてください。
よろしく
454
名前:
デフォルトの名無しさん
:02/12/07 14:55
C++にはコンテキストの概念が存在する! ?
455
名前:
デフォルトの名無しさん
:02/12/07 14:56
>>451
他で(メ´∀`)
456
名前:
デフォルトの名無しさん
:02/12/07 15:04
>>454
にはコンテキストの概念が存在しないようです。
457
名前:
454
:02/12/07 15:06
(・∀・)?
458
名前:
デフォルトの名無しさん
:02/12/07 15:38
>>453
ここは言語のスレであって、VC++.netのスレではありません
他いけや
459
名前:
デフォルトの名無しさん
:02/12/07 18:47
コンテキストの概念とは?
何についてのコンテキストの事を指しているのだろう?
おまえのコンテキスト(文脈)がわからん。
というわけで
>>456
に激しく同意。
460
名前:
デフォルトの名無しさん
:02/12/07 18:50
>>458
どこいけば?
461
名前:
デフォルトの名無しさん
:02/12/07 18:56
.netとついてるスレなら山になって腐ってるだろうが。
462
名前:
454
:02/12/07 19:16
めんどくせ
463
名前:
デフォルトの名無しさん
:02/12/07 19:41
馬鹿はもういいよ。さっさと死んでくれ。
464
名前:
デフォルトの名無しさん
:02/12/07 19:42
インドくせー
465
名前:
デフォルトの名無しさん
:02/12/07 20:15
∧_∧ _ _ .' , .. .∧_∧
( ´_ゝ`) _ .- ― .= ̄  ̄`:, .∴ ' (
>>464
/ '' ̄ __――=', ・,‘ r⌒> _/ /
/ /\ / ̄\-―  ̄ ̄  ̄"'" . ’ | y'⌒ ⌒i
_| ̄ ̄ \ / ヽ \_ | / ノ |
\ ̄ ̄ ̄ ̄ ̄ ̄ \__) , ー' /´ヾ_ノ
||\ \ / , ノ
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ / / /
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| / / ,'
|| || || / /| |
!、_/ /
466
名前:
デフォルトの名無しさん
:02/12/07 23:20
>>465
インド人でつか?
467
名前:
デフォルトの名無しさん
:02/12/07 23:33
なんか笑えた。
468
名前:
デフォルトの名無しさん
:02/12/08 12:01
stringstreamに出力して、出来上がった内容を2回繰り返して入力に使いたいです。
でも、seekgして2回読ませるとダメだったです。
そこで、1回目の出力の前にstrでstringに覚えておいて、
2回目以降は覚えといた奴を設定しなおしてから読ませるようにしたら、うまくいきました。
でも、出来上がった出力のサイズによっては巨大なコピーが発生すると思います。
↑のやつよりもっと上手い方法は無いでしょうか?
469
名前:
デフォルトの名無しさん
:02/12/08 13:15
ちょっと聞きたいんだが、コマンドラインからパラメータ受け取るとき、
例えばperlなら Getopt::Long とかがあるけど、C++でそういうライブラリって無いの?
世の中一般に出回ってるものが既にあれば、そっち使ったほうがいいなと思って。
470
名前:
デフォルトの名無しさん
:02/12/08 13:17
>>469
google getopt c++
471
名前:
デフォルトの名無しさん
:02/12/08 13:22
∧_∧ ∧_∧
_( ´∀`) (´∀` )
三(⌒), ノ⊃ ( ) ←
>>470
 ̄/ /) ) | | |
. 〈_)\_) (__(___)
∧_∧ .∧_∧
( ´∀) (´∀` )
≡≡三 三ニ⌒) .)
/ /) )  ̄.| | |
〈__)__) (__(___)
∧_∧ ,__ ∧_∧
( ´)ノ ):;:;)∀`)
/  ̄,ノ'' )
C /~ / / /
/ / 〉 (__(__./
\__)\)
ヽ l //
∧_∧(⌒) ―― ★ ―――
( ) /|l // | ヽ
(/ ノl|ll / / | ヽ
(O ノ 彡'' / .|
/ ./ 〉
\__)_)
 ̄ ̄ ̄ ̄ ̄
死ね!
472
名前:
469
:02/12/08 15:10
じゃあ自分で作るか。どうせ大した手間じゃないし
473
名前:
デフォルトの名無しさん
:02/12/08 15:16
>>472
フツーにGNUのgetoptでも使っとけば?
474
名前:
470
:02/12/08 15:37
俺何か悪いことした??
475
名前:
デフォルトの名無しさん
:02/12/08 16:07
>>474
いや・・・全然悪くないと思うけど・・・。
>>471
はAA貼りたかっただけじゃないのかな。気にすんな。
476
名前:
デフォルトの名無しさん
:02/12/08 16:10
俺はgetoptにSTLの皮かぶせて使ってる。
477
名前:
469
:02/12/08 17:58
getopt見てみたけど、C++でこのライブラリ使うのはアレだなと…
C風の要素が入るとなんか嫌な感じなんで、やっぱ作る
478
名前:
デフォルトの名無しさん
:02/12/08 18:15
>>477
だからラップしたらいいんじゃないの?
Argument::immediately_return(false);
Argument::check("help", no_argument);
Argument::check("version", no_argument, true);
Argument::check('o', required_argument);
Argument::parse(argc, argv);
if (Argument::error()) {
cout << "エラー" << endl;
exit(-1);
}
cout << "オプション" << endl;
for (Argument::result_type::iterator it = Argument::options().begin(); it != Argument::options().end(); ++it) {
cout << (*it).first << " = " << (*it).second << endl;
}
cout << endl;
cout << "オプションではない引数" << endl;
for (Argument::result_type::iterator it = Argument::no_options().begin(); it != Argument::no_options().end(); ++it) {
cout << (*it).first << endl;
}
479
名前:
デフォルトの名無しさん
:02/12/08 18:17
↑みたいな感じで。(今一ダサい感があるのだが)
480
名前:
デフォルトの名無しさん
:02/12/08 18:18
>>468
こういう事?
int main()
{
std::stringstream ss;
int i, j;
ss << 1 << ' ' << 2 << std::endl;
std::cout << ss.str();
ss >> i >> j;
std::cout << i << ' ' << j << std::endl;
ss.seekg(0);
ss >> i >> j;
std::cout << i << ' ' << j << std::endl;
}
481
名前:
玉三郎
:02/12/08 19:58
C++のことならここで話せ!
482
名前:
468
:02/12/08 23:18
>>480
そうそう、それでつ・・・
って、それ動かしたらちゃんと2回読めてる・・・。
なにがちがうのか調べてみます。
483
名前:
デフォルトの名無しさん
:02/12/08 23:38
"class"ってtypenameかstructにすべて置き換え可能だと思うんだけど、合ってる?
必ずclassを書かなければなければならない所って無いよね。
いや、素朴な疑問・・・
484
名前:
デフォルトの名無しさん
:02/12/08 23:50
>>483
template<template<class> class Tn> class ttp {};
2番目のclassだけは置き換え不可能と思われ。
485
名前:
デフォルトの名無しさん
:02/12/09 00:26
>>484
thanks.
テンプレート引数がテンプレートの奴か・・・
見逃してた。うーん、不覚。
486
名前:
468
:02/12/09 00:33
while( std::getline( ss , buffer ) )
{
...
}
という処理を繰り返そうとしてたのですが、最初のループの終了条件で、
ss.fail()な状態になってしまって、ストリームが使用不可になってた模様。
ss.clear()してからss.seekg(0)したらもっかい最初から読めました。
これにて解決。
487
名前:
デフォルトの名無しさん
:02/12/09 00:55
C++の標準ライブラリのストリームは、一旦failbitやeofbitが立ってしまうと、
seekしてもこれらのフラグはクリアされず、明示的にclear()してやる必要が
ある。
CからC++に移ってきた人は大抵一度はここで引っ掛かるようだ。
488
名前:
デフォルトの名無しさん
:02/12/09 03:57
継承についてお聞きしたいんですが
class Aとclass Bがあり、Aの中にはprivateでCというメンバが
あったとします。このときmainでAとBのオブジェクトを生成し,
Bのオブジェクト内のメンバ関数からAのオブジェクト内のCに
アクセスしたいときどうすればいいんでしょ?
489
名前:
デフォルトの名無しさん
:02/12/09 04:04
>>488
class Aの中にfriend class Bを埋め込むとか?
490
名前:
デフォルトの名無しさん
:02/12/09 04:07
どのあたりが継承の話なんだろうか。。。?
491
名前:
デフォルトの名無しさん
:02/12/09 04:09
class A{
friend class B;
int c;
};
友達になっておけば、BからはAの中は見放題。
#なぜに継承?
492
名前:
デフォルトの名無しさん
:02/12/09 04:12
class A
{
friend class B;
}
class B : public A ←多分このあたりじゃない?
{
}
493
名前:
デフォルトの名無しさん
:02/12/09 04:14
>>490
>>491
すみません全く継承の話じゃないですね。
friendが関数以外に使えるとは知りませんでした
早速やってみます。
494
名前:
デフォルトの名無しさん
:02/12/09 10:47
>>492
もしそうならfriendの必要はないな…。
class A
{
protected:
int C;
};
class B : public A
{
foo() { C = 0; }
};
495
名前:
デフォルトの名無しさん
:02/12/09 12:06
すみません、下記のコードがコンパイル時にエラーになるような、
「クラスじゃなくて実体に対して定義されるイテレータ」のようなものはないですか?
なんでこんな怖い仕様にしとくのかなと思って・・・
#include <string>
#include <iostream>
using namespace std;
void main()
{
string a, b;
a = "abcde";
b = "f";
for (string::iterator i=a.begin(); i!=b.end(); ++i) ←このb.end()
cout << *i;
}
496
名前:
デフォルトの名無しさん
:02/12/09 12:26
>>495
それはC++には期待できないだろう。
STLportのデバッグモードで実行時エラーにするのが精一杯かと。
497
名前:
デフォルトの名無しさん
:02/12/09 12:34
c++で
pop3に接続して
list取得して
文字は化けててもいいからメールを見る
というだけのプログラムって結構コード長くなるんですか?
perlだと、数行で実現してるの他スレでみたけど
やっぱりc++だとめんどいんですか?
498
名前:
デフォルトの名無しさん
:02/12/09 12:57
>>497
C/C++の場合、言語仕様にそういうのは含まれてないので適当なライブラリを使います。
使うライブラリはOSやコンパイラ、その付属ライブラリに依存します。
PerlとC++を同列にしないで欲しいなぁ。
C++Builderみたいに簡単にWindowsアプリを作れない言語だろ?
499
名前:
デフォルトの名無しさん
:02/12/09 13:35
>>497
Perlだってライブラリ使ってるか外部コマンド使わないと数行にはならない。
その辺用意すればC++だって手間はあんまり変わらん。
言語仕様上多少ソースコードは長いかもしらんが。
500
名前:
デフォルトの名無しさん
:02/12/09 13:48
500ゲットね。
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.