5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C++相談室 part32

1 :デフォルトの名無しさん:04/06/26 16:47
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。

過去スレ、関連スレ、関連リンクなどは >>2-9 あたり

2 :デフォルトの名無しさん:04/06/26 16:51
1 http://mimizun.mine.nu:81/2chlog/tech/piza.2ch.net/tech/kako/980/980175292.html
2 http://pc.2ch.net/tech/kako/996/996640937.html
3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
14 http://pc5.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc5.2ch.net/tech/kako/1043/10436/1043605481.html




3 :デフォルトの名無しさん:04/06/26 16:52
改行制限により分割
16 http://pc5.2ch.net/tech/kako/1045/10457/1045746245.html
17 http://pc5.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc5.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc5.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc5.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc5.2ch.net/tech/kako/1057/10575/1057580107.html
22 http://pc5.2ch.net/tech/kako/1060/10603/1060361082.html
23 http://pc5.2ch.net/tech/kako/1062/10626/1062690663.html
24 http://pc5.2ch.net/tech/kako/1066/10665/1066546387.html
25 http://pc5.2ch.net/tech/kako/1067/10679/1067949669.html
26 http://pc5.2ch.net/test/read.cgi/tech/1070164402/ (迷子)
27 http://pc5.2ch.net/test/read.cgi/tech/1074454641/ (迷子)
28 http://pc5.2ch.net/test/read.cgi/tech/1077985164/
29 http://pc5.2ch.net/test/read.cgi/tech/1082047479/
30 http://pc5.2ch.net/test/read.cgi/tech/1084030770/
31 http://pc5.2ch.net/test/read.cgi/tech/1086185282/

4 :デフォルトの名無しさん:04/06/26 16:53
■基本■
[C++ FAQ]
 http://www.parashift.com/c++-faq-lite/
 http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
  Cとその仕様を比較しながらの解説なので分かりやすい。
  ***** 質問の前に必ずこの二つに目を通してください *****

[禿 Stroustrup]
 http://www.research.att.com/~bs/
[C++ International Standard]
 http://www.kuzbass.ru/docs/isocpp/
 http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
 http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110&ICS1=35&ICS2=60&ICS3=
[JTC1/SC22/WG21 - C++]
 http://std.dkuug.dk/jtc1/sc22/wg21/

[C/C++ Users Journal]
 http://www.cuj.com/
[cppll (ML)]
 http://www.trickpalace.net/cppll/ (日本語)

5 :デフォルトの名無しさん:04/06/26 16:55
■Books■
amazon.com C,C++関連書籍
 http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/

The C++ Programming Language
 http://www.amazon.com/exec/obidos/ASIN/0201700735/
 http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳)
C++ Primer (3rd Edition)
 http://www.amazon.com/exec/obidos/ASIN/0201824701/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳)
The C++ Standard Library
 http://www.amazon.com/exec/obidos/ASIN/0201379260/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳)
Effective C++
 http://www.amazon.com/exec/obidos/ASIN/0201924889/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳)
More Effective C++
 http://www.amazon.com/exec/obidos/ASIN/020163371X/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳)
Exceptional C++
 http://www.amazon.com/exec/obidos/ASIN/0201615622/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳)
More Exceptional C++
 http://www.amazon.com/exec/obidos/ASIN/020170434X/
Effective STL
 http://www.amazon.com/exec/obidos/ASIN/0201749629/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
 http://www.amazon.com/exec/obidos/ASIN/0201704315/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
 http://www.amazon.com/exec/obidos/ASIN/0201734842/

6 :デフォルトの名無しさん:04/06/26 16:56
■Libraries■
[Boost]
 Boost http://www.boost.org/
 (日本語) http://user.ecc.u-tokyo.ac.jp/~s31552/wp/boost/
 (日本語) http://www.kmonos.net/alang/boost/
[STL]
 STLport http://www.stlport.org/
 SGI-STL http://www.sgi.com/tech/stl/
 STLFilt http://www.bdsoft.com/tools/stlfilt.html
 (日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
 (日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
 http://www.moderncppdesign.com/
 LokiPort-MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
 LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
[他]
 ACE http://www.cs.wustl.edu/~schmidt/
 Blitz++ http://www.oonumerics.org/blitz/
 flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
[他ライブラリリンク集]
 http://www.trumphurst.com/cpplibs/cpplibs.phtml
 (日本語) http://www.kmonos.net/alang/cpp/lib.html

7 :デフォルトの名無しさん:04/06/26 16:58
関連スレは移動調べるのがマンドクセので何方かおながいします。

8 :デフォルトの名無しさん:04/06/26 18:14
■関連スレ■
【C++】template 統合スレ -- Part4
http://pc5.2ch.net/test/read.cgi/tech/1083550483/
ぼるじょあがC/C++の宿題を片づけますYO! 25代目
http://pc5.2ch.net/test/read.cgi/tech/1087929711/
C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc5.2ch.net/test/read.cgi/tech/1049790146/
managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/
ATL 相談室
http://pc5.2ch.net/test/read.cgi/tech/1029029882/
COM の世界を斬る!
http://pc5.2ch.net/test/read.cgi/tech/981823340/


9 :デフォルトの名無しさん:04/06/26 18:15
■コンパイラスレ■
タダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/(html化待ち)
GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/
タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/
OpenWatcom C++
http://pc5.2ch.net/test/read.cgi/tech/1033433728/
"Code of the Nerds" Digital Mars C/C++
http://pc5.2ch.net/test/read.cgi/tech/1044210976/


10 :デフォルトの名無しさん:04/06/26 18:17
■開発環境スレ■
★初心者にVisual C++を教えるスレ★ Part12
http://pc5.2ch.net/test/read.cgi/tech/1083585833/
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
C++Builder相談室 Part9
http://pc5.2ch.net/test/read.cgi/tech/1080541814/
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/


11 :デフォルトの名無しさん:04/06/26 18:28
WTLお勉強スレッド
http://pc5.2ch.net/test/read.cgi/tech/1078150663/

12 :デフォルトの名無しさん:04/06/26 18:28
Zcurry。
前擦れ>>995の続きが気になる…

13 :デフォルトの名無しさん:04/06/26 18:34
>>1-11乙。では・・・・

STLつかうと一気に実行ファイルサイズが10倍に?!

14 :デフォルトの名無しさん:04/06/26 18:37
誰か相手してやれよ

15 :デフォルトの名無しさん:04/06/26 18:41
>>13ry

16 :デフォルトの名無しさん:04/06/26 18:42
>>15
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

17 :デフォルトの名無しさん:04/06/26 18:46
>>14
scanf使うなよ ぼけ

18 :デフォルトの名無しさん:04/06/26 19:03
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいのでちゅか?

19 :デフォルトの名無しさん:04/06/26 19:10
>>18
#include "stdafx.h"

後死ね。

20 :デフォルトの名無しさん:04/06/26 19:11
>>19
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

21 :デフォルトの名無しさん:04/06/26 20:13
>>20

デジャブ…

22 :デフォルトの名無しさん:04/06/26 20:32
v(^・^)v はどこに消えた

23 :デフォルトの名無しさん:04/06/26 20:43
>>22
次スレでおれが復活させておくから

24 :1:04/06/26 21:18
スマソ。すっかり忘れていた。この通り・・・_| ̄ ̄|〇

25 :デフォルトの名無しさん:04/06/27 00:19
もうpart32か俺も歳くったなv(^・^)v

26 :デフォルトの名無しさん:04/06/27 09:07
>>24
いやまぁ、そこまで深刻な問題じゃないし^_^;

27 :デフォルトの名無しさん:04/06/27 13:55
質問です。

Cだと
printf("key[%s] value[%s]\n",key,value);
C++だと
cout << "key[" << key << "] " << "value[" << value << "]" << endl;

なんかC++の方が書く量が多いのですが、これはしょうがないのですかね・・・。
なにかヒントがあったら教えてください。



28 :デフォルトの名無しさん:04/06/27 14:00
>>27
書く量なんか問題じゃないだろ。
そんなに気になるなら、変数名は全部1文字にしたり、マクロ使いまくれ。
そして、そんなことはどうでもいいことだと悟れ。

29 :デフォルトの名無しさん:04/06/27 14:07
>>27
少し短くした
cout << "key[" << key << "] value[" << value << "]" << endl;

30 :デフォルトの名無しさん:04/06/27 14:09
>>28
いや、正直俺も書きづらいし、読みづらいと思うぞ。

>>27
boost::formatがいいと思う

ttp://www.kmonos.net/alang/boost/classes/format.html

31 :デフォルトの名無しさん:04/06/27 14:13
何も疑問に思わないんだとしたら
>>28の頭は腐ってるな

32 :27:04/06/27 14:19
レスありがとうございます。
なるほどぉ。


33 :デフォルトの名無しさん:04/06/27 15:39
double d = 123.456;
printf( "value=%4.2f", d);
なんてのはcoutでどう書けばいいのでしょう?

34 :デフォルトの名無しさん:04/06/27 15:46
>>33
マニピュレータで検索

ただ、激しく面倒なので printf() 使った方が幸せな気がするが。

35 :デフォルトの名無しさん:04/06/27 15:54
正直、coutって使えないんだ。。。orz

36 :デフォルトの名無しさん:04/06/27 15:55
>>33
そのときの表示って、

value=123.46

ってなるかも。

37 :デフォルトの名無しさん:04/06/27 16:27
#include <string>
using namespace std;
string work="hoge"; // OK
char array[10];
strcpy(array,work.c_str()); // NG

上のコードで3行目のstrcpyで
error C2668: 'strcpy' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
と怒られてしまいます。
本等を見てもこれで通るはずなのですが・・。
解決策があったら教えてください。

VC++6.0でサービスパック6です。


38 :デフォルトの名無しさん:04/06/27 16:31
マルチか

39 :デフォルトの名無しさん:04/06/27 18:31
マルチって何法に抵触なんだ?
なんか直リンと似た議論に思えてきた

>>37
#include <string>
#include <cstring> //もしくは #include <string.h>


40 :デフォルトの名無しさん:04/06/27 18:35
>>39
はぁ?
もう回答は出てるから、いらねぇってことだよ。

41 :デフォルトの名無しさん:04/06/27 18:36
>>40
各スレなりの回答はあっていいじゃん

42 :デフォルトの名無しさん:04/06/27 18:37
インタビューって各方面の専門家に聞いて回るの普通だろ

43 :デフォルトの名無しさん:04/06/27 18:37
>>39
情報が分散するので、後になって検索する人が不便。

回答者の能力を疑っているようにみえるため、無礼。
(「こいつに聞いても判らないかもしれないから、他のところでも聞いておこう」ということ)

法律だけが全てじゃないよ。

44 :デフォルトの名無しさん:04/06/27 18:38
そもそも「何法に抵触か」という問題提起に答えないあたり
ますます直リンとそっくりに見える

45 :デフォルトの名無しさん:04/06/27 18:41
>>43
無礼に思った人が無礼者に対する相応しい態度をとればいいだけだろ?
大勢に嫌な態度をとられた人は自然に学習するわけで
「マルチ」って用語まで作って魔女狩りみたいにする必要性はないと思う

46 :デフォルトの名無しさん:04/06/27 18:41
参照型を実体型に代入するとどういう動きになるのでしょうか?


string a(string& s1)
{
 string s2 = s1;
 return s2;
}


47 :デフォルトの名無しさん:04/06/27 18:42
>>46
参照は別名。いじょ

48 :デフォルトの名無しさん:04/06/27 18:44
>>45
> 「マルチ」って用語まで作って
別に、以前から使われている言葉だし。

49 :デフォルトの名無しさん:04/06/27 18:46
>>48
魔女っていう概念もだいぶん昔からあったんじゃないか?

50 :デフォルトの名無しさん:04/06/27 18:49
>>48
言ってる意味通じてねえな
マルチ=悪
という闇トラストまで作る必要はないと言っている

少なくとも俺は加担し(てやら)ない

51 :デフォルトの名無しさん:04/06/27 18:53
>>45
「魔女狩りみたい」って具体的にどういうこと?
「マルチか」なんて言いつつ結局答えてしまっているあたり、
魔女狩りどころか黙認しているようにすら見えるけどね。

魔女狩りと言うからには、何ら問題のないものにまで言い掛りを付けるという
ことだと思うのだけど、そういう風には見えないなあ。

52 :デフォルトの名無しさん:04/06/27 18:54
>>50
> 言ってる意味通じてねえな
通じなかったのは、言ってる意味ではなく、言っていないことの意味です。
言っていないことが通じないのは当たり前ですね。
エスパーであることを要求されても困ります :-P

> マルチ=悪
> という闇トラストまで作る必要はないと言っている
それも昔からありますね。最近作られつつある流れであるかのように言うのは
ナンセンスです。

53 :デフォルトの名無しさん:04/06/27 18:55
ageてる時点で釣りだと・・・


54 :デフォルトの名無しさん:04/06/27 18:56
>>49
? 確かに昔からあるけど。

55 :デフォルトの名無しさん:04/06/27 18:59
>>51
もう一度聞く
マルチは何が悪いんだ?

言っておくが>>43は説明になってない
無償で回答する側の動機と
相手の無責任を承知で質問する人の動機に照らして
常連の勝手な馴れ合いに頼らない説明をしてみてくれ

56 :デフォルトの名無しさん:04/06/27 19:01
>>52
>それも昔からありますね。

それって何のこと?


>最近作られつつある流れであるかのように言うのは
>ナンセンスです。

あんた現にエスパーじゃん。

57 :デフォルトの名無しさん:04/06/27 19:02
>>55
> 言っておくが>>43は説明になってない
なっていますね。
(「認めたくない」という駄々を「説明になってない」と言い換えても無駄です)

58 :デフォルトの名無しさん:04/06/27 19:03
>>56
> それって何のこと?
あなたの言っていることですが :-)

59 :デフォルトの名無しさん:04/06/27 19:04
>>57
おまえ一行 > ばっかりやってるからそうなるんだよ
続き読めよな

60 :デフォルトの名無しさん:04/06/27 19:05
>>58
おいエスパー、こっちは普通の人間だ。飛躍しないでくれ。

61 :デフォルトの名無しさん:04/06/27 19:05
>>59
> おまえ一行 > ばっかりやってるからそうなるんだよ
「そうなる」とはどうなることでしょうか? 文章がまずくてわからないです。

> 続き読めよな
読んで書きましたよ。

62 :デフォルトの名無しさん:04/06/27 19:06
>>60
> おいエスパー、
レス先間違えてますよ :-)

> こっちは普通の人間だ。飛躍しないでくれ。
普通の人間よりはほんのちょっぴり「物分りが悪い」気もします。

63 :デフォルトの名無しさん:04/06/27 19:06
>>61
>読んで書きましたよ。

じゃ、おまえにはもう聞かない。ばいばい

64 :デフォルトの名無しさん:04/06/27 19:07
>>63
> ばいばい
あ、はい。さようなら。
どこかにあなたの子供の駄々を受け入れてくれるコミュニティが存在することを
心から祈っております :-)

65 :デフォルトの名無しさん:04/06/27 19:07
>レス先間違えてますよ :-)

了解

66 :デフォルトの名無しさん:04/06/27 19:08
マルチが嫌われるのは、
マルチかます奴は大抵各スレに「よそで解決しました」との報告を行わず、
さりとて各スレの反応を見比べて吟味するような技量(ひいてはそのつもり)がないように思われるからだ。
「思われる」というところはもっぱら回答者側の主観によるものだが、嫌なもんは嫌なんだから仕方ない。

67 :デフォルトの名無しさん:04/06/27 19:09
>>64
>受け入れてくれるコミュニティが存在することを
>心から祈っております :-)

マルチにもなw

68 :デフォルトの名無しさん:04/06/27 19:10
>>55
全員マルチしだしたら、スレ分けてる意味がなくなるやん。

69 :デフォルトの名無しさん:04/06/27 19:10
>>55
どこが納得がいかなかったのか説明してもらわないと、同じ説明の繰り返しになってしまうと思うのですが。

70 :デフォルトの名無しさん:04/06/27 19:10
マルチは嫌われる、よってダメだ。

実際俺はマルチは好きじゃない。
せっかく解答してやったのに、違うスレでまったく同じ質問を見つけたら
なんだかなーコイツは、という気分になるよ。

71 :デフォルトの名無しさん:04/06/27 19:10
>>66
じゃ、それぞれに対して礼を失しなければ
ほうぼう聞いて回るのはいいんだな?

72 :デフォルトの名無しさん:04/06/27 19:12
>>68
それはどうかな? >>41についてはどう思う

73 :デフォルトの名無しさん:04/06/27 19:12
というか、ずっと以前から「失礼な行為」として続いてきたものに
今さら個人の感情でどうこう言い出す時点で馬鹿丸出しですね。
勘違いした批判精神で社会性の無さを正当化する子供ってとこでしょうか :-P

74 :デフォルトの名無しさん:04/06/27 19:13
>>72
> >>41についてはどう思う
珍しい意見が、まるで自演のようなタイミングで出てきたなぁと思いました ;)

75 :デフォルトの名無しさん:04/06/27 19:15
>>55
マルチでの質問は気分を害する人間が居ます
それに答えた後でマルチに気づけば、その回答者が気分を害する事になります
>>38ではマルチである事の告知せず、マルチを悪し様に言っているわけではありません
>>38マルチで気分を害する回答者を出さないための回答者保護として適切な対処であると考えられます。

それに過剰反応する39=(ry自身が、マルチを悪いものと認識しているのでしょう
マルチでの質問に問題が無いと感じる人は、>>38を見てそのまま解答すればいいだけの話です。

76 :デフォルトの名無しさん:04/06/27 19:15
マルチである事の告知"しか"せず


77 :デフォルトの名無しさん:04/06/27 19:16
>>69

39は何法に抵触かを問うた
43は何法に抵触かを答えていない

・回答者は、聞き方が気に入らなければ答えない
・質問者は、収穫が少なければ聞き方を工夫する

それだけだろ?
質問者の行動まで規制する必要というか
何の権利でそこまで口出しするんだ?
回答者の権力が及ぶ範囲は上記の1点目だけだ

78 :デフォルトの名無しさん:04/06/27 19:19
>>77
コミュニティがすさむことへの自助活動だろ?
誰にもなんの権利もないよ
それとも誰かに与えてもらないとなにもでないの?

79 :デフォルトの名無しさん:04/06/27 19:20
>>75
「マルチ」という用語に嫌悪が含まれるという認識はある
だから問題提起をした
38に37に対する嫌悪がなかったことを証明できるか?

80 :デフォルトの名無しさん:04/06/27 19:20
常識的な礼儀も守れない奴って、それを指摘されると
その礼儀作法に論理のメスを入れるふりをして
どこまでも逃げ回るよね。

81 :デフォルトの名無しさん:04/06/27 19:21
>>77
マルチが気に入らない回答者は、それがマルチである事に気づけなければどうしたらいい?

82 :デフォルトの名無しさん:04/06/27 19:21
常識に問題提起をする時点で痛いんだよ

83 :デフォルトの名無しさん:04/06/27 19:22
>>79
悪魔の証明ですか?
fjのノリになってるね。

84 :デフォルトの名無しさん:04/06/27 19:22
まぁマルチするのは勝手だが、嫌われて回答が得られなくても文句言うなってこった。

85 :デフォルトの名無しさん:04/06/27 19:23
>>78
> コミュニティがすさむことへの自助活動だろ?
空気読めないヤツが、それを壊すと。

別に「俺はマルチしたいんだ」と力一杯主張して実行するのはかまわんが、
それが通った結果として回答を得られる場を壊しちゃったら(みんなマルチが
鬱陶しくてスレを読まなくなったら)本末転倒だよ。よく考えれ。

86 :デフォルトの名無しさん:04/06/27 19:23
マナーの話なのに「何法に抵触するんだ?」だもんな。
こういう他人とまともにコミュニケーションもとれない馬鹿は
無人島に行って電源の入ってないマシンをいじってて欲しい。

87 :デフォルトの名無しさん:04/06/27 19:24
>>81
自分で調べろ

・・・と質問者に対してよく言う人は、自分も言動を一致させる必要がある

はっきり言ってただのアフォ

88 :デフォルトの名無しさん:04/06/27 19:24
問題提起をする側が38に悪意のあることを証明しないとな。


89 :デフォルトの名無しさん:04/06/27 19:25
>>86
> 無人島に行って電源の入ってないマシンをいじってて欲しい。
ワラタ

90 :デフォルトの名無しさん:04/06/27 19:25
>>70
>マルチは嫌われる、よってダメだ。

>>82
>常識に問題提起をする時点で痛いんだよ

閉鎖的な馴れ合いの典型だなw

91 :デフォルトの名無しさん:04/06/27 19:27
>>90
> 閉鎖的な馴れ合いの典型だなw
いえ、閉鎖的なのは、殆どの人間の同意を取れずにいるあなたの理屈と、
にもかかわらず未だにそれを正しいと信じ込んでいるあなたです :-P

92 :デフォルトの名無しさん:04/06/27 19:28
>>90のw対象に >>80も追加

>>88
議題そのものに挙証責任はない

93 :デフォルトの名無しさん:04/06/27 19:28
>>73
正解

94 :デフォルトの名無しさん:04/06/27 19:28
>>87
サーチエンジンに反映される前の記事を
即座に漏らさず探し当てる能力を持っているのは
多分世界でもあなただけです

95 :デフォルトの名無しさん:04/06/27 19:28
>>90のw対象に >>91を追加

>殆どの人間
アフォかこいつは

96 :デフォルトの名無しさん:04/06/27 19:30
だいたい同じだな
礼儀を守らない奴の言い逃れは、ネットでもそれ以外でも

97 :デフォルトの名無しさん:04/06/27 19:30
>>95
90 の対象には次々人が追加されるのに 95 の方には一人も追加されないのな。
v(^・^)v

98 :デフォルトの名無しさん:04/06/27 19:31
>>73
>ずっと以前

これも問題
大学や公共機関という受益者負担の原則に照らして特殊な環境の下、
ないしはナローバンド等によるレートの大きな従量制の下での
「常識」がいつまで続くかに関心がないなら、それは技術者として恥ずべきことだ

99 :デフォルトの名無しさん:04/06/27 19:31
>>95
> アフォかこいつは
いよいよ幼児性がわかりやすい形で出てきましたね ;-)

100 :デフォルトの名無しさん:04/06/27 19:32
頭のいかれてる人を怒らすとめんどくさいな。
トリップつけてくれよ。他のスレで見かけても放置するからさ。

101 :v(^・^)v:04/06/27 19:33
そろそろ放置すべき時期かと思うんだが、どうだろう?
ここネタスレじゃないし、こんな下らん事で埋めちゃうのは勿体ない。

102 :デフォルトの名無しさん:04/06/27 19:33
>>98
> 「常識」がいつまで続くか
大学や公共機関、ナローバンドといった単語を持ち出しても無駄ですね。
いま現在、この板で、この常識は息づいているので :-)

103 :デフォルトの名無しさん:04/06/27 19:33
>>94
語るに落ちたな
「見苦しい言い訳をする質問者」そのもの

104 :デフォルトの名無しさん:04/06/27 19:34
>>98
日本人が昆虫を食べる事に抵抗を持つのなら、それは地球の住人として恥ずべき事だ

一度染み付いた文化や習慣はそう容易には変えられない。


105 :デフォルトの名無しさん:04/06/27 19:35
>>102
>いま現在、この板で、この常識は息づいているので :-)

そのことへの疑問を問題として提起した

106 :デフォルトの名無しさん:04/06/27 19:35
要するに、この板でコミュニケーションを取ろうという人間が、
その際にこの板のマナーを守らなかったという話だろ。

あからさまに失礼な奴なのに、なんで踏ん張るんだろう・・・
まぁ、失礼な奴だからなんだろうがw

107 :デフォルトの名無しさん:04/06/27 19:35
↑さっきからうるさいsageろ

108 :デフォルトの名無しさん:04/06/27 19:35
>>104
イナゴの佃煮なんか昔からあるじゃん
オマエが知らないだけ

109 :デフォルトの名無しさん:04/06/27 19:35
屁理屈喚き散らかしてまでマルチがしたいのかw

110 :デフォルトの名無しさん:04/06/27 19:36
>>105
> そのことへの疑問を問題として提起した
結果は見てのとおりですね :-)

111 :デフォルトの名無しさん:04/06/27 19:36
ここでいくら暴れても「これだからマルチは・・」と嫌われるだけなのにな。
マルチの印象をさらに悪くして損するの自分なのに。
本来は回答を得ることが目的なのに、マルチすることが目的になってる。
本当に回答を得たいなら回答を得やすい質問の仕方すれば自分が得するのに。

112 :デフォルトの名無しさん:04/06/27 19:36
いい加減他のスレが下がるのでsageてくださいsage

113 :デフォルトの名無しさん:04/06/27 19:36
「問題提起」という言い方で自分のヒステリーをごまかしてるのがなんとも

114 :デフォルトの名無しさん:04/06/27 19:37
>>106
goto >>77;

115 :デフォルトの名無しさん:04/06/27 19:37







お   前   ら  s  a  g  e  ろ

116 :デフォルトの名無しさん:04/06/27 19:37
>>111
そうだね。
前々からマルチする奴には無礼で頭が悪いって特徴があるなと思ってたけど、
今回のことでその思いは強まったよ。

117 :デフォルトの名無しさん:04/06/27 19:38
>>111
変な言いがかりつけんな!
俺がいつマルチしたんだよ?

118 :デフォルトの名無しさん:04/06/27 19:38
>>103
詭弁だな。
確かに「探しても見つかりませんでした」は探そうとしないアホの常套句だが、
掲示板の記事のような即時性のあるリソースを
現代のサーチエンジンで追いきれない事は純然たる事実だ。

俺はいくつかのnewsと2ch、あとはbelutionをチェックしては居るが
他のサイトまでチェックし尽くすことは物量的に不可能だ。

プログラミングコミュニティ全てを列挙しきる事のできる人間も
多分世界であなただけです。


119 :デフォルトの名無しさん:04/06/27 19:39
マルチの話題はこっちで大いに盛り上がってくれ
http://that3.2ch.net/test/read.cgi/bouhan/1081015408/l50


120 :デフォルトの名無しさん:04/06/27 19:39
>>111
氏ね

121 :デフォルトの名無しさん:04/06/27 19:39
>>118
再び語るに落ちたな
言えば言うほど恥の上塗りだよ

122 :デフォルトの名無しさん:04/06/27 19:40
http://that3.2ch.net/test/read.cgi/bouhan/1081015408/l50


http://that3.2ch.net/test/read.cgi/bouhan/1081015408/l50


http://that3.2ch.net/test/read.cgi/bouhan/1081015408/l50


http://that3.2ch.net/test/read.cgi/bouhan/1081015408/l50

123 :デフォルトの名無しさん:04/06/27 19:40
>>121
どこに問題があるのか指摘できないのは脳が入ってないからですか?

124 :デフォルトの名無しさん:04/06/27 19:41
マルチは失礼、という常識が
いちだんと強化された感があるな
今回のやりとりで

125 :デフォルトの名無しさん:04/06/27 19:41
真・スレッドストッパー。。。( ̄ー ̄)ニヤリ

126 :デフォルトの名無しさん:04/06/27 19:42
何法に抵触するんだ? とかきいてた奴が
突っ込まれたあとで「常識への疑問を問題として提起したんだ」って・・・
はあ

127 :デフォルトの名無しさん:04/06/27 19:42
もっと上手く使えばいいのに。
無料でめんどうなやり取りもせずに回答が得られる場所なんだから。
自分の主張を通したいがために結局回答が得られなかったら本末転倒だよ。

128 :デフォルトの名無しさん:04/06/27 19:43
>>126は馬鹿126馬鹿は馬鹿126は糞ゴミ

129 :デフォルトの名無しさん:04/06/27 19:43
>>123
「見苦しい言い訳をする質問者」そのもの

>他のサイトまでチェックし尽くすことは物量的に不可能だ。
>プログラミングコミュニティ全てを列挙しきる事のできる人間も

マルチかどうか確認するには必要なことだが
言ってる当人ができないと宣言している以上、
「マルチすんな」という主張は破綻している


130 :デフォルトの名無しさん:04/06/27 19:43
誰か

無料で

C言語

DLできる

サイト

教えろ糞ども

131 :デフォルトの名無しさん:04/06/27 19:44
>>128
はいはい。

食後の薬を忘れるなよ。

132 :デフォルトの名無しさん:04/06/27 19:44
>>126
いいよ、こっちは百歩譲ったつもりだったが
何法にも抵触してないんなら自由って結論な

133 :デフォルトの名無しさん:04/06/27 19:44
リアル中学生(所属:パソコンクラブ)なんだからそのへんで許してやれよ

134 :デフォルトの名無しさん:04/06/27 19:44
>>129
だれも「マルチすんな」とは言ってないよ。
言っても無い事に反論する手に出てきましたね。

「マルチに解答すると気分が悪くなる」これだけ。

135 :デフォルトの名無しさん:04/06/27 19:45
>>131

お前は馬鹿だC言語教えて無料でDLお前は馬鹿。

136 :デフォルトの名無しさん:04/06/27 19:45
C++の話題につけていけないのでくだらないことで
盛り上がる人達が集まるのはこのスレですか?

137 :デフォルトの名無しさん:04/06/27 19:45
>>129
> 言ってる当人ができないと宣言している以上、
> 「マルチすんな」という主張は破綻している
していませんね :-P

138 :デフォルトの名無しさん:04/06/27 19:45
>>130
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=%22C+Language%22+%22Download%22+%22Free%22

139 :デフォルトの名無しさん:04/06/27 19:46
>>136

このスレッドの殆どの人がクスリやってます。

放っておいた方がいいですよ(ワラ

140 :デフォルトの名無しさん:04/06/27 19:46
>>132
> 何法にも抵触してないんなら自由
さぞ嫌われてるんでしょうねえ。

141 :デフォルトの名無しさん:04/06/27 19:46
>>137
いーや、している

142 :デフォルトの名無しさん:04/06/27 19:47
誰かC言語をこの超超超超超超超超超超超℃素人の私に教えてくだらい

143 :デフォルトの名無しさん:04/06/27 19:47
>>132
法律で規制してもらわないと何もできんのか……

まぁ宿題やらなくても、電車の中で化粧しても、コンビニの駐車場に
座り込んでも、変数名を a1, a2, a3, .. としても法には触れんわな。

144 :デフォルトの名無しさん:04/06/27 19:48
>>142
ここは C++ スレだが

145 :デフォルトの名無しさん:04/06/27 19:48
>>142
スレ違いです。

146 :デフォルトの名無しさん:04/06/27 19:48
>>143
無礼者はあんたらだろ
こっちが百歩譲ってたことに対して
それだけかよ

147 :デフォルトの名無しさん:04/06/27 19:48
>>144
だから何?消えろクズ
>>145
氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね氏ね

148 :デフォルトの名無しさん:04/06/27 19:49
>>146
> こっちが百歩譲ってたことに対して
何を譲っていたのですか?
あなたが間違っている点をあなたが改めることは
「譲る」とは言いませんが :-P

149 :デフォルトの名無しさん:04/06/27 19:49
法に触れないが嫌われる、ただそれだけだよ。
だからそろそろ落ち着け。
いくら「俺を(そしてマルチする人を)嫌うなぁー!」と主張しても無駄なんだよ。
だってそんなの法律で禁止してないべ。

150 :デフォルトの名無しさん:04/06/27 19:50
マルチすんのは自由だな、バレるとアレだけど。
でもって、マルチを指摘するのも自由だな。
なんか、これ納得できないらしいけど。

151 :デフォルトの名無しさん:04/06/27 19:50
>>147
> だから何?
スレ違い、ということです ;)

152 :デフォルトの名無しさん:04/06/27 19:50
ActiveBASIC>>>>>>>>>>>>>>C/C++

153 :デフォルトの名無しさん:04/06/27 19:51
>>148
あんたの主張:
間違っている →譲るとは言わない

こっちの主張:
間違っていない →譲ると言う可能性がある

154 :デフォルトの名無しさん:04/06/27 19:51
D>Smalltalk>Java>C++>C

155 :デフォルトの名無しさん:04/06/27 19:52
マルチポストは是か非か?

という質問をマルチポストしてきます。

156 :デフォルトの名無しさん:04/06/27 19:52
ActiveBasic>>Delphi>HSP>>>>C/C++

157 :デフォルトの名無しさん:04/06/27 19:52
*あらゆる質問はまずすれ立てるまでもない質問はここでスレにしてください。

とりあえず、何法に抵触しているのか、すれ立てるまでも無い質問スレでしてきてください。

158 :デフォルトの名無しさん:04/06/27 19:52



Ruby>>Java>>Delphi>>AB>>>HSP>>C/C++

159 :デフォルトの名無しさん:04/06/27 19:53
この流れなら言える!
























160 :デフォルトの名無しさん:04/06/27 19:53
>>153
意味不明です。

161 :デフォルトの名無しさん:04/06/27 19:53
>>146
てめえの基準で「百歩」譲られてもねぇ

162 :デフォルトの名無しさん:04/06/27 19:53
>>157
氏ね

163 :デフォルトの名無しさん:04/06/27 19:53
>>146
実は俺、お前に一億歩譲ってたんだ。

164 :デフォルトの名無しさん:04/06/27 19:53
>>160
貴方こそ意味不明です キモッ

165 :デフォルトの名無しさん:04/06/27 19:53
なんか関係無い流れだから好きな子の名前でも告白しちゃおうかな

166 :デフォルトの名無しさん:04/06/27 19:54
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー
ひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセーひまわりマンセー

167 :デフォルトの名無しさん:04/06/27 19:55
>>164
意味不明という言葉の意味がわからない、という意味ですか?
もしそうなら、これは辞書的な話ですから辞書をひけばいいし、
そうでないなら、まったく筋の通っていないオウム返しですから
まさにジタバタと暴れる子供と同じですね :-P

168 :デフォルトの名無しさん:04/06/27 19:55
マルチから荒らしに正常進化を遂げてるなw あとは、
                 ┌─┐
                 |も.|
                 |う |
                 │来│
                 │ね│
                 │え .|
                 │よ .|
      バカ    ゴルァ  │ !!.│
                 └─┤    プンプン
    ヽ(`Д´)ノ ヽ(`Д´)ノ  (`Д´)ノ    ( `Д)
    | ̄ ̄ ̄|─| ̄ ̄ ̄|─| ̄ ̄ ̄|─□( ヽ┐U
〜 〜  ̄◎ ̄  . ̄◎ ̄   ̄◎ ̄   ◎−>┘◎

と言いつつ数回書き込んで、それがバレて「もう来ねぇんじゃなかったの?」と
つっこまれるのがいつものパターンだが、さて。

169 :デフォルトの名無しさん:04/06/27 19:55
>>167
意味不明

170 :デフォルトの名無しさん:04/06/27 19:55
>>166
3点
そのネタは使いつくされています
もっとオリジナリティを出しましょう

171 :デフォルトの名無しさん:04/06/27 19:55
>>165
どうぞ

172 :デフォルトの名無しさん:04/06/27 19:56
>>160
聞き方が気に入らないから答えない
質問文にすらなってないが・・・

173 :デフォルトの名無しさん:04/06/27 19:56
「やっぱ2ちゃんねらは馬鹿ばっかりだな!もう二度と来ねぇよ!」

174 :デフォルトの名無しさん:04/06/27 19:56
>>170
ひわまセーりンマまわーひまセ

175 :デフォルトの名無しさん:04/06/27 19:56
お前らC++の相談をしろ。ここはそういうスレだ。
マルチがうんぬん言い合うスレではない。

マルチの相手してやってる奴も落ち着け。
あんたらたぶん良い様に釣られてるぞ。

176 :デフォルトの名無しさん:04/06/27 19:56
ttp://www011.upp.so-net.ne.jp/pony-hp/XENO-BOX/XENO-BOX_13.JPG

おまいらこれでも見ておちけつ。

177 :デフォルトの名無しさん:04/06/27 19:56
>>169
そうですか。あなたの大切な会話が終わってしまいましたね ;-)

178 :デフォルトの名無しさん:04/06/27 19:56
え、まだやってんの っつーかスレ伸びすぎ
>マルチって何法に抵触なんだ?
しょっぱなのこのレスが物語ってるな


179 :デフォルトの名無しさん:04/06/27 19:57
>>165
ひゅーひゅー!こーくはく!こーくはく!

180 :デフォルトの名無しさん:04/06/27 19:57
「2CHなんて社会のゴミの集まりですから悪口いわれても気にすることないですよ」

181 :デフォルトの名無しさん:04/06/27 19:57
>>175も読めない方は精神科に逝ったらどうですか。

182 :デフォルトの名無しさん:04/06/27 19:58
>>172
> 聞き方が気に入らないから答えない
まぁいいですよ。
あなたの問題提起をあなたが「続けないもんね!」とやっても、
こちらはノーダメージどころか、見ててオモシロいだけなので ;-)

183 :デフォルトの名無しさん:04/06/27 19:58
僕、法律のことはあまりよく知らないのですが、これってマルチ商法の話ですよね?

184 :デフォルトの名無しさん:04/06/27 19:59
ちょっと聞きたいんだが、マルチポストを嫌う奴は、
(1) 自分の覗いた(常駐している)スレにマルチポストされるのが嫌だ。
(2) マルチポストに自分以外の誰かが回答することが嫌だ。
(3) マルチポストに回答することが嫌だ。
のどれよ?ちなみに俺はどれにも当てはまらない。

185 :デフォルトの名無しさん:04/06/27 19:59
でも好きな子の名前告白しちゃうとgoogleのイメージ検索で本人がヒットしちゃうんだよな・・・

186 :デフォルトの名無しさん:04/06/27 19:59
>>182-184

>>175を読め

187 :デフォルトの名無しさん:04/06/27 19:59
>>179
コラー
お前らもう寝る時間だぞ!

188 :デフォルトの名無しさん:04/06/27 20:00
>>185>>187

>>175を読め

189 :デフォルトの名無しさん:04/06/27 20:00
>>182
1つのレスに対して答えないことが
何で提起した問題全部の放棄になるんだよ
見ててオモシロイをそのまま返してやる

190 :デフォルトの名無しさん:04/06/27 20:00
>>184
俺は1かな

191 :デフォルトの名無しさん:04/06/27 20:01
>>189-190

>>175を読め

192 :デフォルトの名無しさん:04/06/27 20:01
>>188
気持ちは分かるが、祭りがおさまるまでは待つしかないと思われ。

193 :デフォルトの名無しさん:04/06/27 20:01
>>186
やっぱりすれ違いだよな。スマソ
ずっと気になってたもんでつい…

194 :デフォルトの名無しさん:04/06/27 20:01
>>187
やべっ、先生だ!


    お ま え ら ネ タ フ リ し ろ



195 :デフォルトの名無しさん:04/06/27 20:02
>>192
このスレッドに居る糞糞糞住人が消えても仕方ありません

196 :デフォルトの名無しさん:04/06/27 20:02
>>191
おちけつ。とりあえずsageてくr

197 :デフォルトの名無しさん:04/06/27 20:02
>>194

>>175を読め

198 :デフォルトの名無しさん:04/06/27 20:02
>>189
> 1つのレスに対して答えないことが
> 何で提起した問題全部の放棄になるんだよ
何で「提起した問題全部の放棄」なんて話をしだすのかがまったくわかりません。
同じ言葉を繰り返したくはありませんが、あなたのレスは本当に意味不明なんですよ :-P

> 見ててオモシロイをそのまま返してやる
返そうとするのは自由ですよ。当てはまってはいませんけど。

199 :デフォルトの名無しさん:04/06/27 20:03
なんだよ、告白しようと思ったら終焉かよ

200 :デフォルトの名無しさん:04/06/27 20:03
>>198-199

>>175を読め

201 :デフォルトの名無しさん:04/06/27 20:04
基地外さんは無駄に元気なのが通例だから、
この辺で放置しようぜ > ALL

あとは基地外が一回勝利宣言して、それをみんなが心の中で馬鹿にして終了だ。

202 :デフォルトの名無しさん:04/06/27 20:04
>>200
…… age 荒らし認定

203 :デフォルトの名無しさん:04/06/27 20:04
>>201-202

>>175を読め

204 :デフォルトの名無しさん:04/06/27 20:05
そんなことより俺は前スレの955の続きが気になるんだが

205 :デフォルトの名無しさん:04/06/27 20:06
>>198
こっちも問題提起を続けないとは言ってない
お互い意味不明のまま平行線だな

206 :デフォルトの名無しさん:04/06/27 20:06
マルチポストをしたらスレのサイズが10倍に!?

207 :デフォルトの名無しさん:04/06/27 20:06
>>204-205

>>175を読め

208 :デフォルトの名無しさん:04/06/27 20:08
>>204
非 static 配列メンバ変数をコンストラクタ中で初期化したいって話?
配列じゃなくて std::vector 使えば簡単だが。

209 :デフォルトの名無しさん:04/06/27 20:08
>>206>>208

>>175を読め

210 :デフォルトの名無しさん:04/06/27 20:09
>>184
マルチするような質問者自身が気に入らない、行為の問題ではない

211 :デフォルトの名無しさん:04/06/27 20:09
>>206
環境によるだろ。
俺はOpenJane Doeに NGワード オプションを指定して、極力
糞レスを見ないようにして使っているが、例えば>>207みたいなのが
現れても現れていない時と比べ10Kほどしか増えない。

212 :デフォルトの名無しさん:04/06/27 20:10
>>210-211

>>175を読めよカス

213 :デフォルトの名無しさん:04/06/27 20:24
>>204
非 static 配列メンバ変数をコンストラクタ中で初期化したいって話?
配列じゃなくてPerl使えば簡単だが。

214 :デフォルトの名無しさん:04/06/27 20:28
クラス名やメソッド名を取得するにはどうしたらよいでしょうか?

具体的にやりたいこと。
class X {
public:
 virtual void a() {
  // ここで "X#a()" と表示したい
 }
};


215 :デフォルトの名無しさん:04/06/27 20:29
intへのポインタ の2次配列を new したい。
どうすればよいか.

216 :デフォルトの名無しさん:04/06/27 20:31
>>215
int *i[][] = new *int[100][100];

217 :デフォルトの名無しさん:04/06/27 20:37
>>216
氏ねカス

218 :デフォルトの名無しさん:04/06/27 20:39
>>216 ありがとう.でも
incompatible types in assignment of `rgb* (*)[((height - 1) + 1)]' to `rgb*[0][0]'

と怒られる.
rgb *colmap[][];

colmap = new rgb*[width][height];
としているのに.

219 :デフォルトの名無しさん:04/06/27 20:39
>>214
BOOST_CURRENT_FUNCTIONを使うと楽

220 :デフォルトの名無しさん:04/06/27 20:41
逆か!

colmap = new *rgb[width][height];

でもこうしても怒られる.
parse error before `*' token

221 :デフォルトの名無しさん:04/06/27 20:51
>>216
main()
{
int *i[][] = new *int[100][100];
}

declaration of `i' as multidimensional array must have bounds for all dimensions except the first
と言われた.

少しずつ定義するしかなさそうですね.
>>219
今度使ってみます.ありがとう

222 :デフォルトの名無しさん:04/06/27 21:02
>>217
お前が氏ねカス
クズクズクズクズクズクズクズクズクズクズクズクズクズクズ

223 :デフォルトの名無しさん:04/06/27 21:12
>>214
int ***a, i;
a=new int**[10];
for(i=10; i<10; i++) a[i] = new int*[10];
でいけた.
int ***a = new int*[10][10]はだめぽでした.

224 :デフォルトの名無しさん:04/06/27 21:23
>>215
二次元配列の特性上ムリ

代案↓

int **p=new int*[WIDTH,HEIGHT];

for(int y=0; y<HEIGHT; y++){
for(int x=0; x<WIDTH; x++){
p[WIDTH*y+x]=NULL;
}
}

225 :デフォルトの名無しさん:04/06/27 21:23
>>222
コンパイルが通るソース貼ってから言えカスカスカスカスカスカスカス

226 :デフォルトの名無しさん:04/06/27 21:24
×int **p=new int*[WIDTH,HEIGHT];
○int **p=new int*[WIDTH*HEGIHT];

227 :デフォルトの名無しさん:04/06/27 21:25
>>215
2次元以上の配列へのポインタは、2次元目以降の要素数を使わないと表現できないよ。
1次元目は「その配列へのポインタ」ということになる

正解は
 int* (*i)[20] = new int *[10][20];
です

この場合、newは int* (*)[20] … ★を返してくるから左辺もその型にしないとだめ。
これが冒頭の「2次元目以降の要素数を使わないと表現できない」のことを言っている。
# 左辺で20という数字を使っていること

★の (*)[20] の部分は「intへのポインタを20個持つ1次元配列」と考えます。
そして、その左のint* はその配列(つまり(*)[20]のこと)へのポインタであると考えます。

1次元配列の時は要素数を全く気にしなくてよかったけど、
それは2次元以上になっても、1次元目は要素数を気にしなくて良いのと同じ事です。

この場合、iは「20個の要素を持つ配列へのポインタ」なので、
iをインクリメントすると、20×sizeof(int)の分だけ加算されます。
つまり、iが[0][20]のアドレスを指していたら、i++すると次は[1][20]を指すということ。

newで[10]個分しか領域を確保してないから
ポインタをインクリメントして行き10を越えるとアクセスエラーになるので注意です。
# これは1次元でも同じだよね?

ちなみに単なるintを持つ2次元配列で良いなら
 int (*i)[20] = new int [10][20];
こうなります。intへのポインタの配列と比較してみましょう。

最後に、mail欄に半角でsageと書いてね。以上。

228 :デフォルトの名無しさん:04/06/27 21:30
>>214
汎用的な方法はない。gcc 限定で良いなら __PRETTY_FUNCTION__ で拾える。

229 :デフォルトの名無しさん:04/06/27 21:36
>>222には、自分がカスかもしれないという不安感が根底にあるんだろう。
それを払拭するためにクズを連呼した、と。
そんなに自分に否定的になるな。カスなんかじゃないから安心しろ。

230 :デフォルトの名無しさん:04/06/27 21:38
カスといってからk
175読め俺。

231 :デフォルトの名無しさん:04/06/27 23:49
テクにおぼれないで、もっとシンプルにコーディングすればいいのに。。。

232 :デフォルトの名無しさん:04/06/28 03:31
>>223>>215 へのレスでした.

>>224
なるほどフラットにしてしまうのもありですね.

>>227
丁寧なレスをありがとう.
でも動的にしたいからこの方法はちと無理でした.
sageときます.すまん


233 :デフォルトの名無しさん:04/06/28 04:41
あれだ。折角C++なんだし
boost::multi_arrayとかstd::vectorとか使えばいいじゃないか。

234 :デフォルトの名無しさん:04/06/28 07:19
>>228
>>219

235 :デフォルトの名無しさん:04/06/28 20:04
オブジェクトでスレ検索したけどネタっぽいスレが多いので
このスレで質問させてください。
現在C++でいくつか自分用アプリを作っていて、ある程度C++
の基本的な文法は分かるようになりました。
しかし、何度作っても納得できるようなクラス設計が出来ま
せん。
やはりこの手のことにはセンスが必要なのでしょうが、セン
スに欠ける凡人(俺のような)でも、「こうこう、こういう
方針でクラス設計するべし」といった一般論を分かりやすく
解説した書籍やサイト(日本語)を探しています。
何かお薦めのものがあれば紹介して頂けないでしょうか?

236 :デフォルトの名無しさん:04/06/28 20:11
>>235
センスに欠けてちゃどんな方法論も空疎な束縛にしかならないよ

それより、お前さんは自分が作ったクラスの
どんなところに納得いかないんだい?

珍しくスレタイにぴったりの客人さん

237 :デフォルトの名無しさん:04/06/28 20:18
分析が済んでないから設計できないんでしょうよ

238 :デフォルトの名無しさん:04/06/28 20:22
>>235
俺が読んで身になったと思ったのは、これ
http://www.1point.jp/~book_2ch/program/oo_uml.html#fundamentals_of_computing_cpp


239 :デフォルトの名無しさん:04/06/28 20:29
お邪魔します。。
MPIというのを理解(ある程度)してくるよう先輩に言われたのですが、
だいたいの構造といいますか方法、というのは分かりました。。
でもやっぱり使ってみないと心配でしょうがありません・・・
Widndows上で、エミュレータのように動くソフトはないものでしょうか。。
もしくはネットを使って動くようなものはないでしょうか。。
構造的に存在しないかとは思うのですが、気になってしまいます・・・
ほかの板に書くとノンレスでしたのでこちらに来させていただきました。。
勝手ながら、どうか御教授お願いします。。。

240 :235:04/06/28 20:31
>>236
> それより、お前さんは自分が作ったクラスの
> どんなところに納得いかないんだい?
納得がいかないというか、取っ掛かりが良く分からないのです。
たとえば電卓を作るとして、どんなクラスを作ればよいのか?と
考えだすと右も左も分からない状態です。
結果、細かいところからクラス設計に取り掛かってしまい、最終
的に電卓が出来上がるころには、いろいろなクラスの寄せ集め
見たいになってしまい、全体としての一貫性がないのです。
トップダウンで設計するべきといわれてもなかなかイメージが湧
きません。
そこで、センスが並か並以下の人間でもこういう方針、法則で設
計すれば比較的理路整然とした構成になりやすい、みたいな一
般的な手順を知りたいのです。

>>238
ありがとうございます。本屋で探してみます。

241 :デフォルトの名無しさん:04/06/28 20:42
電卓を作るとして、どんなクラスを作ったらいいのか↓答えよ。正解はメル欄

242 :デフォルトの名無しさん:04/06/28 20:44
これで完璧

243 :デフォルトの名無しさん:04/06/28 20:48
>>241
電卓は、クラス階層考えるより状態遷移が難しいぞ。四則演算の数式を
パースする方が遙かに楽。

244 :デフォルトの名無しさん:04/06/28 21:09
>>243
答えになっていません

245 :デフォルトの名無しさん:04/06/28 21:20
てsてs

246 :デフォルトの名無しさん:04/06/28 21:23
>>240
クラス設計というより構造化設計にも共通するハードルだな
お前さんも言っているとおり、細部からボトムアップすると
最後にまとめる段階で収拾つかなくなっちまうんだよ。

ウォーターフォールとまでは言わないが、
まずトップレベルから着手してみて
「こんなクラスないかな〜」って発想を大事にしながら
下請けのクラス作ってみ。

共通基底クラスで実装継承は、構造化で言うところのサブルーチン化
インターフェイス継承は、関数ポインタを使うときと考え方が似てるよ。

247 :デフォルトの名無しさん:04/06/28 21:24
>>244
答えになってません馬鹿糞ゴミ

248 :デフォルトの名無しさん:04/06/28 21:28

       人
      (__)
      (__)
ウンコー  (・∀・,,)
     O┬O )
キコキコ ◎┴し'-◎ ≡
             \     ∩__∩
               \   /     ヽ
                \ |●  ●  |
                   \(_● _)   ミ ̄ ̄ ̄ヽ___,-、     (´;;⌒  (´⌒;;
                   .. |∪|   ___   ───⌒ヽ(´⌒;;(´⌒;;
                    ヽノ-、____)───(´⌒(´⌒;;     ズサ────



249 :デフォルトの名無しさん:04/06/28 21:57
今見て大雑把に考えた奴だと

計算状態保持部
結果表示部
メモリー部
入力部
それらのFacade部

こんな感じに大雑把に考えて細部もっと細かく落としてく
なるべくその部分に責任をもたせ他の人の事を知らないようにするのが自分の基本。
他の人のやり方はシラネ

250 :デフォルトの名無しさん:04/06/28 22:18
てか、まぁ、>>235氏にはオブジェクト指向の入門書読みなさいと。
一昔前なら結城本が定番だったのだけど、今はどうだろ?
あと、禿本その他も手元に置いてぼちぼち読みなさいねと。

結城本:ttp://www.amazon.co.jp/exec/obidos/ASIN/4881356194/
禿本その他は>>5

251 :デフォルトの名無しさん:04/06/28 23:29
Tucker!って結城氏だったの?

252 :デフォルトの名無しさん:04/06/29 00:15
>>435
日経ソフトウェアの「ゼロから学ぶソフトウエア設計」を読んでみるのもいいんではないでしょうか?

253 :デフォルトの名無しさん:04/06/29 01:26
>>235
ほんとうに基礎的なことだけど
フローチャート書いて
考えまとめてから取り掛かれば、いいんじゃない?

254 :デフォルトの名無しさん:04/06/29 01:38
釣りはご遠慮ください。

255 :デフォルトの名無しさん:04/06/29 02:43
複数のクラス群、
( A1, B1, C1 ), ( A2, B2, C2 ), ( A3, B3, C3 ), ... をポリシーっぽく使って、
template< typename A, typename B, typpename C >
class SomeFunc {
private:
A a;
B b;
C c;
};
にインスタンスを作ってファンクタとして使っています。
今、新しく、( Anew, Bnew, Cnew ) を作成する必要が出たのですが、
Cnew は、Anew のメンバ関数を使用することになってしまいました。
CnewのコンストラクタにAnewのポインタか参照を渡せば済むことなのですが、今までの
クラスを互換性がなくなってしまいます。この場合、どのようにしたらいいのでしょうか?
古い、クラス群にダミー引数を渡せば済むのでしょうが美しくないと思ったので質問しました。

256 :デフォルトの名無しさん:04/06/29 03:00
class ChasA:SomeFunc<A,B,C>{
 ChasA::ChasA():c(a){}
}
思いつきだけどこんな感じじゃだめ?かき方間違ってるかも知らんけど

257 :デフォルトの名無しさん:04/06/29 03:50
仮にchar *choice = new char[10];
というchar型配列へのポインター choice があったとして、
コンマ ',' をデリミネーションとして複数の数値をインプット
したいんだけど(例:1, 3, 4 で1と3と4がインプットされる)
文字列としてインプットさせて、strtokでコンマごとに区切り、
atoiで数値化するという方法でならできたけど、こうやらないと
できないの?
get()とかgetline()の使い方が今一よく分からないからかも。。。
もしそういうの使った簡単な方法知ってたら教えてくだされ誰か。

258 :デフォルトの名無しさん:04/06/29 05:31
boost::tokenizer とか。

259 :デフォルトの名無しさん:04/06/29 09:45
boost::spirit とか。

260 :デフォルトの名無しさん:04/06/29 14:35
std::istringstream とか

261 :デフォルトの名無しさん:04/06/30 10:41
動的配列で初期化を与える場合、書式は
new 型名 [配列サイズ] (初期値);
でいいの?

262 :デフォルトの名無しさん:04/06/30 10:48
>>261 だめです。

263 :デフォルトの名無しさん:04/06/30 13:27
外部クラスを利用するところでつまづいて困っています。
KNekoクラスを外部に用意しておきメインのcppファイルで利用したいのですがコンパイルに成功しません。
よろしければアドバイスお願いします。

コードです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_18/class.txt

264 :デフォルトの名無しさん:04/06/30 13:36
#include <string>
class KNeko{
private:
-string name;
+std::string name;
public:
-void SetName(string n);
+void SetName(std::string n);
void Naku();
};


265 :デフォルトの名無しさん:04/06/30 13:47
>263
using namespace std
の位置を考えろ。意味を考えろ

266 :デフォルトの名無しさん:04/06/30 13:53
>>264-265
どうもありがとうございます。
using namespace std;はcoutをstd::なしで使うために書くのではないのでしょうか?
そうとしか入門書にはなかったので。
入門書には乗ってなかったですが#include <string>をつかえば文字列を記憶できる変数型stringを作れるとしか理解してないです。

267 :デフォルトの名無しさん:04/06/30 13:56
STLの本を読むことをすすめる
stringもstlだ

268 :デフォルトの名無しさん:04/06/30 14:06
歴史的にはstringはSTLじゃないし、std名前空間に属するのは"全てのC++標準ライブラリ"だ。

あとまぁSetName()はvoid SetName(const std::string& n);にすべきだな。

269 :デフォルトの名無しさん:04/06/30 14:20
>>267-268
標準ライブラリについてもう少し勉強したほうがよさそうなんで本でも買って勉強したいと思います。
constって普段から使う癖をつけたほうがいいんでしょうか?
まだDOSプロンプトでしか動かない小さなプログラムしかやったことがないのであまり意識をしたことがないのですが。

270 :デフォルトの名無しさん:04/06/30 20:13
文字列の内容によって場合わけをする場合って、switch文でやりたいのが
人情かと思うのですが、言語仕様で無理ですよね?
とすると、普通の配列だったらstrcmpかなんかを使って、stringだったら
=="???"とかで比較をしてひたすらif ... else if ... else if ... else
ってやってくしか方法はないのですよね?

271 :デフォルトの名無しさん:04/06/30 20:17
>>270
ハッシュ法というのを使うと、ましな比較ができることもありますよ

272 :デフォルトの名無しさん:04/06/30 21:21
ああハッシュというのがありましたね。
ただシノニムが発生すると一意な場合わけってできないのかな?

273 :デフォルトの名無しさん:04/06/30 21:26
>>272
gperfというツールもありますよ

274 :デフォルトの名無しさん:04/06/30 21:34
>>270
比較コストの問題なら、文字列を(読み込む等して)構築した段階で文字列テーブルに登録して、
あらかじめ一意のIDをつけておくというやり方もあります。登録単位を atom とか呼ぶことが多いです。
こんな感じ。

string_id register_string(const string& str); // テーブルに登録してIDを返す。既にある場合には既存のIDを返す。

static string_id apple_id = register_string("apple");
static string_id orange_id = register_string("orange");

void some_eater(string_id str)
{
 if (str == apple_id || str == orange_id) cout << "eat!";
}


275 :デフォルトの名無しさん:04/06/30 21:38
>>270
字面の好き嫌いのレベルの話ならif else連ねるしかないよ。
いちいちデータ構造作ってやるのは無駄。

276 :デフォルトの名無しさん:04/06/30 21:45
>>270
switch(str[0])
{
 case: 'a':
  switch(str[1])
  {
   case 'p':
    switch(str[2])
     ・
     ・
     ・
   case 'm':
  }
 case: 'o':
  ・
  ・
  ・
}


277 :デフォルトの名無しさん:04/06/30 21:49
>>276
途方もないな

278 :デフォルトの名無しさん:04/06/30 21:54
map<string, 関数ポインタ>で処理させればいいやん。

279 :デフォルトの名無しさん:04/06/30 22:01
60秒毎にメッセージを表示することはできますか?
FAQにあったのですがclockは精度が悪いらしいので・・・

280 :デフォルトの名無しさん:04/06/30 22:02
boost::timer

281 :デフォルトの名無しさん:04/06/30 22:03
>>279
環境依存なので OS や GUI/CUI 別を明記しないと何とも言えないかと。
そして Win32 なら Win32 APIスレ、UNIX なら UNIX プログラミングスレに
行った方が良いと思う。

282 :デフォルトの名無しさん:04/06/30 22:04
>>278
boost::function使えよ

283 :デフォルトの名無しさん:04/06/30 22:06
MS-DOSみたいな感じなんですよね・・・ユーザにコマンド打たせて
それに応じた処理をする。ああいうのはやっぱりテーブル用意してるのかな?

284 :デフォルトの名無しさん:04/06/30 22:06
>>281
よくわからないんで諦めます・・・

285 :デフォルトの名無しさん:04/06/30 22:07
60秒も待つならtimeで十分だろ。
精度1秒

286 :デフォルトの名無しさん:04/06/30 22:11
timeより精度が低いclockってあるのか?

287 :デフォルトの名無しさん:04/06/30 22:14
>>283
#define DISPATCH(command) else if(line == #command) exec_##command();

288 :デフォルトの名無しさん:04/06/30 22:55
おお、Cチックにやるやり方ですね。

289 :デフォルトの名無しさん:04/06/30 23:11
>>288
何がCチック?

290 :デフォルトの名無しさん:04/06/30 23:14
>>288的に考えるとboost::preprocessorはCチックだ。

291 :test:04/07/01 14:22
test

292 :デフォルトの名無しさん:04/07/01 14:28
ちょっと教えてほしいのですが。

ネットワークプログラミングをしております。(そんな対したものじゃないんですが)
そしてtelnetクライアントからコマンドを入力したら。そのコマンドに対応する
関数を呼び出したいのですが…

if(strcmp(cmd,"Hello")==0){
ReturnHello();
}else if(strcmp(cmd, "ls")==0{
ReturnFileList();
}else if(strcmp(cmd, "cd")==0{
ChangeDir();
}(以下続く)

今現在、こんな風になっています。これでは効率が悪いとおもうのですが。
どなたかよい解決方法をご存知ないでしょうか…。

この長いif文はクラス内に記述されています。

293 :292:04/07/01 14:31
やばっ。
ちょうどいい具合に上にヒントらしきものが…申し訳ありません…

294 :デフォルトの名無しさん:04/07/01 14:46
c言語なんですが課題で出て、まじ分かんなくて助けてほしいです!
このままじゃ赤点になってまう!!
二問あるけど、神な人教えて〜

1.各月の日数を格納した整数型の配列を定義してください。これを利用して、年、月、日を読み込んで、それが年の最初から何日目であるかを表示するプログラムを作成しましょう。
ただし、閏年の規則は、以下の規則で規定されるものとします。

@西暦の年号が4で割り切れる年は閏年。
A@には当てはまるが、西暦が100で割り切れる年は閏年ではない。
B@にもAにも当てはまるが、西暦が400で割り切れる年は閏年。

2.1に以下の機能を追加してください。
1のデータを表示したあとに、その年のその月のカレンダーを表示する機能。カレンダーはfor文の入れ子を使用してみましょう。(使わなくてもできますが。)

その月の1日の曜日が分かれば、カレンダーを作成できます。曜日を調べるのには、以下の文をどこかに挿入してください。曜日を調べる部分は、関数にしてもかまいません。
曜日は、変数retに代入された値で分かります。次の通りです。

日曜日月曜日火曜日水曜日木曜日金曜日土曜日
0123456

  int ret;

if (m == 1 || m == 2) {
y--;
m += 12;
}
ret = (y + y/4 - y/100 + y/400 + (13*m+8)/5 + d) % 7;
yは入力された年、mは入力された月,dは曜日を調べたい日です。1日の曜日を調べたいわけですから、このdには…


295 :デフォルトの名無しさん:04/07/01 14:53
スレちがいすまそ…

296 :デフォルトの名無しさん:04/07/01 15:59
引数で参照をつかうのとポインタを使うのに違いはあるの?

297 :デフォルトの名無しさん:04/07/01 16:00
nullが突っ込めるかどうかだけ

298 :デフォルトの名無しさん:04/07/01 16:00
>>296
ポインタだと NULL (0) を渡せる。

299 :デフォルトの名無しさん:04/07/01 16:24
>>297-298
ありがd

NULLね〜。
今のところ記にする必要なしだな〜


300 :デフォルトの名無しさん:04/07/01 16:46
山椒でも*static_cast<T*>(0)で渡せるけどな

301 :デフォルトの名無しさん:04/07/01 17:00
STL って、インターネットで公開されてるコードや、Microsoft とかのコードを見ても
ほとんど見かけないんですが、何か理由があるのでしょうか?

知名度が低くて使われていないだけ?

302 :デフォルトの名無しさん:04/07/01 17:03
>ほとんど見かけないんですが

そうか?
APIの解説ページとかならあまり使われはしないだろうが

303 :デフォルトの名無しさん:04/07/01 17:03
>>301がネタなのか釣りなのか天然なのかで答えが変わってくるけど
どれ?

304 :デフォルトの名無しさん:04/07/01 17:20
わしの周りでもあんまりプロダクトに使ってる人居ない(Cから来た古い人に多い、でもjavaは早う1.5出ろいうのはどういうこと?)
わしは便利なんでガシュガシュ使うんだけど。



305 :デフォルトの名無しさん:04/07/01 17:27
STLは構文が汚いからね
vecter<int> <>になじみが無い。

306 :デフォルトの名無しさん:04/07/01 17:44
STLって、exeの容量が増えるってほんと?

307 :デフォルトの名無しさん:04/07/01 17:45
>>306
あと700レス待ってくれ

308 :デフォルトの名無しさん:04/07/01 17:46
>>305
そこで typedef ですよ。

309 :デフォルトの名無しさん:04/07/01 18:01
>>305
stack<hoge, dequeue<hoge> >

310 :デフォルトの名無しさん:04/07/01 18:02
templateの構文で嫌なのは

stack<hoge, dequeue<hoge> >
                  ^

これだけだな

311 :デフォルトの名無しさん:04/07/01 18:06
>>310
dequeueも嫌だ。

312 :デフォルトの名無しさん:04/07/01 18:09
>>301
Microsoft の VC では、ちょっと前のバージョンまであまりマトモに stl が動かなかったから、
Windows 用のコードで初出が古いものではあんまり使ってないと思う。
あと C プログラマ上がりの「C++プログラマ」は、stl 使わないというか使えない奴が多い。

313 :デフォルトの名無しさん:04/07/01 18:10
いまだにtemplateを素で書けないw


314 :デフォルトの名無しさん:04/07/01 18:17
テンプレートのないC++なんて...

315 :デフォルトの名無しさん:04/07/01 18:26
>>312
vector<string> hoge;
程度で「デバッグシンボル永杉」とかワーニング吐くしなー。
機能には関係ないとはいえ、あれで気分的に萎えた奴もいると思われ。

ちなみに俺は、iostreamは使わないけどSTLは使う派。

316 :デフォルトの名無しさん:04/07/01 18:27
iostreamはprintfより何倍も遅いしな

317 :デフォルトの名無しさん:04/07/01 18:34
>>310
hoge が2回は?

318 :デフォルトの名無しさん:04/07/01 18:36
C++は正しいコードでもコンパイルが通らなかったりするのがヤダ。

319 :デフォルトの名無しさん:04/07/01 18:57
クラスの敬称関係で躓いているのですが「'Income' : 'const class SMan' から 'class SMan &' へ 'this' ポインタを変換できません。
変換で修飾子が失われます。」
となりどうも上手くいきません。
ポインタもアドレスも使用していないのでどうしてこんなエラーが出るのかわからず困っています。
よろしければご指導お願いします。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_19/q.txt

320 :デフォルトの名無しさん:04/07/01 19:00
>>319
これ、コバケンの本だろ?

321 :デフォルトの名無しさん:04/07/01 19:02
>>319
×int Income() {return salary * 12;}
○int Income() const {return salary * 12;}

322 :デフォルトの名無しさん:04/07/01 19:03
>>319
SMan::ShowData は const メンバ関数なので、非 constなメンバ関数 Income は呼べません。
Income を const メンバ関数にすべきでしょう。

あと、const がらみでは、SetName のパラメータは const string& n とするのが通例です。

323 :デフォルトの名無しさん:04/07/01 19:16
>>321-322
ありがとうございます、早速試してみます。

>>320
そのとおりです。

324 :デフォルトの名無しさん:04/07/01 19:26
ショボイコンパイラ使ってるな。
行番号位出ないのかよ。
こんくらい情報が出るコンパイラ使えよ(g++)。

a.cpp:38: error: passing `const SMan' as `this' argument of `int
SMan::Income()' discards qualifiers


325 :デフォルトの名無しさん:04/07/01 19:51
>>324
非標準拡張の最右翼だろw

326 :デフォルトの名無しさん:04/07/01 19:53
-ansi -pedantic

327 :デフォルトの名無しさん:04/07/01 21:16
>>325
g++は右翼っていうより左翼じゃない?

328 :デフォルトの名無しさん:04/07/01 21:21
>>327
さいうよく [3] 【最右翼】
〔士官学校などで成績順に右から並んだことから〕競い合っているものの中で、最も有力なもの。
「今年度賞金王の―」
三省堂提供「大辞林第二版」より


329 :デフォルトの名無しさん:04/07/01 21:42
>>325
>「'Income' : 'const class SMan' から 'class SMan &' へ 'this' ポインタを変換できません。
>変換で修飾子が失われます。」
こっちが最右翼(VC++)だと言ってるんだろ。

330 :デフォルトの名無しさん:04/07/01 21:45
本当に行番号が出ないと思ってるっぽいのが笑える

331 :デフォルトの名無しさん:04/07/01 21:47
>>329
本当?


332 :デフォルトの名無しさん:04/07/01 22:17
行番号なんて出ないでいいしな

333 :デフォルトの名無しさん:04/07/01 22:18
ミスッタ

334 :デフォルトの名無しさん:04/07/01 22:22
>>300 それ未定義

335 :デフォルトの名無しさん:04/07/01 23:19
>>300
それは未定義動作だが。いきなりプログラムが吹っ飛んでも文句言えんぞ。

336 :デフォルトの名無しさん:04/07/02 00:04
鼻から悪魔が出てきても(ry

337 :デフォルトの名無しさん:04/07/02 00:06
>>300
それは未定義動作だが。いきなりブッシュが核ボタン押しても文句言えんぞ。

338 :デフォルトの名無しさん:04/07/02 00:07
>>300
ポインタ理解しててもそれは吐血するほど未定義だぞ

339 :デフォルトの名無しさん:04/07/02 02:34
define ABC
と値を指定しないでデファインするとABCの値は何になってるのでしょうか?。


340 :デフォルトの名無しさん:04/07/02 02:39
>>339
そのABCを使ってみれば分かると思うが、なし。

341 :デフォルトの名無しさん:04/07/02 13:26
お世話になります。

数値をstring型変数に代入するにはどうしたらよいでしょうか?
いまはsprintfで変換してから代入しています。
int i = 100;
string s;
s = "abc = ";
s += i;
という使い方はどうすればよいですか?


342 :デフォルトの名無しさん:04/07/02 13:30
s += i;

s += boost::lexical_cast <string> (i);


343 :デフォルトの名無しさん:04/07/02 13:42
>>341
class stringex : public string
以下がんばる。

344 :デフォルトの名無しさん:04/07/02 13:49
>>341
#!/usr/local/bin/pike

345 :デフォルトの名無しさん:04/07/02 14:56
教えていただきたいのですが、
memsetっていうのはどういう働きをするのでしょうか?
できれば、サルでもわかるような説明をお願いします。

346 :デフォルトの名無しさん:04/07/02 14:59
メモリそのままのコピー

347 :デフォルトの名無しさん:04/07/02 15:00
memcpyかw スマソ

348 :デフォルトの名無しさん:04/07/02 15:03
サンプル見たほうが速いかな
ttp://www9.plala.or.jp/sgwr-t/lib/memset.html

349 :デフォルトの名無しさん:04/07/02 15:16
教えていただきたいのですが、自分自身のクラス名を取得する方法ってあるのでしょうか?
クラスの型名や、メンバ関数名の取得方法は理解できたのですが。。。

350 :デフォルトの名無しさん:04/07/02 15:18
ありがとうございました☆
これを見て勉強します!!

351 :デフォルトの名無しさん:04/07/02 15:26
「クラス名」と「クラスの型名」の違いは何ですか?

typeid (hoge).name ();
とかではなくて?


352 :デフォルトの名無しさん:04/07/02 15:37
>>351
class hoge
{
public:
hoge(void);
virtual ~hoge(void);
};

hoge hogehoge;

だとすると 型名 hoge、変数名 hogehoge かと、
シロウトですみません。

353 :デフォルトの名無しさん:04/07/02 15:45
インスタンス名

354 :351:04/07/02 15:56
>>349
インチキですが,こんなのはどうでしょうか?
#include <iostream>
using namespace std;
class A {};
#define INSTANCE_NAME(arg) #arg
int main () {
A a;
cout << INSTANCE_NAME (a) << endl;
return 0;
}


355 :!= 349:04/07/02 16:04
そんな裏技があったのかw

356 :351:04/07/02 16:11
>>355
こういう反応は一番嬉しいですね.
わたしはこんな風に使ってます.
#include <iostream>
#define DOUT(arg) {std::cout << #arg << ": " << arg << "\n";}
using namespace std;
class A
{
int value_;
public:
A (int p): value_ (p) {}
friend ostream &operator << (ostream &p_os, const A &p_a) {return p_os << p_a.value_;}
};
int main () {
A a (10);
DOUT (a);
return 0;
}


357 :デフォルトの名無しさん:04/07/02 16:12
それはインスタンス名では?

358 :355:04/07/02 16:15
ホントだ、変数名では無理か。
てっきりプリプロセッサが影でconstしてるのかと思った。

359 :デフォルトの名無しさん:04/07/02 16:19
ところで>>349の「クラス名」と「クラスの型名」のちがいが
はっきりしてないんだが...

360 :351:04/07/02 16:20
>>357,358
なになに?
352のhogehogeを取得したいのではないの?


361 :デフォルトの名無しさん:04/07/02 16:22
実は例外処理で、同じクラス型からインスタンスを複数作り、
どのインスタンスでエラーが起きたか調べられるようにしたかったのですが。。。
typeid(*this).name;
を使っても分かるのはクラス型名でインスタンス名じゃなさそう。


362 :357:04/07/02 16:24
>>352読んでなかった。失礼。


363 :デフォルトの名無しさん:04/07/02 16:26
>>361
>>354

364 :デフォルトの名無しさん:04/07/02 16:30
>>354, 356
ありがとうございます、ユニークな方法ですね。w
でも例外処理で使うには、実行時にインスタンス名を知る必要があるみたいです。

#define INSTANCE_NAME(arg) #arg

を使うと、特定のインスタンスにしか対応できない。。。
__func__とか__FILE__みたいな組み込みマクロのように使える何かがあれば便利なんだけどな〜。


365 :351:04/07/02 16:36
>>364
何だか状況が良く掴めませんが,
「手動でインスタンスのidを振れば解決するんだけど,
インスタンスのidくらい自動で振ってくれないかな?」ってことなんでしょうか?


366 :デフォルトの名無しさん:04/07/02 16:43
class hoge
{
public:
hoge(void);
virtual ~hoge(void);

void output(void);
};

void hoge::output(void)
{
printf(インスタンス名 + '\n');
}

hoge hoge_A;
hoge hoge_B;

main
{
hoge_A.output();
hoge_B.output();

return 0;
}

を実行した時に、
hoge_A
hoge_B
と出力される事を目指しています。

367 :デフォルトの名無しさん:04/07/02 16:45
あ、いけね
main
じゃなくて
main()
ね。


368 :デフォルトの名無しさん:04/07/02 16:47
>>366
それはフライパンに自分で料理作ってくれというようなもんだ。

369 :デフォルトの名無しさん:04/07/02 16:49
インスタンスが 1 個だけなら上記の方法でもOKなんですが。。。
たくさんある場合は対応できない。


370 :デフォルトの名無しさん:04/07/02 16:49
そういうプロパティを持たせればいい

371 :デフォルトの名無しさん:04/07/02 16:50
デバッガ使えよ。
要はデバッグ用途だろ。

372 :デフォルトの名無しさん:04/07/02 16:50
>>368
やっぱ無理?(TT)
そう都合よくいかないか。。。


373 :デフォルトの名無しさん:04/07/02 16:52
デバッグって言うかトレースしたいんだろ

374 :デフォルトの名無しさん:04/07/02 16:52
Hoge hogehoge;
setInstanceNmae("hogehoge");


375 :351:04/07/02 16:55
>>366
これじゃだめ?
#include <iostream>
#include <string>
using namespace std;
class hoge
{
string name;
public:
hoge(const string &p_name): name (p_name) {};
void output(void) {cout << name << endl;}
};
#define CREATE_HOGE(name) hoge name (#name)
CREATE_HOGE (hoge_A);
CREATE_HOGE (hoge_B);
int main () {
hoge_A.output();
hoge_B.output();
return 0;
}


376 :デフォルトの名無しさん:04/07/02 16:58
>>372
無理。.NETならできそうな気がしないでもないような。

377 :デフォルトの名無しさん:04/07/02 17:07
>>375
おお、お?
コンパイルしてみたらうまくいきました。
ソースの内容は難しくて理解できてませんが。。。
これを元に勉強させてもらいます。
ありがとうございました。
ス、スゲェ〜。


378 :デフォルトの名無しさん:04/07/02 17:14
やってることは
hoge hoge_A; hoge_A.name = "hoge_A";
でしかないわけだが。

379 :デフォルトの名無しさん:04/07/02 17:22
配列の時はどうするつもりだろうか

380 :デフォルトの名無しさん:04/07/02 17:33
むむ、コンストラクタの引数に "hoge_A" を渡して、
それが name に代入されている、のかな?

hoge(const string &p_name): name (p_name) {};

こういう書式は初めて見た、コロンの後は何だろ?

配列ね。。この書式が理解できれば改造して何とか。
まだ理解できないが。(笑


381 :デフォルトの名無しさん:04/07/02 17:35
>>380
逃げろ!


382 :351:04/07/02 17:43
>>380
> hoge(const string &p_name): name (p_name) {};
> こういう書式は初めて見た、コロンの後は何だろ?
コロンの後はメンバー変数の初期化です.
nameに対して,p_nameを引数にコピーコンストラクタが呼ばれます.


383 :デフォルトの名無しさん:04/07/02 17:58
>>382
google してみました、コンストラクタ初期化子 っていうんだ、ふ〜ん。。。


384 :デフォルトの名無しさん:04/07/02 18:05
よくまぁ、のうのうと初期化子を初めてみたなんて言えるな。
最低限、C++をひととおりマスターしてから質問しようとは思わないのかね。
ここは入門スレかよ。

385 :デフォルトの名無しさん:04/07/02 18:10
完全な独学の場合、"自分が何を知らないか"を知らないんだよ。。。
正式にプログラミングの教育を受けた人には、その点で到底かなわないな。


386 :デフォルトの名無しさん:04/07/02 18:10
プッ
こんなところで玄人気取りかよ。みっともない

387 :デフォルトの名無しさん:04/07/02 18:15
???、自分がシロウトであることを告白してる訳だが。
妙につっかかってくるね、荒らしかな?、なら無視だが。


388 :デフォルトの名無しさん:04/07/02 18:20
>>385
逆じゃないの?

あ、日本での話ね。
米国の大学でコンピュータ工学の単位取ったとかなら、ありえるかも。

389 :デフォルトの名無しさん:04/07/02 18:22
仕様書を読むか読まないかの違いでしょ


390 :デフォルトの名無しさん:04/07/02 18:33
入手した参考書に全て書いてあるとは限らないし、
その書籍が不完全かどうか入手前に予測なんかできない。
正式に教育された人は、まずどんな知識があるのか、
先達から"知識の地図"をもらってから系統立てて学ぶでしょ。


391 :デフォルトの名無しさん:04/07/02 18:42
最初に変な本手に入れるからいけない。
C++Primerを読み切るまでは我慢する。これ。

392 :デフォルトの名無しさん:04/07/02 19:02
>>390
そんな教育受けたかったなあ。うちなんて・・・いやなんでもない。
次の方どうぞ。

393 :デフォルトの名無しさん:04/07/02 19:40
>>390
例えばM社の製品についてならM社純正のセミナーと試験・資格があったりするが、
C++ の場合の「正式な教育」とは何のことを言ってるんだ?

394 :デフォルトの名無しさん:04/07/02 19:44
勝手に勉強しろっていわれたんじゃなくて
授業やレクチャーを受けた奴のことを言うんじゃない

395 :デフォルトの名無しさん:04/07/02 19:49
正式な教育と言うか、「筋のいい」or「センスのいい」教育を受けたい。

396 :デフォルトの名無しさん:04/07/02 20:12
>>395
自分が受けた教育は「筋が悪い」or「センスのわるい」教育だったと言いたいわけか

397 :デフォルトの名無しさん:04/07/02 20:29
基礎プログラム課程1年
各分野での応用プログラム課程1年(全分野必須)
様ざまな分野で実際に活動している複数の講師が開く少人数セミナー課程1年(複数選択)
実践的な専門課程で1年(単数or少数選択)+卒業研究

…と、これくらいやれば「正式な教育」といえるかな?
自分で書いてて受けたくなってきた。
逆にこういう学校作ったら、受けるかもね?
(日本では無理?)

勤続年数の長い専属講師だけから受ける画一的な教育ってのが現状じゃないかな。


398 :デフォルトの名無しさん:04/07/02 20:30
ここは入門スレかよ。

399 :デフォルトの名無しさん:04/07/02 20:31
大作を志し10本挫折すれば、やっとどういうふうにいきあたりばったりなコードを書けば破綻するかわかってくる。

400 :デフォルトの名無しさん:04/07/02 20:43
>>397
受けりゃいいじゃん
第一線で活躍してる技術者を拘束できりゃいいんなら
そいつが働いてる会社(?)へ行ってビジネスとして交渉すればいい

俺もやったよ
あるハードの開発担当者本人を1時間2万5千円で半日くらい
1年は予算的に無理だったがなw

401 :デフォルトの名無しさん:04/07/02 21:07
横レス失礼します。
テンプレートクラスを使用するプログラムなんですけどコンパイルまでは問題ないんですが実行することができません。
よろしければご指導のほどお願いします。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_20/help.txt

402 :デフォルトの名無しさん:04/07/02 21:12
おまえら、この大学を受験したらどうだ?
http://www.cs.tamu.edu/news/items?id=771

禿が直接教えてくれるぞ

403 :デフォルトの名無しさん:04/07/02 21:25
禿にはセンスがない

404 :デフォルトの名無しさん:04/07/02 21:26
C++界に於いて、これ以上「正式な」講座があるか?

405 :デフォルトの名無しさん:04/07/02 21:28
>>401
export 宣言するか(コンパイラが対応してないとダメ) Game.cpp の定義を Game.h に直接書く。

406 :デフォルトの名無しさん:04/07/02 21:30
>>405
アドバイスありがとうございます。
export宣言ってのはどのようにやればよいのでしょうか?
よろしければ教えていただけないでしょうか・・・


407 :デフォルトの名無しさん:04/07/02 21:40
export template<class T> class Game 〜
んな感じ。でも殆どの処理系でサポートされてないからたぶん直接ヘッダに書く事になると思う。


408 :デフォルトの名無しさん:04/07/02 22:07
Mao.cppの #include "Mao.h" を消して
Mao.hで #include "Mao.cpp"

409 :デフォルトの名無しさん:04/07/02 22:08
export template<class T>
class Game{
private:
T m;
Hero h;
public:
Game();
void Play();
};

このようなエラーが出てしまいました。
Game.hをこのようにしたんですけど使い方が間違っているんでしょうかね・・・?
f:\c++\挫折しないプログラミング\game.h(1) : error C2143: 構文エラー : ';' が ''template<'' の前に必要です。
f:\c++\挫折しないプログラミング\game.h(1) : error C2501: 'export' : 識別名を宣言するのに、型が指定されていません。



410 :デフォルトの名無しさん:04/07/02 22:12
>処理系でサポートされてないから
と思われ

411 :デフォルトの名無しさん:04/07/02 22:40
>>410
どもです。
>>405
Game.cpp の定義を Game.h に直接書く場合はヘッダファイルは基のヘッダの定義の下にcppの内容をこぴーして貼り付ければよいでしょうか?
あとGame.cppの中はどうすればよいのでしょう。ヘッダファイルで定義してありますが同じ定義をしておけばよいのでしょうか?それとも何も書かないcppにするのでしょうか?

412 :デフォルトの名無しさん:04/07/02 22:41
>>411
>>408でいいじゃん

413 :デフォルトの名無しさん:04/07/02 22:47
Game.cpp
の最後に
template class Game<Mao>;
を追加でも可.


414 :デフォルトの名無しさん:04/07/02 22:48
>>411
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=export+template+c%2B%2B+%E5%87%A6%E7%90%86%E7ウ%BB&num=50

>>408でもいいけどね。

415 :413:04/07/02 22:49
413は401のオリジナルソースに対して.


416 :デフォルトの名無しさん:04/07/02 22:58
>>408の方法を試したらエラーが102個検出されました。。。


417 :デフォルトの名無しさん:04/07/02 23:01
全部のメソッドにinline指定入れろ

418 :デフォルトの名無しさん:04/07/02 23:04
>>396 いや、今までは完全に独学。
だから、自分のいる位置に自信がもてない。
苦労も必要だと思うけど、やっぱり学習効率を考えたら
センスのいいレッスンを受けたいと今だから思える。

419 :デフォルトの名無しさん:04/07/02 23:05
>>418
そこでオープンソースですよ。


420 :デフォルトの名無しさん:04/07/02 23:06
>>416
Mao.hの

****最後****

に #include "Mao.cpp"を追加。

421 :デフォルトの名無しさん:04/07/02 23:08
>>413のやりかたで動作しました。
ありがとうございます。
外部にあるテンプレートを使用したクラスを利用するときにはその内容を記述したcppの最後にtemplate class クラス名<ここの部分はなんていうんでしょう。。?>をつけてテンプレートを明示的にインスタンス化すればいいんですかね。

422 :デフォルトの名無しさん:04/07/02 23:27
>>421
<ここの部分はなんていうんでしょう。。?>
テンプレート引数

423 :デフォルトの名無しさん:04/07/03 00:05
STL は知ってたほうがいいというくらいのものでしょうか?
それとも知らないと話にならないというくらいのレベルのものでしょうか?

424 :デフォルトの名無しさん:04/07/03 00:06
真ん中くらい

425 :デフォルトの名無しさん:04/07/03 00:06
自分だけで完結してるなら知らなくても何とかなるやつもいるが、
普通は知らないと話にならない

426 :デフォルトの名無しさん:04/07/03 00:19
>423
STL,テンプレートなれるとすげぇ便利

427 :デフォルトの名無しさん:04/07/03 00:50
>>423
仕事で C++ プログラミングやるなら、さすがに知らないと辛い。

428 :デフォルトの名無しさん:04/07/03 01:01
>>423
listはよく使うかな。

429 :デフォルトの名無しさん:04/07/03 01:37
いまさらSTLコンテナを使わないってのはありえないぐらいには便利。
STLアルゴリズム方面のほうが面白いが。

430 :デフォルトの名無しさん:04/07/03 01:44
>>427
仕事でC++やってますが、STLなぞまったく使いませんが?

431 :デフォルトの名無しさん:04/07/03 02:00
>430
ある意味尊敬する。ないならC++使う意味ない。C#のほうがまし

432 :デフォルトの名無しさん:04/07/03 02:03
組み込みC++とかだとそもそもSTLが付いてなかったりする

433 :デフォルトの名無しさん:04/07/03 02:04
>>430
あえて使わないのか
使っちゃダメなのか
もともと使えないのか

434 :デフォルトの名無しさん:04/07/03 02:04
動的メモリ確保禁止の場合には使えんな

435 :デフォルトの名無しさん:04/07/03 02:05
スタック使うカスタムアロケータ書けばいいんじゃないの?

436 :デフォルトの名無しさん:04/07/03 02:06
もともと使えないのはただの馬鹿
あえて使わないのは大馬鹿

437 :デフォルトの名無しさん:04/07/03 02:23
Boostを使うのはどうなの?

438 :デフォルトの名無しさん:04/07/03 02:31
>437
つかっとけ。STLよりはマイナかも知らんが

439 :デフォルトの名無しさん:04/07/03 10:37
>>432
それ C++ じゃなくて EC++ だったりしないか?

440 :デフォルトの名無しさん:04/07/03 11:09
ここで言われたから無理やり使うのはすごい馬鹿

クラスも関数も使うかどうかは目的次第
どんなのがあるのかを知っておくことが
そーゆーこと聞く人が今やるべきこと

441 :デフォルトの名無しさん:04/07/03 11:21
javaで言うClassクラスを実現するにはどうしたらよいですか?

442 :デフォルトの名無しさん:04/07/03 11:26
RTTI

443 :デフォルトの名無しさん:04/07/03 11:39
Unko* unko = dramatic_cast<Unko*>(apple);

444 :デフォルトの名無しさん:04/07/03 11:49
>>443
>Unko*
ワラタ

445 :413:04/07/03 11:58
>>421
これでも良いって話で,明示的実体化はそんなには使わないんじゃないでしょうか.
普通exportがサポートされてないコンパイラでは,
(405,417)あるいは(408,417,420)のようにして,main関数のコンパイル時に
template<class T>Game<T>::Game()とtemplate<class T>void Game<T>::Play()の定義が
見えるようにして,(暗示的に)実体化するのが一般的だと思います.


446 :デフォルトの名無しさん:04/07/03 11:59
string関連の質問なんですけどコンパイルも実行もできるのですがnameの表示が上手く行われません。
「俺様の名前はキャッツだ」と本来なら表示したいのですが。。。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_21/cat.txt

447 :デフォルトの名無しさん:04/07/03 12:04
- FNeko(){cout << "キャッツが現れた!\n"; Neko("キャッツ"), power = 10;}
+FNeko(): Neko("キャッツ"), power (10) {cout << "キャッツが現れた!\n";}


448 :デフォルトの名無しさん:04/07/03 12:09
>>405>>408>>420のやり方だとエラーが出てしまいどうにも上手くいかんです。
全部インラインすると時間がかかりそうですし。。
>>413の方法ならできるんですがあらかじめ使用する型を書いておかないといけないんですよね。
exportが使えれば楽なんですが、これ以上の解決策はないですかね。。。?

449 :デフォルトの名無しさん:04/07/03 12:13
>>446
ついでに言うと

>Neko(string n){name = n;}
>void SetName(string n){name = n;}



Neko(const string& n){name = n;}
void SetName(const string& n){name = n;}

としたほうがいいと思うよ。

450 :デフォルトの名無しさん:04/07/03 12:13
>>447
ありがとうございます。
- FNeko(){cout << "キャッツが現れた!\n"; Neko("キャッツ"), power = 10;}
+FNeko(): Neko("キャッツ"), power (10) {cout << "キャッツが現れた!\n";}
うえの違いってどこにあるんでしょう?
下のやり方は本でいきなり出てきたのでよくわからなかったので、今までどおり{}の中に必要な処理は全部まとめて書いても同じだと思ったんです。


451 :413:04/07/03 12:15
>>448
実装省きましたが,こんな感じじゃないでしょうか.
################# Game.h ######################
template<class T>
class Game{
private:
T m;
Hero h;
public:
Game();
void Play();
};
#include "Game.cpp"
################# Game.h ######################
################# Game.cpp ######################
template<class T> inline Game<T>::Game() {}
template<class T> inline void Game<T>::Play() {}
################# Game.cpp ######################


452 :デフォルトの名無しさん:04/07/03 12:21
>>448
エラーが102個出てしまいました。
Game.cppはこんなんです。
#include <iostream>
#include "Mao.h"
#include "Hero.h"
#include "Neko.h"
#include "FNeko.h"
#include "Game.h"
using namespace std;
template<class T> inline Game<T>::Game()
{
cout << "戦闘が始まります!がんばって!\n";
cout << "敵の残りエネルギー:" << m.GetEnergy() << '\n';
}
template<class T> inline void Game<T>::Play()
{
while(h.GetEnergy()>0){
if(m.GetEnergy()<=0){
break;
}
m.Attacked(h.Attack());
}

if(m.GetEnergy()>0){
cout << "敵は逃げました。終了します。\n";
}

}
これはもしかすると私の環境に問題があるんでしょうか?
VC++6.0proで下のパッチを当ててあります。
http://www.microsoft.com/downloads/details.aspx?FamilyID=a8494edb-2e89-4676-a16a-5c5477cb9713&displaylang=ja

453 :447:04/07/03 12:25
>>450
> FNeko(){cout << "キャッツが現れた!\n"; Neko("キャッツ"), power = 10;}
これのNeko("キャッツ"), power = 10;では基底クラスの初期化は行なわれません.
Nekoクラスの名無しインスタンスが"キャッツ"を引数として作られ,
powerに10が代入され,
両者の間でoperator,が呼ばれることになります.


454 :413:04/07/03 12:28
>>452
> #include "Mao.h"
> #include "Hero.h"
> #include "Neko.h"
> #include "FNeko.h"
> #include "Game.h"
> using namespace std;
これいらないです.
あと,coutはstd::coutに.


455 :デフォルトの名無しさん:04/07/03 12:29
>>450
まともな入門書を通読するか、初心者スレに逝ってくれ

456 :447:04/07/03 12:30
>>453
-両者の間でoperator,が呼ばれることになります.
+両者の返値間でoperator,が呼ばれることになります.


457 :デフォルトの名無しさん:04/07/03 12:42
標準入力からの取り込みを以下の用にやっています。

#include<stdio.h>
#define MAXLEN 256
char buff[MAXLEN];

intmain(){
 int n;
 printf("Input Number >");
 fscanf(buff, sizeof(buff), stdin);
 sscanf(buff, "%d", &n);
以下省略

ここで、標準入力の入力数がsizeof(buff)を超えていた場合のエラー処理
はどうすれば良いのでしょうか?よろしくお願いします。

458 :デフォルトの名無しさん:04/07/03 12:47
>>457
スレ違い


459 :457:04/07/03 12:47
あぁぁ、入力ミスしてました。fscanf → fgets

#include<stdio.h>
#define MAXLEN 256
char buff[MAXLEN];

intmain(){
 int n;
 printf("Input Number >");
 fgets(buff, sizeof(buff), stdin);
 sscanf(buff, "%d", &n);
以下省略

です。

460 :457:04/07/03 12:48
>>458
スレ違いなのですか?C++のことなのですが…。

461 :デフォルトの名無しさん:04/07/03 12:49
>>460
Cスレに移動されたし。

462 :デフォルトの名無しさん:04/07/03 12:49
>>460
吊られないぞ


463 :デフォルトの名無しさん:04/07/03 12:50
>>454
Game.cppの内容
template<class T> inline Game<T>::Game()
{
std::cout << "戦闘が始まります!がんばって!\n";
std::cout << "敵の残りエネルギー:" << m.GetEnergy() << '\n';
}
template<class T> inline void Game<T>::Play()
{
while(h.GetEnergy()>0){
if(m.GetEnergy()<=0){
break;
}
m.Attacked(h.Attack());
}
if(m.GetEnergy()>0){
std::cout << "敵は逃げました。終了します。\n";
}
}
Game.cpp
F:\C++\挫折しないプログラミング\Game.cpp(8) : error C2143: 構文エラー : ';' が '<' の前に必要です。
F:\C++\挫折しないプログラミング\Game.cpp(8) : error C2433: 'Game' : 'inline' はデータ宣言をするのに使用できません。
F:\C++\挫折しないプログラミング\Game.cpp(8) : error C2501: 'Game' : 識別名を宣言するのに、型が指定されていません。
F:\C++\挫折しないプログラミング\Game.cpp(8) : error C2059: 構文エラー : ';'
F:\C++\挫折しないプログラミング\Game.cpp(8) : error C2143: 構文エラー : ';' が '<' の前に必要です。
F:\C++\挫折しないプログラミング\Game.cpp(13) : error C2039: 'Play' : '`global namespace'' のメンバではありません。
F:\C++\挫折しないプログラミング\Game.cpp(14) : error C2143: 構文エラー : ';' が '{' の前に必要です。
F:\C++\挫折しないプログラミング\Game.cpp(14) : error C2447: '<L_PROPERTY>' : 関数ヘッダがありません (旧形式の仮引数リスト?)
こうなりました。
やはり環境がいけないんでしょうか?
テンプレートを明示的にインスタンスかするしかないですかね。。


464 :デフォルトの名無しさん:04/07/03 12:50
>>440
> ここで言われたから無理やり使うのはすごい馬鹿

心配しなくてもそんなやつはいない。

465 :デフォルトの名無しさん:04/07/03 12:51
>>456,>>453
ありがとうございます。


466 :413:04/07/03 12:53
>>463
Game.cppはコンパイルしないでください.


467 :413:04/07/03 12:56
>>463
もし,.cppだと自動的にコンパイルされるようだったら,
Game.cppをGame_impl.hなどに変更して下さい.
内容的には初心者スレです.


468 :デフォルトの名無しさん:04/07/03 12:57
>>466
メインでつかうcppをコンパイル、実行する際にどうしてもGame.cppもコンパイルしようとマシンがするんですが。。

469 :デフォルトの名無しさん:04/07/03 13:00
>>467
ありがとうございます。
今まで読んできた入門書にはこのような方法は載っていなかったので。。
迷惑おかけしてスイマセン

470 :デフォルトの名無しさん:04/07/03 13:17
上野にあるアドというブルセラショップはなくなってしまったのでしょうか?
いま上野にいます。


471 :デフォルトの名無しさん:04/07/03 13:26
>>470
上野にまだあるよ。というかショップ自体が膨張して上野になりました。

472 :デフォルトの名無しさん:04/07/03 17:00
メモリリークを検出してくれるツールにはどういうのがありますか?
できればプラットフォーム非依存で。
それが無理ならWindows限定で。
それからできればフリーで。

473 :デフォルトの名無しさん:04/07/03 17:02
newとdeleteオーバーロードすればいいやん

474 :デフォルトの名無しさん:04/07/03 17:21
>472
Windows限定なんでスレ違いなんだが、
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
がお手軽。

475 :デフォルトの名無しさん:04/07/04 20:01
DBからselectした結果をカラム名と値の組で
map<string, string> cols;
に格納しようと思っています。
ここで疑問ですが
string で NULLを扱うにはどうしたらよいでしょうか?

476 :デフォルトの名無しさん:04/07/04 20:33
ちょっと質問です。
C++プログラムはどの辺りまでマスターすれば、”C++をマスターした”と言えるのでしょうか?
まぁ、”全部マスターしたら”と言われたらそれまでですが・・・。
それと、C++の次に覚えたら良いプログラムは何でしょうか?
変な質問ですが、どうかよろしくお願いします。

477 :デフォルトの名無しさん:04/07/04 20:35
金になるモノを作れたらマスターしたと言っていいんじゃなイカ?

478 :デフォルトの名無しさん:04/07/04 20:50
詐欺じゃなくてな

479 :デフォルトの名無しさん:04/07/04 20:54
>>475
> string で NULLを扱うにはどうしたらよいでしょうか?
ありません。

そもそも map に格納しないか、あるいは map<string, std::pair<bool, string> > とかに
して NULL, 非 NULL のフラグを別に持って下さい。

480 :デフォルトの名無しさん:04/07/04 21:00
__NULL__とか多分dbに無さそうなの入れとけば?

481 :デフォルトの名無しさん:04/07/04 21:03
そういうときこそboost:optional

482 :デフォルトの名無しさん:04/07/04 22:31
>>475
仕様に関わるがNULL文字と空文字を同扱いにするという方法もある。

>>480のようにNULL定数を定義する方法もある。
この場合安全性を期すならNULL定数と一致する値が入力された場合にはエスケープすればよい。
後のことを考えるとcols自体をクライアントに露出しないほうがよいのは当然。

483 :デフォルトの名無しさん:04/07/04 22:36
>>482
>NULL文字

スペル誤りのあたりから、ただならぬ腐臭が立ち込めている

484 :デフォルトの名無しさん:04/07/04 22:37
>>483
NULL文字列と書きたかったのねん

485 :デフォルトの名無しさん:04/07/04 22:41
>>484
おまえもすごい
血塗相か肪乱相クラスだ
かんべんしてくれ

486 :デフォルトの名無しさん:04/07/04 22:45
>>485
これか
http://www.medianetjapan.com/2/drama_art/yusuke45/9deaths.html
勉強になるなあ

487 :デフォルトの名無しさん:04/07/05 00:22
>>401で質問したものですが初歩的過ぎる質問に付き合ってくださった方々に感謝いたします。

488 :487:04/07/05 00:57
たびたび申し訳ないんですがif文やswitch文の中でテンプレートクラスの宣言はできないのでしょうか?
ユーザーに数字を入力させてそれに応じた処理をしようと思ったのですがエラーに悩まされています。

元のコードのエラーは修正してあるので単純に
Game<FNeko, Hero> g;
g.Play();
とすれば実行はできます。

問題のコードです。
できればよろしくおねがいします。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_22/kudasitu.txt

489 :デフォルトの名無しさん:04/07/05 00:59
>>488
たぶんC++(テンプレート)やる前にC言語をもういちど勉強しなおしたほうがいいと思う。

490 :デフォルトの名無しさん:04/07/05 01:02
>>488 インスタンスの生存範囲を熟考して分かった事を述べよ。(30点)

491 :デフォルトの名無しさん:04/07/05 01:17
ポリモーフィズムについて述べよ。またそれとテンプレートとの関係について動的、静的という言葉を用いて説明せよ(40点)

492 :デフォルトの名無しさん:04/07/05 01:33
>>488
>>455を声に出して100回読みなさい。


493 :デフォルトの名無しさん:04/07/05 01:37
>まともな入門書
とりあえずダイテルかPrimerのどっちかを読み終わるまでは出入禁止。

494 :デフォルトの名無しさん:04/07/05 06:40
>>488
>if文やswitch文の中でテンプレートクラスの宣言はできないのでしょうか?
これはできます.が,488でコンパイルできないのは490の指摘の通りです.

まず,if文の方がコンパイルできないのはコンパイラの指摘通りです.
> 魔王と戦う.cpp(44) : error C2065: 'g' : 定義されていない識別子です。
以下のコードで(b)のコメントを外してコンパイルを通そうとしていることになります.
class A {public: void func () {}};
int main () {
{
A a;
a.func (); // <-(a)
}
// a.func (); <-(b)
return 0;
}


495 :494:04/07/05 06:40
switch文の方は,gの生存範囲がcaseごとではなくswitch全体であるからです.
つまり,以下のコードで(b)のコメントを外してコンパイルを通そうとしていることになります.
int main () {
A a; // <-(a)
// A a; // <-(b)
return 0;
}
もしswitchを使うのであれば,{}を使って以下のようにスコープを切ってやるといいです.
case 1: {
Game<Mao, Hero> g;
break;
}


496 :494:04/07/05 07:00
>>488
初心者すれに移動したのね.


497 :デフォルトの名無しさん:04/07/05 09:05
>>494-495
わかりやすくご丁寧にご指導いただきありがとうございます。
コンパイル実行することができました。

498 :デフォルトの名無しさん:04/07/05 09:57
ダイテルって何?

499 :デフォルトの名無しさん:04/07/05 10:00
>>498
ググれば出るよ。


500 :デフォルトの名無しさん:04/07/05 13:22
最近C++の勉強しているんですが、参考にしている本のコードが汚く感じるんです。

class CCalc {
  int r;
 public:
  void Set(int x) {r = x;}
}
クラス定義ではこんな感じで、{ }が1行に収まっているのも違和感あるし、

cout << "加数は?"; cin >> x;
見たいな感じで1行に2つ以上の文を入れていることが結構あります。

ネットで何人かのコードを見させてもらった感じでは、{ }は結構あるのかなぁという
感じですが、cout << ; cin >> ;の方はやりすぎかなぁという印象を受けました。
C++では良くあることなんですか?

501 :デフォルトの名無しさん:04/07/05 13:28
インラインメソッドでは普通じゃないですか?

class A
{
 int a;
public:
 A() :a(0) {
 }
}
と書くよりは


class A
{
 int a;
public:
 A() :a(0) {}
}
と書くだろうし。

OOだからGetterとかSetter書かなきゃいけないのにそんな無駄に行数増やしてもしょうがないし。
cout << ; cin >> ;の方はやりすぎ。

502 :デフォルトの名無しさん:04/07/05 13:32
>>500
本だとページ数を抑えるためにやったりしてるのでは?
ネットの話だと、2chは投稿に行数制限あるからせざるを得なかったり。


503 :デフォルトの名無しさん:04/07/05 13:51
インラインで{ }はありでも、やっぱその入出力はやりすぎですか。
ではこの本のスタイルはあまり真似しないようにします。
ありがとうございます。

もし、推奨されるスタイルのコードを閲覧できるサイトがあれば紹介してもらえないでしょうか?


504 :デフォルトの名無しさん:04/07/05 13:57
あー、>>4からたどっていけば結構ありますね。
推奨されるスタイルかどうかはわかりませんが、見た目よさげなので参考にします。
http://www.cuj.com/code/

505 :デフォルトの名無しさん:04/07/05 23:22
>>501
>OOだからGetterとかSetter書かなきゃいけないのに

いらんこと書かなきゃボロが出ないのに……

506 :デフォルトの名無しさん:04/07/05 23:27
>>505
いらんとこに触れなきゃ、スレも荒れないかも・・・

507 :デフォルトの名無しさん:04/07/06 00:33
>>505 全部friendですか?

508 :デフォルトの名無しさん:04/07/06 00:36
>>507
いらんこと書かなきゃボロが出ないのに……


509 :デフォルトの名無しさん:04/07/06 00:39
>>507
「OOだから」という理由でgetter/setterを「書かなきゃいけない」というのがおかしいって話だろ。

510 :デフォルトの名無しさん:04/07/06 07:39
>>509
iostream系が率先して無視してることになるね。

511 :デフォルトの名無しさん:04/07/06 08:31
iostream系が率先して無視?

512 :デフォルトの名無しさん:04/07/06 08:34
>>510
どういうこと?
iostream系のgetter/setterが提供されてる理由が「OOだから」ってことか?

513 :510:04/07/06 09:36
ios::flags()みたいにメンバのIn/Outが同じ名前の関数があるって意味。
ちょっと話の本題からずれてしまったみたいなので、スルーしてちょうだい。

514 :デフォルトの名無しさん:04/07/06 09:47
>>513 了解。

515 :デフォルトの名無しさん:04/07/06 15:35
char s[ 256 ];
cin >> s;

で、入力を
「a b」
とスペースを含む文にすると s に 「a」 としか読み込まれません。

この場合、s に「a b」と読み込まれるようにするにはどうすれば良いでしょうか?

516 :デフォルトの名無しさん:04/07/06 15:43
>>515
string s;
getline (cin, s);


517 :デフォルトの名無しさん:04/07/06 16:49
そのあと必要ならs.c_str()でconst char *を得られる。

518 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/07 23:33
#include <string>
#include <iostream>
namespace MyNameSpace {
class MyAbstract {
public:
  virtual ~MyAbstract(void) {};
  virtual void fooBar(void) const = 0; //1
  virtual const std::string toString(void) const { return getMark() + getName(); }; //2
protected:
  virtual const std::string getName(void) const = 0; //3
  virtual const std::string getMark(void) const = 0; //4
};
class MyImpl : public MyAbstract {
public:
  MyImpl(const std::string & name) : _name(name) {};
  virtual ~MyImpl(void) {}; //5
  virtual void fooBar(void) const { std::cout << "(^o^)" << std::endl; }; //6
protected:
  virtual inline const std::string getName(void) const { return _name; }; //7
  virtual inline const std::string getMark(void) const { return MYMARK; }; //8
private:
  const std::string _name;
  static const std::string MYMARK;
};
const std::string MyImpl::MYMARK("*");
}

519 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/07 23:33
>>518 は今ちょこちょこっと書いたものです。まあだいたいの感じだけ。

でもって質問なんですけど、あとから継承するかもしれないので
こんな風に自作クラス内のメンバ関数は全部 virtual を付けてるんですけど、
これって間違ってますか?

2 とか 7 とか 8 とか、virtual にしちゃっても問題ないんでしょうか。
こういうときは virtual をはずせ、とかいうのはありますか?

520 :デフォルトの名無しさん:04/07/08 00:10
>>519
> こういうときは virtual をはずせ、とかいうのはありますか?

そのクラスに仮想関数による動作がまったく必要なくて、
且つ、仮想関数テーブルの存在によって無視できない問題が発生するとき。

521 :デフォルトの名無しさん:04/07/08 00:19
>virtual inline
ってあるけど仮想関数はinline展開されねーぞ

522 :デフォルトの名無しさん:04/07/08 00:22
>>521
されるよ。

523 :デフォルトの名無しさん:04/07/08 00:25
>>522
MyImpl mi;
mi.fooBar();

と書いたときしかされないだろ。
でこんな使い方はこの場合そんなに無いだろ。
MyAbstractを定義してあるくらいだし。

524 :デフォルトの名無しさん:04/07/08 00:34
>>523
そりゃそうだが、知らない人が>>521を見たらそういう解釈はできないだろ。

525 :デフォルトの名無しさん:04/07/08 01:34
>>519
2・3・4の間でTemplate Methodパターンを成立させるつもりなら2は外す。
3と4には個別にきちんとした意味があり、
2はMyAbstractでたまたまこう実装されているだけなら外さない。
(まあtoString()ならvirtualで正しいだろう。)

7・8はvirtualと記述しなくても基底クラスの定義を受けて自動的にvirtualになる。
virtualでないときにMyImplの派生クラスをつくってgetName()をオーバーライドし、
その派生クラスのオブジェクトに対してMyImpl*経由でgetName()を呼び出したときでも、
virtual扱いで派生クラスのメンバ関数が呼ばれる。


526 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/08 08:08
>>521>>523
> 仮想関数はinline展開されねーぞ

なるほどー。MyAbstract 経由で呼んだらそうなるわけですね。。

>>525
> virtualと記述しなくても基底クラスの定義を受けて自動的にvirtualになる。

それは知りませんでした。。
てっきり派生クラスで virtual を外したら virtual じゃなくなるものかと。。

C++ Primer の virtual 関連のあたりをもう一度読んでみます。
ほんじゃあ、行ってきまーす☆

527 :デフォルトの名無しさん:04/07/08 14:20
BCC551を使っています。
仮想関数がインライン関数になれないことは理屈でわかるのですが、
例えば

 virtual void foo() {}

このような書き方をしても、普段口うるさいBCCでさえ特に何も
文句を言ってきません。他の処理系ではどうか分からないですが、
ネット上に置かれているソースでも、結構このような書き方を
見かけます。このような書き方に対して、C++処理系がどう振舞う
べきか規格では明確に触れられているのでしょうか

528 :デフォルトの名無しさん:04/07/08 14:32
クラス定義中に本体を実装してもインライン展開されるとは限らない。
inline付けてもインライン展開されるとは限らない。
virtual メソッドが絶対にインライン展開されないとも限らない。

529 :デフォルトの名無しさん:04/07/08 14:38
>>528
そうなんですよね
インライン展開できないケースでは、BCC は丁寧に展開できない
理由まで述べて、その旨の警告を発するので、あえて出さない
のには、何か規格上の理由があるからなのだろうかと思ったので。

530 :デフォルトの名無しさん:04/07/08 14:40
>>527
もちろん明確に触れられている。
インライン展開が可能であれば、インライン展開しても良いし、しなくても良い。

>仮想関数がインライン関数になれないことは理屈でわかるのですが、
なれないことは無い。例えば:

class base {
 public: virtual void run() {};
};

class derived : public base {
 public: virtual void run() { if (...) base::run(); };
};

というような、ごくありがちでかつインライン展開可能な例なんかもある。

531 :デフォルトの名無しさん:04/07/08 14:44
ああ根本的なところで誤解してたんですね…
納得がいきました。

≫virtual メソッドが絶対にインライン展開されないとも限らない。

≫>仮想関数がインライン関数になれないことは理屈でわかるのですが、
≫なれないことは無い。

532 :デフォルトの名無しさん:04/07/11 01:26
hoshu

533 :デフォルトの名無しさん:04/07/11 04:39
プログラムを書くときUML等を使って設計していますか?
ここの住人的UMLの重要性を教えていただけません?

534 :デフォルトの名無しさん:04/07/11 06:34
>>533
客への納品物の一種。
紙数を稼ぐのに使う。
設計書と同様、ハッタリ。

535 :名無しさん@そうだ選挙に行こう:04/07/11 11:57
>>533
ユースケースは絶対に書く、
これ顧客の要望の確認でもあるので必須

536 :名無しさん@そうだ選挙に行こう:04/07/11 16:14
あるファイルと同じディレクトリにあるファイル全てに対して同じ操作(具体的にはテキストファイル中の
単語の出現頻度を調べる)をしたいのですが、何かいい方法はありませんか?

537 :名無しさん@そうだ選挙に行こう:04/07/11 16:28
boost::filesystemとかどうよ

538 :名無しさん@そうだ選挙に行こう:04/07/11 16:29
>>536
いい方法の基準がわからん

539 :名無しさん@そうだ選挙に行こう:04/07/11 16:31
思いっきり環境依存だしC++よりスクリプト書いたほうが早そうだな

540 :536:04/07/11 16:40
>>537
ググってもよくわかりませんでした。すみません。
>>538
とりあえずVisual C++で作れればどんな方法でも構わないです。
>>539
やはり環境依存ですか。UNIXのシェルスクリプトなら少しは書けるから、
できればそちらでやりたいんですけど、VC++でWindows用に作るように言われてまして…

541 :名無しさん@そうだ選挙に行こう:04/07/11 16:40
リナならシェルスクリプトで簡単に書けるな

542 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 20:38
Singleton パターンを使いたいんですけど、
static MyClass * getSingleton() で
static MyClass * m_inst を返すようにすると、
だれも delete する人がいませんよね?

static void deleteSingleton() とか作って
使った人が自分で消すようにしちゃうと、
じゃあ他の人が使ってたらどうするの?
ってことになっちゃうし・・・

参照カウンタとか shared_ptr とか使わないと
まともな Singleton 実装はできないんでしょうか?

それともプログラム実行中はずっと生かしておくのが
普通の使い方なんでしょうか?

酒が入ってるのでうまく伝わらないかも知れませんが、
よろしくね♪ 以上、高卒童貞22歳サラリーマンでした☆

543 :デフォルトの名無しさん:04/07/11 20:53
>>542
参照カウンタはシングルトンに使えない。

{
SmartPtr p=Singleton::inst();
p->foo();
}

{
SmartPtr p=Singleton::inst();
p->bar();
}

こういう使い方されたら生成->破棄->生成->破棄と忙しい。

544 :デフォルトの名無しさん:04/07/11 20:55
>>542
キャップがないと削除できないよね?
でも削除人をこき使っちゃうと
じゃあ削除権持ってるのと同じになるの?

たらこが削除人をうまく教育すればいいだけだろ

おめーが書いたクラスに対してはおめーがたらこだ
別に荒らされたまま放っとくのが普通の管理じゃねーべよ

545 :543:04/07/11 20:56
ゴメン、やっぱ↑の嘘。聞き流して。

546 :デフォルトの名無しさん:04/07/11 20:59
>>542
全メンバが static で main が friend なんて見かけたことあるが・・・。

547 :デフォルトの名無しさん:04/07/11 21:02
>>542
逃げ方としてはvirtualなデストラクタを持つクラスを一個つくってそれを継承したシングルトンにしておく
んでもってグローバル変数で定義した後始末クラスのインスタンスにSingleton生成時に登録しておく
プログラム終了時にグローバル変数のデストラクタが呼ばれるのでそのなかでdeleteする。


548 :デフォルトの名無しさん:04/07/11 21:23
>>542
newしなきゃいいじゃない
static MyClass * getSingleton()
{
static MyClass instance;
return &instance;
}
じゃいかんか?
マルチスレッド対策はおくとして。

549 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 21:25
ご回答ありがとうございます!

>>543
>参照カウンタはシングルトンに使えない
>生成->破棄->生成->破棄と忙しい

理論的に使えないってわけじゃなくって
効率の問題ですよね?

漏れさんはときどきまとめて

String name = MyClass::getSingleton()->getName();
String mark = MyClass::getSingleton()->getMark();
String uhi = MyClass::getSingleton()->getUhi();

とかしたいだけなんです。。。

>>547
>プログラム終了時に

ってことなら明示的に delete する必要ってあるんでしょうか。。

まあ大したことないインスタンスだから最後まで
生き残ってたっていいんですけどー、
果たして C++ 的にそれが真っ当なことなのか
疑問だったわけです。

550 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 21:28
あ、新しいご回答を見落としてました。

>>548
C/C++ は始めたばっかりで、関数の中の static 変数なんて
使ったことありませんでした。
Singleton の実装ってそういう風にしてもいいんですか。

・・・でも結局インスタンスはプログラムの最後まで
消えないと理解していいんでしょうか。。

551 :デフォルトの名無しさん:04/07/11 21:31
> String name = MyClass::getSingleton()->getName();
> String mark = MyClass::getSingleton()->getMark();
> String uhi = MyClass::getSingleton()->getUhi();
> とかしたいだけなんです。。。

なんでgetSingleton()を繰り返したいの?
ローカルに参照置いてほしいなぁ。

552 :デフォルトの名無しさん:04/07/11 21:32
>>547
>んでもってグローバル変数で定義した後始末クラスのインスタンスにSingleton生成時に登録しておく
後始末クラスの変わりにatexit使うのものもいいかも.


553 :デフォルトの名無しさん:04/07/11 21:34
>>550
>>548の場合なら関数呼出時からプログラムの最後まで残る
寿命を管理したいなら明示的にcreate&destroyすればよい
寿命がいつ切れるかわからないけど切れたときにはdestroyしたいってのは
Singletonには向かないだろう

554 :デフォルトの名無しさん:04/07/11 22:47
Exceptionクラスの設計しているんだけど、スタック関係の設計とライン行、ファイル名の出力が上手くいかないんす。
わからないところ
 1)スタックはどこで管理するの? 個々のExceptionクラスにあったらダメだし・・・。
 今はなぜかリスト構造になってる。JavaのThrowableみたいなクラスが管理するのかなぁ?
 2)Exceptionを呼ぶ側が__LINE__とか__FILE__とか意識せずに呼び出して、あとは
 トレースかけたときに全て出力されるような実装にしたい。
教えてエロイ人。
(今はオーバーロードしてガンがってたんだけど、少しも美しくない上にこの先
Exceptionの継承先で困るだろうから・・・)

555 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 22:47
>>553
>寿命がいつ切れるかわからないけど切れたときにはdestroyしたいってのは
>Singletonには向かないだろう

ふーん、じゃあやっぱり C++ は Java には勝てないんですね。

酔っぱらってるからもう寝ちゃいます。おやすみねー♪

556 :554:04/07/11 22:48
sageで質問してまった、ageます。

557 :デフォルトの名無しさん:04/07/11 22:49

なにをいまさら・・・

558 :デフォルトの名無しさん:04/07/11 22:51
>>557
なにが今更だよ。1分しか経っていないだろ。

559 :デフォルトの名無しさん:04/07/11 22:54

アフォハケーン

560 :デフォルトの名無しさん:04/07/11 22:58
ああ、>>557>>555にレスしたつもりなのか。
2chで矢印なんか使うなよ。

561 :デフォルトの名無しさん:04/07/11 23:02
>>553
まぁ、敢えてやるなら boost::shared_ptr とか。お勧めはしないが。

562 :デフォルトの名無しさん:04/07/11 23:03
Javaだって消える保証あるの?
JavaのGCは参照カウント方式って聞いたけど

563 :554:04/07/11 23:06
>>562
http://www.netgene.co.jp/java/technicalTerms.html#gcAlgorithm

564 :デフォルトの名無しさん:04/07/11 23:09
>>562
いまどき参照カウントですかおい。

565 :デフォルトの名無しさん:04/07/11 23:10
>>554
スタックの管理って何するの?
ふつうのC++例外クラスを設計するときには、はスタックのことなんか意識しないよ。
あと、「トレースかけたとき」も何のことだかよくわからない。

566 :554:04/07/11 23:15
>>565
まあ、実はJavaのExceptionクラスをC++に移植しようと思ってるんです。
最初は俺様設計だったんですけど、まあ勉強と言う事で。

スタックはExceptionを呼んでcatchしてまた呼んで・・・とやるときに
呼ばれたException順に分るようにする設計思想です。
「トレースかけたとき」と言うのはExceptionの種類・メッセージ・ファイル名・行の情報を
コンソールなり、デバッガなりに出力する事です。

567 :デフォルトの名無しさん:04/07/11 23:17
>>562
多分>>542はぼけだからJavaもよく分かってないんでしょう
コレクションされるためには
m_inst = null;
としなければならない。
そうでなければプログラムの最後まで消えない。
もしどこかでそうするなら、それはC++でdeleteを呼んでいるのと同じ。

結局Javaのほうがぼけが育ちやすいということで了。

568 :デフォルトの名無しさん:04/07/11 23:18
>>564
今のトレンドはなんですか?

569 :デフォルトの名無しさん:04/07/11 23:22
>>565
printStackTrace()とかのことっしょ。
呼出スタックはC++としては持ってないんじゃないの?
持ってるとしたら実行環境でしょう。
Javaは言語と実行環境が一体化してるからその違いを見極められんのかもしれんが。

570 :554:04/07/11 23:27
>>569
そこを何とかC++に移植したいんですけど・・・(^^;
スタックの方はおそらくExceptionクラスの親クラスを作ってやる必要があることが分ってきました。

あとはファイル名・行番号出力なんですけど・・・。
オーバーロードと関数の初期引数に指定して何とかするぐらいしか思いつかない。後はマクロですか・・・?

571 :デフォルトの名無しさん:04/07/11 23:28
>>568
incrementalか世代別コピー

572 :デフォルトの名無しさん:04/07/11 23:29
>>570 あとはファイル名・行番号出力なんですけど・・・。
あきらめろ。
処理系依存なら、できる奴もあるかもしれないけど。

573 :デフォルトの名無しさん:04/07/11 23:32
>>572
処理系依存処理系依存ってうるせーんだよ。
てめーはCスレに逝けバーカ。

574 :デフォルトの名無しさん:04/07/11 23:32
class base{
public: virtual a( char c )=0;
public: a( int i );
};

class foo{
public: a( char c );
};

void main()
{
  foo f;
}

こうするとベースクラスの純粋仮想関数じゃないほうの
a( int i )が見えなくなっちゃうんだけど、どうにもならん?

575 :554:04/07/11 23:34
>>572
処理系はVC++です。
かなり重要な部分なのでそう簡単に諦めれませんけど(^^;
まあ、最悪Exception投げるタイミングで__LINE__と__FILE__を記述するのか・・・(泣

576 :デフォルトの名無しさん:04/07/11 23:34
>>570
行番号、ファイル名を使うならマクロを使うことになるだろう。
マクロを使うことになると、派生した例外クラスをどう扱うかが問題になるだろう。

C++はJavaではないということを受け入れたほうが楽になれるだろう。

577 :デフォルトの名無しさん:04/07/11 23:35
>>573
お前はHSPスレに行きなさい。そこがお似合い。

578 :デフォルトの名無しさん:04/07/11 23:36
>>576
よくいるよな、ちょっと似てるからって継承にしたがる単純ヴァカ

579 :デフォルトの名無しさん:04/07/11 23:38
>>566
>スタックはExceptionを呼んでcatchしてまた呼んで・・・とやるときに
>呼ばれたException順に分るようにする設計思想です。
この部分に非常にひっかかるんだが。
それはスタックじゃなくて「発生源となったException」のほうじゃないか?
フィールド名称は忘れたが、Exceptionを引数にとるコンストラクタが関係するやつ。

580 :デフォルトの名無しさん:04/07/11 23:39
#define THROW(exception_type) throw exeption_type(__FILE__,__LINE__)

581 :デフォルトの名無しさん:04/07/11 23:39
http://www5.hokkaido-np.co.jp/sports/fs_fight/files/20040116.html

582 :デフォルトの名無しさん:04/07/11 23:40
>>574

  ∧ ∧     ┌─────────────
  ( ´ー`)   < ミエネーヨ
   \ <     └───/|────────
    \.\______//
      \       /
       ∪∪ ̄∪∪

何の関係もねーだろ、てりめーだヴァカ

# 言い方キツい理由わかるかな?

583 :デフォルトの名無しさん:04/07/11 23:41
>>580
それダメ。

584 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 23:41
まだ寝ないで小泉自民の逆転劇を見ようとしています。

>>567
>多分>>542はぼけだからJavaもよく分かってないんでしょう
>コレクションされるためには
>m_inst = null;
>としなければならない。

なるほどね! C++ (1ヶ月学習で実戦配備中) は
最後に delete しなきゃいけなくて、
Java (半年学習。実務経験なし) に比べると
マンドクサイと思ってましたが、Singleton に関しては
別に大差なかったんですね。

とにかく今は delete が嫌いでして、

try {
  array<MyClass *> uhi = createMyClasses();
  for (int i = 0, n = uhi.size(); i < n; i++) {
    uhi[i].uhirinko();
  }
} catch (...)
  for (int i = 0, n = uhi.size(); i < n; i++) {
    delete uhi[i];
  }
  throw;
}
for (int i = 0, n = uhi.size(); i < n; i++) {
  delete uhi[i];
}


585 :デフォルトの名無しさん:04/07/11 23:43
http://homepage.mac.com/ma_kyow/shinjo.gif

586 :554:04/07/11 23:44
>>576
そうでつか・・・、まあ、地道に呼び出し側で書いておきます・・・

>>578
単純ヴァカか・・・。単純ヴァカは良いぞ。色々得するから。

>>579
それです(w
おそらくJavaではExceptionをスタックに詰めていると思われたんで。
説明下手でスマソ。

587 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 23:44
あ、途中で書き込んでしまった。

>>584 とかみたいに書かなくて済むようにするために
デストラクタで for ... { delete uhi[i]; } する
MyArray を作って

MyArray<MyClass *> uhi = createMyClasses();
for (int i = 0, n = uhi.size(); i < n; i++) {
  uhi[i].uhirinko();
}

コードをこれだけに抑えてたりしてるんですけどね。
あとは boostとか使えないから auto_ptr だけ自作したりもしてます。

ほんじゃあ、今度こそおやすみね〜♪

588 :デフォルトの名無しさん:04/07/11 23:45
>>584
そういうときはスマートポインタかなんか使ってくれ。
普通のC++使いから見たら身の毛がよだつぞ。
なんのためにデストラクタがあるか考えてくれ。

589 :588:04/07/11 23:46
>>587
してんのかよ!

590 :デフォルトの名無しさん:04/07/11 23:46
auto_ptr。。。

591 :デフォルトの名無しさん:04/07/11 23:50
>>582
記述ミスくらい許したれよ

usingでどうにかならんかったっけか?

592 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 23:50
>>590
なんか文句でも?

shared_ptr なんて高級なもんは作れねーよ、バーロー!

明日から会社かー、もういやだよー。

593 :デフォルトの名無しさん:04/07/11 23:50
>>584
そのdeleteは使えねーだろ

594 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 23:51
あ、うそうそ。>>592は取り消します。
みんな忘れてね。ほんじゃあ、おやすみね〜♪(三回目)

595 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 23:52
>>593
あー、ちょっと間違えただけ。
ほんとは try の前で array だけ宣言してるの。。

596 :デフォルトの名無しさん:04/07/11 23:52
>>592
辞めちまえ。楽になるぞ♪

597 :デフォルトの名無しさん:04/07/11 23:54
>>592
そのaut_ptrはコンテナにいれるんだぞ。
約束だぞ(はぁと

598 :デフォルトの名無しさん:04/07/11 23:56
>>591
記述ミスは許してるよ
記述ミスに至る過程を責めている

599 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/11 23:57
>>597
コンテナってなあに?【ピュア】(←古っ!)

600 :デフォルトの名無しさん:04/07/11 23:59
vectorやmapとか

601 :デフォルトの名無しさん:04/07/12 00:00
>>599
中華がよく入ってる奴

602 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/12 00:01
>>600
あそっか。

てか、>>597の意味がまだ理解できないのは
漏れの脳みそが非可逆的に腐っているからでしょうか。。
可逆も何も元からという説もありますが、、、

だれか教えてね(はぁと

603 :デフォルトの名無しさん:04/07/12 00:05
いつになったら去ってくれるんだろう・・・

604 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/12 00:06
>>603
もうちょっとだけ!
>>597の意味が分からないと気になって
眠れなくて明日会社に行けません。

よろしくお願いします!!

605 :デフォルトの名無しさん:04/07/12 00:08
>>604
だ、か、ら、>>596 (はぁと

606 :デフォルトの名無しさん:04/07/12 00:09
MyArray< std::auto_ptr<MyClass> > uhi;
つーことだな

607 :デフォルトの名無しさん:04/07/12 00:09
落とし穴があるから気をつけて使わないとハマるな。

608 :デフォルトの名無しさん:04/07/12 00:11
>>604
C++標準化委員会が不正としている
詳しくはEfffective STL を嫁

609 :(・∀・)ニヤニヤ ◆SKjzm2Ah6. :04/07/12 00:14
>>605
うひ〜ん。だってPCと洗濯乾燥機のリボ払いが残ってるんだもん。。。

>>606
漏れには↓を読んでもよく分からないんですけど、それって
http://homepage1.nifty.com/munepi/articles/20020826.html
で否定されてることじゃなくて・・・?

>>608
何を不正としているんですか?

てか、このスレでだけは嫌われないようにしようとしてたんですが、
お酒を飲んだせいで本性が出てしまいました。ごめんなさい。
今夜限り (part32には) 来ませんから許してね♪

610 :デフォルトの名無しさん:04/07/12 00:15
こいつ((・∀・)ニヤニヤ ◆SKjzm2Ah6.)が言ってる「auto_ptr」は自作のやつだからな〜。
そのギャグは通じんかもしれん。

参照カウンタとか上手く使ってれば耐えられるだろうな。
STLのコピーのセマンティクスを理解してるかどうかが鍵。あとauto_ptrのそれと。

611 :デフォルトの名無しさん:04/07/12 00:22
>>575
スタックフレームポインタを最適化で消さないこと前提なら、%ebp レジスタから
スタックフレームアドレスを順に取り出していき、スタック先頭までさかのぼる。
で、あとはデバッグ用のシンボルテーブルファイルと照らし合わせて解析。

っつーか VC 使うなら、デバッガの機能使えば自前で書く必要ないはずだが。

612 :デフォルトの名無しさん:04/07/12 00:22
自分は自作の参照カウンタつきポインタ使ってるけど、auto_ptr使ってる奴の気がしれん。
あんなのスコープ内でしか使えないじゃない(実質的に)

613 :デフォルトの名無しさん:04/07/12 00:33
ソース関数から所有権もらうときとか,
シンク関数へ所有権放り投げるときとか使いません?
(というかそういう所有権が移動する使い方を本来想定しているはず・・・多分)
スコープで自動deleteして欲しいだけなら
それこそscoped_ptrってそのまんまの名前のヤツがboostに・・・

614 :デフォルトの名無しさん:04/07/12 00:39
>613
基本的にすべてオブジェクト作るときに参照カウントにぶっこんでたんで、その辺は普段まったく気にしないで使ってた。
し気にしないで使えてる。

615 :デフォルトの名無しさん:04/07/12 00:50
参照カウントあるならそれで全然問題無しですねぇ・・・
やっぱauto_ptrは不要って思っている人多いのかな?

616 :JavaLikeExceptionBase.hpp:04/07/12 00:51
#include <exception>
#include <iosfwd>

#include "boost/shared_ptr.hpp"

class JavaLikeExceptionBase : public std::exception
{
public:
  typedef boost::shared_ptr< std::exception > native_type;

  JavaLikeExceptionBase( native_type native , char const file[] , int line );
  JavaLikeExceptionBase( native_type native , char const file[] , int line , JavaLikeExceptionBase const& wrapping );
  ~JavaLikeExceptionBase() throw();

  virtual char const* what() const throw();
  void trace( std::ostream& out ) const;

private:
  native_type m_native;
  char const* m_file;
  int m_line;
  boost::shared_ptr< JavaLikeExceptionBase > m_wrapping;
};

617 :JavaLikeExceptionBase.cpp:04/07/12 00:53
#include "JavaLikeExceptionBase.hpp"

#include <ostream>

JavaLikeExceptionBase::JavaLikeExceptionBase( native_type native , char const file[] , int line )
: m_native( native ) , m_file( file ) , m_line( line ) , m_wrapping()
{
}

JavaLikeExceptionBase::JavaLikeExceptionBase( native_type native , char const file[] , int line , JavaLikeExceptionBase const& wrapping )
: m_native( native ) , m_file( file ) , m_line( line )
, m_wrapping( new JavaLikeExceptionBase( wrapping ) )
{
}

JavaLikeExceptionBase::~JavaLikeExceptionBase() throw()
{
}

char const* JavaLikeExceptionBase::what() const throw()
{
  return m_native->what();
}

void JavaLikeExceptionBase::trace( std::ostream& out ) const
{
  out << m_file << "(" << m_line << "): " << what() << std::endl;
  if( m_wrapping ) m_wrapping->trace( out );
}


618 :デフォルトの名無しさん:04/07/12 00:53
scoped_ptr代わりにしか使わないな>auto_ptr


619 :JavaLikeException.hpp:04/07/12 00:54
#include "JavaLikeExceptionBase.hpp"

template< typename CplusplusException >
class JavaLikeException : public JavaLikeExceptionBase
{
public:
  JavaLikeException( JavaLikeExceptionBase const& base ) : JavaLikeExceptionBase( base ) {}
};

template< typename CplusplusException >
JavaLikeException< CplusplusException >
makeJavaLikeException( CplusplusException* native , char const file[] , int line )
{
  boost::shared_ptr< std::exception > const safe( native );
  return JavaLikeException< CplusplusException >( JavaLikeExceptionBase( safe , file , line ) );
}

template< typename CplusplusException >
JavaLikeException< CplusplusException >
makeJavaLikeException( CplusplusException* native , char const file[] , int line , JavaLikeExceptionBase const& wrapping )
{
  boost::shared_ptr< std::exception > const safe( native );
  return JavaLikeException< CplusplusException >( JavaLikeExceptionBase( safe , file , line , wrapping ) );
}

#define THROW_JAVA_LIKE_EXCEPTION( newCplusplusExceotion ) \
  throw makeJavaLikeException( newCplusplusExceotion , __FILE__ , __LINE__ )
#define RETHROW_JAVA_LIKE_EXCEPTION( newCplusplusExceotion , wrappedJavaLikeException ) \
  throw makeJavaLikeException( newCplusplusExceotion , __FILE__ , __LINE__ , wrappedJavaLikeException )


620 :デフォルトの名無しさん:04/07/12 00:55
#include <exception>
#include <stdexcept>
#include <iostream>

#include "JavaLikeException.hpp"

int main()
{
  try
  {
    try
    {
      THROW_JAVA_LIKE_EXCEPTION( new std::runtime_error( "origin" ) );
    }
    catch( JavaLikeException< std::runtime_error > e )
    {
      RETHROW_JAVA_LIKE_EXCEPTION( new std::runtime_error( "wrap" ) , e );
    }
  }
  catch( JavaLikeExceptionBase e )
  {
    e.trace( std::cerr );
  }
}


621 :620:04/07/12 00:56
むしゃくしゃしてやった。
別にJavaっぽくなくてもよかった。
今は反省している。

622 :デフォルトの名無しさん:04/07/12 00:56
>JavaLike
スレ違い
JavaでもC++でもない独自言語はスレ立てるべきでもない
自前のサーバーでやってろ

623 :デフォルトの名無しさん:04/07/12 00:56
例外ってconst参照で受けなくて言いの?

624 :デフォルトの名無しさん:04/07/12 01:02
>>623 Javaではそんなことしませんw

625 :デフォルトの名無しさん:04/07/12 01:04
Javaかよw

626 :デフォルトの名無しさん:04/07/12 01:46
>>623
参照では受けるがconstである必要はない。
回復情報や追加情報をのせて再送することも、もしかすると、あるかも知れん。

627 :デフォルトの名無しさん:04/07/12 09:01
参照でなくてもいいじゃん

628 :デフォルトの名無しさん:04/07/12 09:45
auto_ptr は関数の戻り値に使うことが多いし、
const つけて、scoped_ptr の代わりにも使う。
shred_ptr のコンストラクタに auto_ptr を受け取るものもあるし。

結構便利に使ってる。

629 :デフォルトの名無しさん:04/07/12 10:13
>>44
そうだよ。マナーの問題だから。

630 :デフォルトの名無しさん:04/07/12 16:09
>>574,591
fooに
using base:a;


631 :デフォルトの名無しさん:04/07/12 16:17
>>630
using base::a;


632 :デフォルトの名無しさん:04/07/12 16:28
class foo: public base {

633 :デフォルトの名無しさん:04/07/12 20:59
listとvectorってみんなどっち使ってます?
もちろん、適切な方がある場合はそっちを使うべきだけど
どっちでもいい場合はどっち使う人がおおいのかなーと。

634 :デフォルトの名無しさん:04/07/12 21:02
>>633
どっちでも良けりゃ配列

635 :deque:04/07/12 21:02
>>633
わたしゃ無視ですかい?


636 :デフォルトの名無しさん:04/07/12 21:20
速度面で末尾での追加削除が起こるだけでもvectorよりdequeの方が速い事実は知らない人が多い。

637 :デフォルトの名無しさん:04/07/12 21:23
>>636
そうなの?なんで?

638 :デフォルトの名無しさん:04/07/12 21:23
>>636
知らなかった。


639 :デフォルトの名無しさん:04/07/12 21:23
じゃあvectorって何?

640 :デフォルトの名無しさん:04/07/12 21:25
複数のコンテナに共通する機能しか使わないときに vector もクソもあるか ぼけ

641 :デフォルトの名無しさん:04/07/12 21:26
vectorの方が消費メモリが少ない事がある。
vectorはCAPIと互換性がある。

642 :デフォルトの名無しさん:04/07/12 21:27
>CAPIと互換性がある。
たまにcharのバッファとして使ってるの見るとちょっとびっくりする。
どうもなれないな。

643 :デフォルトの名無しさん:04/07/12 21:30
VC6+STLPortだと2倍くらいvectorのほうが速いよ

644 :デフォルトの名無しさん:04/07/12 21:32
vectorもちゃんとreserveすればdequeと変わらないよ。
要素数が予測できない時はdequeのが全然速いよ。

645 :デフォルトの名無しさん:04/07/12 21:44
定数オーダーでランダムアクセスしたいときと、あらかじめ個数が分かってて
明らかにコスト低そうなときしか vector は使わないな・・・


646 :デフォルトの名無しさん:04/07/12 21:45
dequeも定数オーダーでランダムアクセスできるよ

647 :デフォルトの名無しさん:04/07/12 21:47
だからコンテナくらい自分で作ってチューニングしろと。

648 :デフォルトの名無しさん:04/07/12 21:49
そんな無意味な事しないよ・・STLになかったらboost探すし

649 :デフォルトの名無しさん:04/07/12 21:54
treeコンテナも標準で付いてねえのかよC++は

650 :デフォルトの名無しさん:04/07/12 21:57
>>647 allocatorだけじゃなくてコンテナも自前で作るの?

651 :デフォルトの名無しさん:04/07/12 21:58
プロなら当然だろ

652 :デフォルトの名無しさん:04/07/12 21:59
コンテナなんていってないでコンパイラも作ってくださいよ

653 :デフォルトの名無しさん:04/07/12 22:00
スレ違いでし
「コンパイラ・スクリプトエンジン」相談室 3
http://pc5.2ch.net/test/read.cgi/tech/1070089173/

654 :デフォルトの名無しさん:04/07/12 22:04
現場で「オレの作ったコンテナの方がスゴイから俺コンテナを使ってくれ」
と言えればねぇ

655 :デフォルトの名無しさん:04/07/12 22:08
>654
問答無用で却下ですね。
俺参照カウントつきポインターは使わしてるが

656 :デフォルトの名無しさん:04/07/12 22:44
deque のメモリレイアウトが未だに分からないオレ。
vector 見たいに一直線に並んでるわけじゃなさそうだし…

deque の中の人は何やってるんだ?

657 :574:04/07/12 23:13
>>582 きもい。

class base{
public: virtual void a( char c )=0;
public: void a( int i );
};

class foo : public base{
public: void a( char c );
};

void main()
{
  foo f;
}

これでいいか?

658 :デフォルトの名無しさん:04/07/12 23:17
-public: virtual void a( char c )=0;

+using base::a;

659 :574:04/07/12 23:18
>>630 サンクス!

660 :574:04/07/12 23:19
>>658 もサンクス!
試してみる!

661 :デフォルトの名無しさん:04/07/13 00:04
class A
{
// 省略
public:
template<class T>
T foo() { return reinterpret_cast<T>(hoge); }
};


A a;
a.foo<int>();

これがコンパイルできないのはVC6.0のせいですか?

662 :デフォルトの名無しさん:04/07/13 00:05
>>661
エラーメッセージ貼ってみな。

663 :661:04/07/13 00:09
>>662
error C2062: 型 'int' は不要です。

664 :661:04/07/13 00:11
失礼
>>663が出るのは a.foo<int>(); のところです。

665 :デフォルトの名無しさん:04/07/13 00:14
>>661
yes



666 :デフォルトの名無しさん:04/07/13 00:19
>>661
class A
{
// 省略
public:
template<class T>
T foo(T) { return reinterpret_cast<T>(hoge); }
};
A a;
a.foo(int ());

VC6.0持ってないんだけど
じゃだめかい?


667 :661:04/07/13 00:28
>>666
fooのキャストのところで
error C2440: 'reinterpret_cast' : 'int' から 'int' に変換することはできません。
がでましたが、Cスタイルのキャストにすることで通りました。
つかintからintに変換できないなんて…
.NET欲しいです。

668 :デフォルトの名無しさん:04/07/13 00:47
reinterpret_castってポインタにしか使えないんじゃなかったっけ?

669 :デフォルトの名無しさん:04/07/13 00:58
文 reinterpret_cast< T >(arg)で は,
ポインタ,参照,算術型,関数へのポインタ,またはメンバーへのポインタでなければなりません。

ポインタは整数型に明示的に変換できます。

整数 arg はポインタに変換できます。ポインタを整数型に変換した後,
同じポインタ型に変換しなおすと結果は元の値になります。

未定義のクラスをポインタ変換あるいは参照変換で使えます。

関数へのポインタは,オブジェクトのポインタ型が関数ポインタを保持するのに必要なビットを持つ場合,
明示的にオブジェクト型へのポインタに変換できます。オブジェクト型へのポインタは,
関数のポインタ型がオブジェクトポインタを保持できる大きさである場合にのみ,
明示的に関数へのポインタに変換できます。

670 :666:04/07/13 00:58
>>668
本当だ.
661にはhogeの型が書いてなかったので,
適当にprivateセクションに
int hoge;
を補ってやってた.
g++だと
reinterpret_cast <int> (double ());
はエラー出すけど,
reinterpret_cast <int> (int ());
は出さない.
668の見解だと後者はエラー出すべきなのかな?


671 :デフォルトの名無しさん:04/07/13 01:06
呼び出し側のテストなら
 template<class T> T foo();
で十分だろ。

672 :デフォルトの名無しさん:04/07/13 01:08
>>668
そんなことないよ。

673 :666:04/07/13 01:13
>>661
667をみるにhogeがintなら,
そこは何故reinterpret_castなの?
static_castのような気がするんだけど.


674 :デフォルトの名無しさん:04/07/13 12:52
STLは今後死滅しますか?
死滅しないまでもアルゴリズム一般の勉強をしたほうがマシですか?

675 :デフォルトの名無しさん:04/07/13 12:53
STLの死滅とC++の死滅は同時だろうな。

676 :デフォルトの名無しさん:04/07/13 12:57
>>674
STLの命運はC++の命運より長い気はする。
二行目は文の接続が変じゃない?


677 :デフォルトの名無しさん:04/07/13 12:59
>>675
結婚と思いきや意見が分かれますね。
離婚?!


678 :デフォルトの名無しさん:04/07/13 13:39
void f() throw();
のthrow()って何ですか

関数の中で例外投げますよって意味?
それとも関数の中で処理しなかった例外は呼び出し元に任せますよって意味??

679 :デフォルトの名無しさん:04/07/13 13:40
C++では意味無いから覚えても意味無い

680 :デフォルトの名無しさん:04/07/13 13:44
>>678
例外投げませんよ。

681 :デフォルトの名無しさん:04/07/13 13:45
ありがとうございます
まるっきり逆だったのか…


682 :デフォルトの名無しさん:04/07/13 14:17
>>675-677
性格の不一致ですね。

683 :デフォルトの名無しさん:04/07/13 19:03
>>678
それを付けると例外クリーンアップコードを挿入しなくなるので速度&サイズ共に
わずかに上がるはず。しかし実際に試してみたら差がなかった。環境にもよると
思うが。組み込みに使う時は付けろ付けろとうるさい。

684 :デフォルトの名無しさん:04/07/13 19:29
>組み込みに使う時は付けろ付けろとうるさい。

コンパイラが?

685 :デフォルトの名無しさん:04/07/13 21:01
>>684
資材部だと思われ

686 :デフォルトの名無しさん:04/07/13 21:30
operatorの継承ってできないのでしょうか?


687 :デフォルトの名無しさん:04/07/13 21:33
operatorはオブジェクトじゃないからな。

688 :デフォルトの名無しさん:04/07/13 21:40
>>686はたぶんoperator=が継承されなくて悩んでるんだと思われ。
=は出来ないのが仕様。


689 :デフォルトの名無しさん:04/07/13 21:40
>>688はエスパー


690 :デフォルトの名無しさん:04/07/13 21:41
>>686
operator=は定義しなくてもデフォルトの関数が暗黙に定義されるよな?
それで継承したやつが隠されてるんだよ

691 :デフォルトの名無しさん:04/07/13 21:51
double と float ってどっちの方が高速に計算できますか?

692 :デフォルトの名無しさん:04/07/13 21:53
旧処理系ならdoubleの方が速いが、今はどちらも同じ
ってとこかな

693 :デフォルトの名無しさん:04/07/13 21:57
>>691
処理系による
処理系Aでの結果を処理系Bでの必然と錯覚するアフォが後を絶たない

694 :デフォルトの名無しさん:04/07/13 21:59
>>693
ソレハネタデスカ?

695 :デフォルトの名無しさん:04/07/13 22:01
>>683
パフォーマンスが落ちることもあるよ。「上がるはず」とは言えない。

696 :デフォルトの名無しさん:04/07/13 22:05
効果は同じでもfloatを引数に取る関数とfloatを引数に取る関数とがあったら
そこをちゃんと区別しないといちいち変換が掛かって効率が悪くなる。
ただしどれぐらい違ってくるかはわからないが。

697 :デフォルトの名無しさん:04/07/13 22:10
>>696
同じジャン

698 :デフォルトの名無しさん:04/07/13 22:10
>>690
隠されないようにするには?


699 :デフォルトの名無しさん:04/07/13 22:22
CMyClass& operator=(int i)
{
CSuperClass::operator=(i);
return *this;
}


700 :デフォルトの名無しさん:04/07/13 22:29
700get

701 :デフォルトの名無しさん:04/07/13 22:55
猫    動物    哺乳類
桃    植物
蛇    動物    爬虫類
犬    動物    哺乳類
・・・
・・・
・・・

mona.txtというファイルにこのようなTABおよび改行で
区切られた文字列が存在する場合、


a[0][0] 猫
a[0][1] 動物
a[0][2] 哺乳類
a[1][0] 桃 
a[1][1] 植物
a[2][0] 蛇
a[2][1] 動物
a[2][2] 爬虫類
・・・
・・・
・・・

のように2次元配列にするには、どうすればいいですか。

702 :デフォルトの名無しさん:04/07/13 22:57
>>698
strcut Derived: Base
{
using Base::operator=;
};


703 :デフォルトの名無しさん:04/07/13 22:58
>>701
一生懸命読み込んでください。


704 :デフォルトの名無しさん:04/07/13 22:59
>>701
宿題?


705 :デフォルトの名無しさん:04/07/13 23:21
Cでは、出力するとき、
printf("");
を使って、C++では、
cout << "" ;
を使うことを最近知ったんですが、
microsoft visual C++ 6.0を使っていたのでC++でプログラミング
していると思っていました。
けど、printfを使っています。
これはCを使っていると言うことなんでしょうか??

706 :デフォルトの名無しさん:04/07/13 23:26
C++はCのライブラリも使えるということはご存知?


707 :デフォルトの名無しさん:04/07/13 23:28
いや知らないです。
と言うことは、coutでもprintfでもつかえるということですか?

708 :デフォルトの名無しさん:04/07/13 23:37
>>707

double d=1.23;
printf( "%4.2f", d);

をcoutでやろうとしたらどうなるか知ってますか?

709 :デフォルトの名無しさん:04/07/13 23:48
すいませんよく分からないです。
ためしにやってみたけどcoutが使えなかったです。

710 :デフォルトの名無しさん:04/07/13 23:50
>>709
VCなら
std::cout

711 :デフォルトの名無しさん:04/07/14 00:03
・・・分からなかったです。

712 :デフォルトの名無しさん:04/07/14 00:08
実は私も知らない...orz

713 :デフォルトの名無しさん:04/07/14 00:13
>>708
どうやってやるんですか?

714 :デフォルトの名無しさん:04/07/14 00:13
拡張子

715 :デフォルトの名無しさん:04/07/14 00:38
double d=1.23;
char s[ 64];
sprintf( s, "%4.2f", d);
cout << s;

違うかな?
私ならはじめからprintf()使います...orz

716 :デフォルトの名無しさん:04/07/14 00:42
>>715
かろうじてprintf()使ってない感じで
ワロタ

717 :デフォルトの名無しさん:04/07/14 00:45
>>716
ちょっと狙ってはいましたが光栄です。

718 :デフォルトの名無しさん:04/07/14 01:02
>>708
まじめにやるとこんな感じかな(boost使う場合と使わない場合の両方で)
#include <iostream>
#include <iomanip> 
#include <boost/format.hpp>
int main(){
    double d=1.23;
    std::cout << std::fixed<<std::setw(4)<<std::setprecision(2) << d << std::endl;
    std::cout << boost::format("%4.2f\n") % d;
    return 0;
}


719 :デフォルトの名無しさん:04/07/14 01:09
まぁprintfマンセーということで。

720 :デフォルトの名無しさん:04/07/14 01:14
型安全じゃないとか、欠点も数多いが、なんだかんだ言っても、
やっぱり単純に便利なんだよprintfは。

721 :デフォルトの名無しさん:04/07/14 01:23
私はやっぱりprintf()使うことにします。

722 :デフォルトの名無しさん:04/07/14 01:33
boostなんて糞
遅すぎてつかいものにならん

723 :デフォルトの名無しさん:04/07/14 01:53
使いどころを見つけるのがめちゃくちゃ下手糞なんですね ;-)

724 :デフォルトの名無しさん:04/07/14 01:57
boostが、遅い?
・・・あぁ、リリーススケジュールのことか。

725 :デフォルトの名無しさん:04/07/14 02:12
稲葉さんこんばんわ

726 :デフォルトの名無しさん:04/07/14 02:31
boost::spiritはコンパイルが遅すぎだね。

727 :デフォルトの名無しさん:04/07/14 09:16
boostはどこまで巨大化していくんだろう?
10年後にはえらいことになってそうな気が。

728 :デフォルトの名無しさん:04/07/14 09:22
前、cppll BBS で、こんなの見つけた。

double d = 1.23;
cout << ( "d = " % _f["4.2"] )( d ) << endl;

729 :デフォルトの名無しさん:04/07/14 10:25
>>727
ライブラリの巨大さとバイナリ出力ファイルのサイズへの影響を誤解する馬鹿も増えてそう。

730 :デフォルトの名無しさん:04/07/14 11:58
そんな馬鹿が増えると心配する馬鹿は>>729だけ。

731 :デフォルトの名無しさん:04/07/14 15:10
や、やっぱりprintf()が最強でしゅね。

732 :デフォルトの名無しさん:04/07/14 15:22
>>730
現時点でも多いけどな、テンプレートの特性を知らないアフォ。

733 :デフォルトの名無しさん:04/07/14 15:48
export

734 :デフォルトの名無しさん:04/07/14 15:51
すげえ。ダイナミックリンク(ry

735 :デフォルトの名無しさん:04/07/14 20:05
import

736 :デフォルトの名無しさん:04/07/14 22:26
impo orz

737 :デフォルトの名無しさん:04/07/14 22:51
>>692
あとはハードウェアにもよる。PlayStation 2 なんかだとコストを削減するため
数値演算コプロセッサは単精度浮動小数点演算のみのサポート。倍精度は
ソフトウェア的に処理するからムチャクチャ遅い。

738 :デフォルトの名無しさん:04/07/15 02:42
クラスAを
グローバルとクラスBのメンバとして宣言するために

クラスAの定義を書いたヘッダーを
main.cppとクラスBの定義を書いたヘッダーでインクルードすると
もう定義されてると言われますが

こういう場合どうすればいいんでしょうか?

739 :デフォルトの名無しさん:04/07/15 02:46
>>738
インクルードガード
意味がわからんかったらググれカレー

740 :デフォルトの名無しさん:04/07/15 02:47
>>738 ヘッダファイルにインクルードガードをつける

741 :デフォルトの名無しさん:04/07/15 03:03
>>739-740
どうもでした

742 :デフォルトの名無しさん:04/07/15 05:15
冗長インクルードガードってやるに越したことはないでしょうけど、
実際やってる人ってどのくらいいるのでしょう。
私はせいぜい内部インクルードガードで済ましちゃってます。
実際、コンパイル時間とかそんなに変わるものですか?
10年前のマシンならあったほうがいいのかも。。。

743 :デフォルトの名無しさん:04/07/15 05:31
>>742
新規ヘッダはすべてやってるよ

744 :デフォルトの名無しさん:04/07/15 06:45
VCのクラスウィザード使うとインクルードガードが記述されるじゃん。
インクルードガードって単語知らなかったよ。
名前を知らなくても自然に習得するような希ガス。

745 :デフォルトの名無しさん:04/07/15 07:04
そんな言葉は始めて聞いた。ただのいふでふじゃねーか

746 :デフォルトの名無しさん:04/07/15 07:07
お前らの使ってるインクルードガードは偽物。
本物のプログラマーが使うのはこれ。
#ifdef MYHEADER_H
#error MYHEADER_H
#endif
#define MYHEADER_H

747 :デフォルトの名無しさん:04/07/15 08:09
http://www.open-std.org/jtc1/sc22/wg21/
> News 2004-07-14: The C++ Standard Library Issues List (Revision 30) is available.

748 :デフォルトの名無しさん:04/07/15 08:46
>>742
冗長インクルードガードはやってるのを見たこと無いな。
実際言葉も知らなかったし。
ググッた先のページ見たらコンパイル時間もほとんど変わらないようだ。

749 :デフォルトの名無しさん:04/07/15 11:30
インクルードガードって用語初めて知って、
早速今日、会社で使っている香具師いるだろ。
なっ、そこのもまえw

750 :デフォルトの名無しさん:04/07/15 11:32
#pragma once使えよぼけ

751 :デフォルトの名無しさん:04/07/15 11:39
習慣として両方入れてる。

752 :デフォルトの名無しさん:04/07/15 11:45
つーかここ1年ぐらい1からヘッダファイル自分で作った記憶がないな。
そんなもんにIDEの仕事だろ?

753 :デフォルトの名無しさん:04/07/15 12:02
インクルードガード知らないのって問題あるだろ。

754 :デフォルトの名無しさん:04/07/15 12:04
Webで見た限り、冗長インクルードガードなるものの優位性がわからんのだが・・・。
マクロ変数を複数ヘッダーファイルで共有する必要がある時点でアフォだと思う。

755 :デフォルトの名無しさん:04/07/15 12:18
>>754
一万行のヘッダファイルがあったとして
冗長なしだとプリプロセッサが数万行処理するのに対して
ありだと一万行で済むとかそういう話じゃないの。
コンパイル速度にはほぼ影響しないだろうね。

756 :デフォルトの名無しさん:04/07/15 12:47
コンパイル時間ではなくコーディング時間の短縮こそが
プログラマの努力すべき課題だしね。
エンドユーザにとってコンパイル時間なぞどうでもいいし。

757 :デフォルトの名無しさん:04/07/15 12:54
プリプロセッサって
#if 0〜#endifの領域ってどう処理するんだっけ?
コメントと同様にスペースに置換?

758 :デフォルトの名無しさん:04/07/15 12:56
コンパイラに依存する処理を、具体的な製品名を上げずに、そこで質問して何を得ようというのか、
分かりやすくかつ明確に答えてください。

759 :デフォルトの名無しさん:04/07/15 13:47
配列の初期化で

char buf[100] = {0};

とやると、最初の要素の後ろが全て0で初期化されると聞いたことがあるんですけど
これは言語規格で定められているんですか?
VC++6.0ではそのようなコードが吐かれているのを確認したのですが…

760 :デフォルトの名無しさん:04/07/15 13:55
>>759
その通りに規格で決められています。構造体も然り。

761 :デフォルトの名無しさん:04/07/15 13:59
>>757
#if 0と#endifの行自身も含め改行文字以外を削除。
一応#if 0と#endifの中もソースコードの扱いなのでその中でもコメントなどは認識される。

762 :760:04/07/15 14:19
>>760
ありがとうございました。
今までmemsetとかstd::fillでやってましたが
こっちの方が見た目すっきりしてていいですね。

763 :デフォルトの名無しさん:04/07/15 14:25
>>762
指定しただけプログラムのサイズが増えるからやめとけ。

764 :デフォルトの名無しさん:04/07/15 14:31
サイズくらいきにすんなよ〜


765 :デフォルトの名無しさん:04/07/15 14:32
>>764
むしろサイズこそ全て。

766 :デフォルトの名無しさん:04/07/15 14:35
無駄に無駄を許容するのはC++の美徳に反するな

767 :デフォルトの名無しさん:04/07/15 14:37
10倍に?

768 :デフォルトの名無しさん:04/07/15 14:48
volatileの扱いですが

struct A {
 void func() {
  i=1; //(1)
  i=2;
 }
 volatile int i; //(2)
};
A a;
void main() {
 a.func();
}

a) VC7.1で上のコードをそのまま実行するとfuncがmain内に
inline展開されるんだけど、(1)のコードが実行されていない模様。
b) (1)を何度も繰り返した場合、inline展開されずfunc内で全ての
代入が行われている。
c) (2)を非volatileにした場合、a/b)のいずれの場合でも(1)は省略される。
d) (2)をvolatileのままグローバル変数に移動するとa/b)のいずれの場合でも
(1)は省略されない。

私のイメージとしては(b)〜(d)は正しく、(a)がおかしいような
気がするのですが。これって
i) VCのバグor仕様
ii) C++の仕様(メンバ変数にvolatileつけるのが間違ってる)。
のどっち?


769 :デフォルトの名無しさん:04/07/15 15:25
volatile A a;

770 :768:04/07/15 15:33
>>769
それでもa)に関しては結果変わらず。

771 :デフォルトの名無しさん:04/07/15 16:28
#include <stdio.h>
int a;
int main()
{
char str[127];

printf("文字列を入力してください(127文字以内)\n");

scanf("%s",str);

for(a=0;a<128;a++){

str[a]=str[a]+1;

printf("\t%s!\n" , str);
}
return 0;
}

これってどうよ?

772 :デフォルトの名無しさん:04/07/15 16:32
>>771
バッファのサイズが小さくない?

773 :デフォルトの名無しさん:04/07/15 16:36
>>771
-for(a=0;a<128;a++){
+for(a=0;a<127;a++){


774 :デフォルトの名無しさん:04/07/15 16:44
str[a] = str[a] + !!str[a]; の方が良くない?

775 :デフォルトの名無しさん:04/07/15 17:00
>>771,774
これは一体何をしたいの?


776 :デフォルトの名無しさん:04/07/15 17:41
グローバル変数にしてる意味はなに?

777 :デフォルトの名無しさん:04/07/15 17:59
>>768
volatileに定義などない!


778 :デフォルトの名無しさん:04/07/15 18:07
>>771
>scanf("%s",str);
sgets(str, sizeof str / sizeof *str, stdin);かscanf("%127s", str);
>str[a]=str[a]+1;
str[a]++;かstr[a] += 1;
>int a;
どうでもいいがループカウンタの変数は i が一般的
for (int i = 0; i < sizeof str / sizeof *str; i++)

779 :デフォルトの名無しさん:04/07/15 18:10
仕事じゃiなんか使わないけど

780 :デフォルトの名無しさん:04/07/15 18:14
ひでえ仕事だな

781 :デフォルトの名無しさん:04/07/15 18:14
本当にどうでもいいな

782 :デフォルトの名無しさん:04/07/15 18:19
>>768
むしろ最適化を切ってみたらどうか?

783 :デフォルトの名無しさん:04/07/15 18:22
>>779
まさかiCountとか...(((( ;゚Д゚)))ガクガクブルブル
キモスギル

784 :デフォルトの名無しさん:04/07/15 18:24
だからiの話はするなとあれほど言ったのに・・・

785 :デフォルトの名無しさん:04/07/15 18:26
>>775
たぶん >>774 は、末尾の '\0' に1足さないようにするため。

786 :デフォルトの名無しさん:04/07/15 18:39
idxじゃだめ?

787 :デフォルトの名無しさん:04/07/15 18:40
ローカル変数にはtheを付ける。
theIdxみたいな感じ。

788 :デフォルトの名無しさん:04/07/15 18:47
マジかよ

789 :デフォルトの名無しさん:04/07/15 18:49
適当な名前付けでわかりにくくならない?


790 :デフォルトの名無しさん:04/07/15 18:56
ローカルの l をつけて混乱させる
li1とか

791 :デフォルトの名無しさん:04/07/15 18:57
メンバ変数の接尾辞には_付ける・
ローカル変数は普通に。
グローバル変数はglobal名前空間の中に。
ループ変数はi,j,k…
但しループさせるのがx,y座標だったらx,y

792 :デフォルトの名無しさん:04/07/15 18:57
グローバル変数にはgを付ける。
gFlagみたいな。


793 :デフォルトの名無しさん:04/07/15 18:58
分かりにくい書き方しちゃったけどglobal名前空間は
::
じゃなくて
global::
の事ね。

794 :デフォルトの名無しさん:04/07/15 18:59
あとでエディタの一括文字列変換とか使うときに、
そこそこ冗長な名前にしておいたほうが都合がいいことがあった。
だから、あまりiとかjとかって短いのは抵抗があるな〜。

795 :デフォルトの名無しさん:04/07/15 19:00
>>791
オレも同じ。
あと変数名は単語の区切りには_使う
メンバ関数名は最初は小文字、その他各単語の最初は大文字
母音を省略するような真似はしない

796 :デフォルトの名無しさん:04/07/15 19:02
変数の役割によってなんか付ける。
Cnt・・・カウンタ。例:LoopCnt
Tbl・・・テーブル、配列。例:DataTbl[ ...]

797 :デフォルトの名無しさん:04/07/15 19:16
>>785
なるほど.774のアドバイスの意図は分かりました.
が,771は一体何なんだ?
774がレスしてるので分かってるのかと思い振ってみたのだけど.


798 :デフォルトの名無しさん:04/07/15 19:18
iCounterってキモイ?
結構やってる人、多いんじゃない?

799 :デフォルトの名無しさん:04/07/15 19:18
>>797
たんに「ROT1 を動かしてみて、文字コードというものについて実体験しましょう」
ってあたりじゃないのかなぁ。(rot1 は rot13 からの造語ね)

800 :デフォルトの名無しさん:04/07/15 19:19
>>798
あんましいないだろ。

801 :デフォルトの名無しさん:04/07/15 19:21
>>798
漏れ的には "i" には強くインデクサっぽい意味を感じてしまうので、
個人的にはカウンターとか個数とかには絶対使わない。

インデックサじゃないカウンタや個数は cほにゃらら、にする。

802 :デフォルトの名無しさん:04/07/15 19:21
自分の世界が全世界

803 :デフォルトの名無しさん:04/07/15 19:22
iはインターフェース

804 :デフォルトの名無しさん:04/07/15 19:22
Windowsプログラミングならね...

805 :デフォルトの名無しさん:04/07/15 19:23
>>803
大文字でしょ?

806 :デフォルトの名無しさん:04/07/15 19:25
>>803
Iだろ

807 :デフォルトの名無しさん:04/07/15 19:25
iは世界共通の愛

808 :デフォルトの名無しさん:04/07/15 19:26
int i;

ってやるとコンパイルエラーになるんですけど...orz

809 :デフォルトの名無しさん:04/07/15 19:26
なんか空きが長いぞ

810 :デフォルトの名無しさん:04/07/15 19:27
全角スペースでした。逝ってきます...0rz

811 :デフォルトの名無しさん:04/07/15 19:28
std::string str;
char chr;
int integer;
double real;

812 :デフォルトの名無しさん:04/07/15 19:28
>>810
なんか顔が長いぞ。


813 :デフォルトの名無しさん:04/07/15 19:29
doubleを打ち込むとき、今でも「どうぶる」と
口ずさみながらキーボード叩いてます。
そんな人は私以外にも全世界に3人はいると思います。

814 :デフォルトの名無しさん:04/07/15 19:30
なんだか今日はほのぼのしているスレですね

815 :デフォルトの名無しさん:04/07/15 19:31
charはキャラだよ

816 :デフォルトの名無しさん:04/07/15 19:31
integerって昔、ホンダが車出してなかたっけ?


817 :デフォルトの名無しさん:04/07/15 19:32
それを言うなら、integra?
スペル間違えたかも。まあ、確かに紛らわしいが。

818 :デフォルトの名無しさん:04/07/15 19:34
トヨタはキャピだっけ?

819 :デフォルトの名無しさん:04/07/15 19:41
>>813
私もです。


820 :デフォルトの名無しさん:04/07/15 19:47
                \ │ /
                 / ̄\  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
               ─( ゚ ∀ ゚ )< ストゥディオ!
                 \_/  \_________
                / │ \
                    ∩ ∧ ∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ ∩∧ ∧∩\( ゚∀゚)< ストゥディオ!
ストゥディオ〜〜〜〜! >( ゚∀゚ )/ |    / \__________
________/ |    〈 |   |
              / /\_」 / /\」
               ̄     / /


821 :デフォルトの名無しさん:04/07/15 20:10
いてらとら

822 :デフォルトの名無しさん:04/07/15 20:14
>>813
俺もだ

823 :デフォルトの名無しさん:04/07/15 20:24
こうと

824 :デフォルトの名無しさん:04/07/15 20:29
2つの行列の計算を行うプログラムがわかりません;;
教えて欲しいです。2行2列で。

825 :デフォルトの名無しさん:04/07/15 20:31
宿題はすれ違い

826 :デフォルトの名無しさん:04/07/15 20:32
Javaってなんの言語で出来てるの。
C++で出来てるって聞いたけどホント?

827 :デフォルトの名無しさん:04/07/15 20:46
JavaはJava言語でできてます。
Javaコンパイラが何でできてるかは、コンパイラを作った会社に聞いてください。

828 :デフォルトの名無しさん:04/07/15 20:53
だっせー

829 :デフォルトの名無しさん:04/07/15 21:17
Java3Dは何でできてるの?

830 :デフォルトの名無しさん:04/07/15 21:20
赤ちゃんはどうやってできるのぉ?

831 :デフォルトの名無しさん:04/07/15 21:38
コウノトリさんがはこんでくるのぉ

832 :デフォルトの名無しさん:04/07/15 22:18
std::string s;

s.c_str() が返すアドレスと &*s.begin() で得られるアドレスは
同じことは保証されているんでしょうか?
それとも実装依存ですか?

833 :デフォルトの名無しさん:04/07/15 22:22
>>832
保証されてない

834 :デフォルトの名無しさん:04/07/15 22:40
>>832
前者はconst char*で後者はiteratorが返るんだ。違って当然。

835 :デフォルトの名無しさん:04/07/15 22:42
>>834
ha?

836 :デフォルトの名無しさん:04/07/15 23:15
>>834
すげえ知ったかですね

837 :デフォルトの名無しさん:04/07/16 00:02
>>834
>&*s.begin() で得られるアドレス

838 :834:04/07/16 00:04
攣れた!

839 :デフォルトの名無しさん:04/07/16 00:11
でました。苦し紛れの釣り宣言。みっともないね。

840 :デフォルトの名無しさん:04/07/16 00:16
また釣れたw

841 :839:04/07/16 00:21
釣れた!

842 :デフォルトの名無しさん:04/07/16 00:24
      ゃ    こ
    じ             の
 
 ん                   ス

な         ぁ   っ         レ
       ぁ         !
                       は
      ぁ      !  !
                      あ
      ぁ
                    あ
         ぁ       あ
             ぁ

843 :デフォルトの名無しさん:04/07/16 00:26
日本で一番早く梅雨が明けたスレはここです

844 :デフォルトの名無しさん:04/07/16 00:32
BCC5.5を使っています。
メニューをクリックしたら画面に文字を出力するプログラムを組んでいます。
でも、どうしても画面に出力した文字が ¢ になってしまいます。
どうしてでしょうか。

845 :844:04/07/16 00:33
嗚呼しもた。
Windowsアプリケーションを作っています。

846 :デフォルトの名無しさん:04/07/16 00:45
一時オブジェクトの寿命なのですが

class A
{
public:
void func() { /* 処理 */ }
};

A& hoge(A& a)
{
return a;
}

hoge(A()).func();

VC++6.0の場合、funcが呼び出しが終わった後に一時オブジェクトのデストラクタが走りました。
また、
hoge(A()), hoge(A());
としたら、2番目のhogeのA()のデストラクタ→最初のA()のデストラクタ、となりました。

ということは、一時オブジェクトの解体は ; までの処理が終わったときに行われる
という解釈でいいのでしょうか?



847 :デフォルトの名無しさん:04/07/16 01:09
>>846
そだよ。

848 :デフォルトの名無しさん:04/07/16 01:15
>>847
ありがとうございました。
今まで意識したこと無かったのですが、うまいことできてますねC++って。

849 :デフォルトの名無しさん:04/07/16 01:22
>>834は正しいんじゃないのか?
ANSI準拠が進んだVC.NETで試してみ。別物として弾かれるはずだ。

850 :849:04/07/16 01:26
記憶違いだった。

851 :デフォルトの名無しさん:04/07/16 02:18
記憶とかの問題じゃないから

852 :デフォルトの名無しさん:04/07/16 02:25
>>822
全世界であなたで3人目です。


853 :デフォルトの名無しさん:04/07/16 02:48
>>852
探せばあるものだ
ttp://www7.plala.or.jp/imajo/ke/samp/samp06.html

854 :デフォルトの名無しさん:04/07/16 04:06
>>853
感動をありがとう

855 :デフォルトの名無しさん:04/07/16 05:26
ドウブル型ワロタ

856 :デフォルトの名無しさん:04/07/16 08:13
>>853
よく見つけた(w

857 :デフォルトの名無しさん:04/07/16 09:05
ドイツ語ではドウブルと読むはず。

858 :デフォルトの名無しさん:04/07/16 10:00
どうぶるではなく、どうぶれな俺は1人目。

859 :デフォルトの名無しさん:04/07/16 10:31
>>857のアフォな提言に触発されてググってしまった。
ドイツ語ではdoubleではなくdoppel。

以後、ドッベル型でおながいします。

860 :デフォルトの名無しさん:04/07/16 10:40
ちなみに英字郎(http://www.alc.co.jp/)でdoubleを引くと
・ double
【名-4】 《音楽》ドゥーブル(の曲)
なんて意味もある.


861 :デフォルトの名無しさん:04/07/16 10:45
ドッペルゲンガーの「ドッペル」ってそういう意味かあ。
勉強にナルネ。


862 :デフォルトの名無しさん:04/07/16 11:02
>>860
フランス語圏ではド(ゥ)ーブル。

863 :デフォルトの名無しさん:04/07/16 11:14
もしかしてドイツ語対応のC++コンパイラなんてあるのかな?
とふと思ったりして。

864 :デフォルトの名無しさん:04/07/16 11:15
ウムラウトとかめんどいかも。
標準ライブラリの関数名もドイツ語とか。
ああ、また一から勉強かよ...orz

865 :デフォルトの名無しさん:04/07/16 11:19
つまんね

866 :デフォルトの名無しさん:04/07/16 11:31
>>863
なかったらドイツ人どうするんだよ

867 :デフォルトの名無しさん:04/07/16 11:59
へ、あんの?

868 :デフォルトの名無しさん:04/07/16 12:14
オンドゥル語コンパイラも作って

869 :デフォルトの名無しさん:04/07/16 13:05
VC6からVC2003ToolKitにかえたら
テンプレート引数に浮動小数点型が指定出来なくなりました。
どうやらISOに準拠した為なんですが、なぜそうなったのでしょう?
何か理由があるんですか?

template< float f > ← エラー

870 :デフォルトの名無しさん:04/07/16 13:18
>>869
コンストラクタの引数に取ればいいだけじゃないか。

ただ、それだとそれを添え字にする配列を作ったりできないし、
型名を引数に取ってその型の変数を作ることもできない。
だからテンプレートって仕組みでやれるようにした。
逆にそれ以外はテンプレートの出番じゃないってこと。

871 :デフォルトの名無しさん:04/07/16 13:39
#include <stdio.h>

int a;

int main()
{
char str[128];

for(a=0;a<128;a++){


printf("文字列を入力してください(127文字以内)\n");
scanf("%s",str);
if(str[a]==NULL)
{
break;
}
str[a] = str[a]+1 ;
printf("\t%s!\n" , str);

}

return 0;

}

872 :デフォルトの名無しさん:04/07/16 13:56
>>871
#include <stdio.h>
int main()
{
 char str[128];
 printf("文字列を入力してください(127文字以内)\n");
 scanf("%127s",str);
 for(int i = 0; i < 127; i++)
  if(str[i] == '\0')
   break;
  else
   str[i]++;
 printf("\t%s!\n" , str);
 return 0;
}

873 :デフォルトの名無しさん:04/07/16 14:08
std::basic_stringのことなんですが
VC6に付いてる<string>を見ると

std::string a("abc"), b;
b = a;

とすると、aとbが保持する文字列の実体は同一で、参照カウンタで文字列の実体の寿命を管理してました。
参照カウンタはクリティカルセクション等で保護されてないようなので
a, bを別々のスレッドで同時に操作すると危険ですよね?
また、

std::string a("abc"), b;
b = a.c_str();

とすると、a, bが保持する文字列実体は別々になるようです。

こういう振る舞いを定義してる規格とかあるのでしょうか?

スレッドに渡す文字列を上の b = a; のように渡すと危ないですよね。
かといって b = a.c_str(); として、別の実体が作られることを期待していいものかどうか…

ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcstdlib/html/vclrfthreadsafetyinstandardclibrary.asp
>For writes to different objects of the same class, the object is thread safe for writing:
>・From one thread when no readers on other threads.
>・From many threads.

これには安全だと書いてありますが、上の b = a; では当てはまらないのではないでしょうか?

874 :デフォルトの名無しさん:04/07/16 14:39
>>873
http://support.microsoft.com/default.aspx?scid=kb;en-us;813810


875 :デフォルトの名無しさん:04/07/16 14:41
日本語のもあった
http://support.microsoft.com/default.aspx?scid=kb;ja-jp;813810

876 :873:04/07/16 15:55
>>874-875
まさにこれですね。
いずれ.NETを買うつもりですがとりあえず
前から入れようと思ってたSTLPortを入れてみます。
ありがとうございました。

877 :デフォルトの名無しさん:04/07/16 18:44
C++ では stdio をやめて、sprintf とかでも ostringstream にした方がいいですか?
Effective C++ では stdio とは決別すべきと書いてあったのですが、イマイチ踏み切れません…

878 :デフォルトの名無しさん:04/07/16 18:58
ostringstreamがそんなに嫌いならboost::formatを使え。
sprintfがどうしても使いたいならsnprintfを使え。

879 :デフォルトの名無しさん:04/07/16 19:06
あ、嫌いじゃないですよ。全然。
ただ MS とかのコード見ててもあまり登場しないもんだから
なんか問題があるんじゃないかと思ってたわけです。。

880 :デフォルトの名無しさん:04/07/16 20:03
printf 系の場合、

string s = "aaaaa";
printf( "%d", s );

とかやってもコンパイルエラーにならない。
その点、basic_ostream 系ならば、そのあたり適切に判定してくれるし、
自分で型定義もできて便利。

881 :デフォルトの名無しさん:04/07/16 20:15
>>832
ランダムイテレータ の場合、ita と itb をランダムイテレータだとすると、

ita == itb; が true の場合、
*ita == *itb; が true を返すことは企画上保障されているが、
&*ita == &*itb; にかんしては規程されていない。

たとえば、UTF-8 文字列に対応した、UTF-8 Iterator itu があったとして、
*itu が UCS-4 のコードポイントを int で返したとしてもそれは問題ない。


882 :881:04/07/16 20:15
でも、>>832 は、std::string についていっているわけだから、
最後の2行は余計か。スマンな

883 :デフォルトの名無しさん:04/07/16 22:13
おまいら、printf が好きですね

884 :デフォルトの名無しさん:04/07/16 22:27
今のところprintfが最強だからね。

885 :デフォルトの名無しさん:04/07/16 22:59
printzが最強

886 :デフォルトの名無しさん:04/07/16 23:19
>>869
template<float &f> に汁

887 :デフォルトの名無しさん:04/07/17 00:45
「クラスAとクラスBの関連」をC++で実装する場合
これで良いのでしょうか?

class B;

class A{
    B* related_b_ptr;
public:
    A( B* b_ptr ){ related_b_ptr = b_ptr; }
};

class B{
    A* related_a_ptr;
public:
    B( A* a_ptr ){ related_a_ptr = a_ptr; }
};

関連全てにこんな事やるのは面倒ですし、感覚として間違っている
気がするのですが、代替手段が分からないんです。

例えば引数でその都度、関連クラスを渡したりすのは、第3のオブジェクトが
無理矢理必要なこともあって、全然オブジェクト指向じゃなくなる気がします。

関連って実際はどんな事なんでしょうか。

888 :デフォルトの名無しさん:04/07/17 00:49
>>887
class A のインスタンスをどうやって作るんだ?

889 :デフォルトの名無しさん:04/07/17 00:50
>>887
friendクラスとか、入れ子クラスは?

890 :デフォルトの名無しさん:04/07/17 00:52
>>887
(889の続き)
どーせ、モロ依存しまくりなら
変に分離して書こうとすること自体間違ってる

891 :デフォルトの名無しさん:04/07/17 00:53
>>887
クロコクラスとか、グレコクラスとか

892 :デフォルトの名無しさん:04/07/17 01:14
>>887
UMLでいうところのnavigabilityが双方向ならそれでいいんじゃないですか?
「感覚として間違っている」のは、
実装方法ではなくnavigabilityが双方向であることだと思います。
循環依存ですから(それが必要なことももちろんある)

navigabilityが片方向なら、メンバとして持つなり
1対多ならコレクションでもつなりの実装方法があります。

生成は、包含なら包含元クラスで行いますし、
そうでない関連ならどこかに生成元がいるはずです。

893 :デフォルトの名無しさん:04/07/17 09:52
>>834
>>834
>>834
>>834

894 :887:04/07/17 10:30
すいません、すぐレス頂けるとは思わず。
皆さんレスありがとうございました。

>>888-891
インスタンスはポインタを介してなどでしょうか。
疑問に思っていた関連とは、どこにでもあるありふれた関連の事だったんです。
なのでfriendや入れ子は更に大げさかなと。

>>892
おかげで良く分かりました。言われてみれば関連といえど、その実態はほとんど全てが
片方向でした。難しいだけと思っていた専門用語が、ここまで便利とは…。

生成について、しばしばパターンなどと一項目あげて大げさに
取り上げられている理由も、合わせて理解できた気がします。

895 :デフォルトの名無しさん:04/07/17 10:58
char_traitsを見てて疑問に思ったのですが
char(0), char() と '\0'、wchar_t(0), wchar_t() と L'\0' は
等しくなることが保証されているんでしょうか?


896 :デフォルトの名無しさん:04/07/17 13:21
#include <iostream>

class A {
public:
  static int main() {
    std::cout << "main" << std::endl;
    return 0;
  }
};

int main = A::main();

何気なく書いてみたのですが、これが動いてしまう理由がわからないです。
int main = A::main(); と書いてるのにコンパイルできてしまうってことは、
mainはデフォルトで関数ポインタとして扱われるということでしょうか?

897 :デフォルトの名無しさん:04/07/17 13:40
>>896
初期化付きのグローバル変数なだけだろ。


898 :デフォルトの名無しさん:04/07/17 13:47
>896
これだとメイン2回実行されるの?
手元に今コンパイラないのでわかんね

899 :デフォルトの名無しさん:04/07/17 13:47
>int main
ってかいといて何言ってんだよw

900 :デフォルトの名無しさん:04/07/17 13:48
>>896
コンパイルはできるのはわかるけど動く?
mainが未解決とでるんだけど。

901 :デフォルトの名無しさん:04/07/17 13:49
>>896
リンカーはmainへ実行を移すコードcrt.oとリンクするけどmainの中は0が入ってる
その後ろに何があるかは環境による。
C++の処理系はmainと言うグローバル変数の初期化をcrt.oがmainを呼ぶ前に実行する
これがA::main()を実行しているのでメッセージは出力される。


902 :デフォルトの名無しさん:04/07/17 13:53
vector< char > v( istream_iterator< char >( cin ), istream_iterator< char >() );
が関数宣言になる使用を思い出したのは漏れだけではないはず

903 :デフォルトの名無しさん:04/07/17 15:12
何故コンパイルエラーになるか分かりません。

#include <iostream>
#include <algorithm>

struct A {
int x;
int y;
bool operator<(struct A a) {
if(this->x != a.x)
return this->x < a.x;
else
return this->y < a.y;
}
};

int main()
{
const int size = 100;
struct A a[size];
sort(&a[0], &a[size]);
return 0;
}

904 :デフォルトの名無しさん:04/07/17 15:13
エラーメッセージ

/usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/stl_algo.h: In function `const struct A & __median<A>(const A &, const A &, const A &)':
/usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/stl_algo.h:1283: instantiated from `__introsort_loop<A *, A, int>(A *, A *, A *, int)'
/usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/stl_algo.h:1320: instantiated from here
/usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/stl_algo.h:46: passing `const A' as `this' argument of `bool A::operator <(A)' discards qualifiers
/usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/stl_algo.h:47: passing `const A' as `this' argument of `bool A::operator <(A)' discards qualifiers
/usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/stl_algo.h:49: passing `const A' as `this' argument of `bool A::operator <(A)' discards qualifiers
/usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/stl_algo.h:53: passing `const A' as `this' argument of `bool A::operator <(A)' discards qualifiers
/usr/lib/gcc-lib/i386-redhat-linux/2.95.3/../../../../include/g++-3/stl_algo.h:55: passing `const A' as `this' argument of `bool A::operator <(A)' discards qualifiers


905 :896:04/07/17 15:13
レスどうもでした

>>898
1回だけ"main"と表示して終了するだけです。

>>900
bccでコンパイルして実行確認しました。

>>901
解かりやすい説明ありがとうございました。
プログラムの実行の仕組みとかも調べると、より理解も深まって面白そうですね。

>>902
使い方など、ぱっと見何だかわからないです。
勉強が必要ですね。


906 :デフォルトの名無しさん:04/07/17 15:25
>>903
- bool operator<(struct A a) {
+ bool operator<(const struct A &a) const{


907 :896:04/07/17 15:33
恩返しにと>>903にレスしようと思ったら、既にされてましたね。
g++ではなくbccのコンパイラだと>>903みたいのでもコンパイルできてしまったりして、
環境による大きく依存があるのだなぁと感じました。

そこで、さきほどの>>896のプログラムも少し試してみました。
bccでコンパイルしてWindows上で実行すると気づかなかったのですが、
g++でコンパイルしてLinux上で実行すると、"main"を表示したあと、
Segmentation faultで落ちてました。
これは>>901を参考に解釈すると、A::main()が実行されたあとに、
mainの後ろの不定な領域を実行しようとして落ちたという認識で良いのでしょうか?

908 :デフォルトの名無しさん:04/07/17 16:01
>>895 OK

909 :デフォルトの名無しさん:04/07/17 16:07
>>906
>sort(&a[0], &a[size]);
std::sort(&a[0], &a[size]);


910 :デフォルトの名無しさん:04/07/17 16:12
>>907
> mainの後ろの不定な領域を実行しようとして落ちたという認識で良いのでしょうか?
正解。

911 :906:04/07/17 16:17
>>909
2.95.3


912 :デフォルトの名無しさん:04/07/18 00:09
CHoge a,b,c;

c = a + b;
をできるように

CHoge& CHoge::operator+(CHoge& hoge)
{
CHoge tmp;
tmp.value = (*this).value + hoge.value;
return tmp;
}

なんてoperatorを書いたのですが、一時オブジェクトの参照を
返してもいいんですかね?


913 :デフォルトの名無しさん:04/07/18 00:17
this->valueとかけよ。

914 :デフォルトの名無しさん:04/07/18 00:32
>912
CHoge のデストラクタで value = 0 と代入してみ

915 :デフォルトの名無しさん:04/07/18 00:41
>>912
自分で参照とか言ってるのに何言ってんの?

916 :912:04/07/18 00:45
解決しました

917 :デフォルトの名無しさん:04/07/18 03:27
一番最悪なパターンですね

918 :デフォルトの名無しさん:04/07/18 03:30
なんか発情してきました
どうすればいいですか?

919 :918:04/07/18 03:33
解決しました

920 :デフォルトの名無しさん:04/07/18 03:37
早漏ですね

921 :デフォルトの名無しさん:04/07/18 08:22
もしかするとすれ違いかもしれませんが、一応C++で開発してますのでこちらに質問させてください。

いま引数リスト付のログ用関数を次のように考えました。
bool LogOut(char * file, int line, char * func, int type, char * fmt, ...);

ここでこの関数をマクロでもっと簡単に呼びたいのですが引数リストの部分をどうしたら良いか分りません。
次のような感じでマクロ化したいのですが良い方法はないでしょうか?

#define LOGERROR(s) LogOut(__FILE__, __LINE__, FUNCNAME, LOGTYPE_ERROR, s);
(最後のsの部分以降が関数のプロトタイプと食い違いますよね?)

よろしくお願いします。


922 :デフォルトの名無しさん:04/07/18 08:50
>>921
それでいい。
ただしマクロを使うときにLOGERROR((1,"234",4.5))のように括弧を二重にする。
あとセミコロンは取り除いた方がいい。

923 :921:04/07/18 09:17
レス、ありがとうございます。
でも
LOGERROR( ("ファイル名が長すぎます。長さ:%d", strlen(fname) ) );
としたところ、

error C2664: 'LogOut' : 5 番目の引数を 'unsigned int' から 'char *' に変換できません。
となってしまいました。

書き忘れましたがVC++6.0SP6です。


924 :デフォルトの名無しさん:04/07/18 09:45
漏れなら以下の様にする。自慢じゃないが試してない。

void _WriteLocate(const char* fname, int pos);
void _WriteContent(const char* fmt, ...);

#define LOGERROR _WriteLocate(__FILE__, __LINE__);_WriteContent

925 :デフォルトの名無しさん:04/07/18 09:48
>>923
#define LOGERROR(fmt,s) LogOut(__FILE__, __LINE__, FUNCNAME, LOGTYPE_ERROR,fmt,s)

LOGERROR("ファイル名が長すぎます。長さ:%d",(strlen(fname)));
この例みたいに1つなら囲まなくてもいいけど。

926 :デフォルトの名無しさん:04/07/18 10:04
>>924-925
ありがとうございます。
>>925さんの指摘どおりにLOGERRORにfmtをマクロに追加し、
カッコで囲むことで出来ました。



927 :デフォルトの名無しさん:04/07/18 12:16
vc++5でLANでつながっている10台のパソコンに、
ファイルを作成しようとしています。
しかしファイルが作成できるパソコンと出来ないパソコンがあります。
ファイルが作成出来なかったパソコンに対し
エクスプローラではファイルを作ることはできます。
どうしてvc++5ではファイルを作れなくて
エクスプローラでは可能なのかわかりません。

ファイルは次の様に作ろうとしています。
fopen("\\\\target\\folder\\test.txt,"w");

コンパイラはvc++5.0です。
OSは作成元がWIN XP(PRO)、
作成先はXP(home)や2000です。


928 :デフォルトの名無しさん:04/07/18 14:51
>>927
スレ違い。
ちなみにエクスプローラはコソーリとコネクションを張る処理をしているから同じことをしてやればいいだけ。
難しい処理じゃないから(APIを一つ呼ぶだけ)、自力で頑張ってみそ。
どうしてもわからんかったら今度は他所で質問すれ。

929 :デフォルトの名無しさん:04/07/18 16:09
T* ptrArray[];
T Array[];
があった時、
ptrArrayの指す実体をArrayにコピーできるようなSTLアルゴリズムはありますか?

for(int i=0; i</*prtArrayのサイズ*/; ++i)
{
 Array[i] = * ptrArray[[i];
}
をもう少しSTL的にできないかと言う事です。

copy(ptrArray, ptrArray + /*ptrArrayのサイズ*/, Array);
みたいな感じで。

930 :デフォルトの名無しさん:04/07/18 16:50
generate

931 :デフォルトの名無しさん:04/07/18 16:53
>>929
boostがあるなら,indirect_iteratorを使って

std::copy(boost::indirect_iterator(ptrArray),
boost::indirect_iterator(ptrArray + /*ptrArrayのサイズ*/),
Array);

とか,Boost.Lambdaを使って

std::transform(ptrArray, ptrArray + /*ptrArrayのサイズ*/, Array, *_1);

とかですかね.boostが無ければ上のtransformのヤツの最後の引数を
ファンクタで書き換えてくださいな.

932 :?w??:04/07/18 18:44
int x=10;

int *p=new int;
*p=10;
についてなんですが…
後者の省略形が前者ということ?
ってか後者の書き方が面倒くさいから、前者が生まれたのか?
なんか前者の書き方ってC++らしくない希ガス。

933 :デフォルトの名無しさん:04/07/18 18:47
全く違いますよ。

934 :デフォルトの名無しさん:04/07/18 18:49
ネタにマジレス

935 :?w??:04/07/18 18:51
>>933
前者は変数にxという名前がつく点が違うってことすか。
そもそも後者のpの指す領域には指定された名前がないわけですし。
それ以外にも違いがあるんすか。

936 :935:04/07/18 18:53
>前者は変数にxという名前がつく点が違うってことすか。

というより、
変数→確保された領域

937 :デフォルトの名無しさん:04/07/18 18:54
前者はスタック上に置かれた変数xを10で初期化
後者はヒープ上に確保された領域をポインタ変数pに保存後
その領域に10を格納するという意味です。

938 :デフォルトの名無しさん:04/07/18 19:01
スタックのないマシンならどうなる?

939 :932:04/07/18 19:01
>>937
なるほど。スタックかヒープかの違いもあるわけだ。
(まぁスタックとかヒープがなんたらか、よくわかなんのですが、
メモリにそういう領域があるってことは想像出来ます。まぁその
辺りは調べてみます。)
さんくす。

940 :デフォルトの名無しさん:04/07/18 19:22
>>938
ソフトでスタック作ってそれを使うか、最適化次第ではレジスタで済ます。

スタックを一切使わない・作らない処理系の実装ってあるんかな?

941 :デフォルトの名無しさん:04/07/18 19:45
>>938
少なくともC/C++(のソースをコンパイルしたもの)が動いて
スタックのないマシンなんて聞いたことがないんだが、
実際にそういうマシンがあるなら参考までに教えて欲すぃぽ。

942 :デフォルトの名無しさん:04/07/18 19:59
スタックって、ハードウェアスタックのことか?
それとも GETMAIN とかでバックアップのチェインを作ってるのも含むのか?

943 :デフォルトの名無しさん:04/07/18 20:08
C++ で C の getch に相当する関数ってあります?

944 :デフォルトの名無しさん:04/07/18 20:19
> C++ で C の getch に相当する関数ってあります?
getch

945 :デフォルトの名無しさん:04/07/18 20:48
>>937
スタックやヒープなんて低レベルで実装依存な話をする以前に、インスタンスが破壊
されるタイミングが違う。

946 :guru ◆BFP4DgQ4Jg :04/07/18 23:43
継承されたクラスのコンストラクタは基底クラス→派生クラス
の順に実行されますが、下記のようなクラスを考えた場合

Derived d(777);
を実行すると、確かに
Base(int x)
Derived(int x)
と実行される。

派生クラスのコンストラクタが実行されたときに初期化子によって
もう一回Base(int x){}が実行されそうですが、実際には実行されません。

この件について私とディベートできる方いませんか?

class Base
{
public:
Base(){}
Base(int x){}
};

class Derived : public Base
{
public:
Derived(){}
Derived(int x):Base(x){}
};


947 :デフォルトの名無しさん:04/07/18 23:54
ちょっとだけワロタ

948 :デフォルトの名無しさん:04/07/18 23:56
>946
何かの釣りか?

>派生クラスのコンストラクタが実行されたときに初期化子によって
まず基底クラスのコンストラクタを起動した後、
派生クラスの部分の初期化がなされるんだから、何ら不思議もないんだが。

949 :guru ◆BFP4DgQ4Jg :04/07/18 23:58
じゃあ、
Base(){}
Base(int x){}
のどちらを実行するでしょうか?
また、その理由は?

950 :デフォルトの名無しさん:04/07/19 00:02
引数がなければ前者を、あれば後者をつかう
だけのこと

951 :guru ◆BFP4DgQ4Jg :04/07/19 00:06
>>950
ばかは引っ込んでて!

952 :デフォルトの名無しさん:04/07/19 00:10
関数のオーバーロードも知らんのか?

953 :デフォルトの名無しさん:04/07/19 00:10
引っ込んでるけど、俺がばかな理由を
教えてくれんか?

954 :デフォルトの名無しさん:04/07/19 00:11
>>952
guru に向かってなんということを!!

955 :デフォルトの名無しさん:04/07/19 00:11
>>953
>>950の改行の位置かな?

956 :guru ◆BFP4DgQ4Jg :04/07/19 00:11
もう結構です。2chでC++使える奴はいなそうですね
バイバイキーンw

957 :デフォルトの名無しさん:04/07/19 00:13
結局何のguruだったのだろう。。。

958 :デフォルトの名無しさん:04/07/19 00:24
>>946
デフォコンを定義する必要性は?
デストラクタについての議論を恣意的に避けているようにも見える。

ディベート以前の問題をクリアしてからまたおいでw

959 :デフォルトの名無しさん:04/07/19 00:26
グルグル。

960 :デフォルトの名無しさん:04/07/19 00:27
つーか、わざわざ初期化子を指定しておいてなぜ?といわれると困るなw

961 :デフォルトの名無しさん:04/07/19 00:33
>>956
「ばか」とか「奴」とかプログラミング以前の問題だなw
二度とくるな糞

962 :デフォルトの名無しさん:04/07/19 00:49
こんな馬鹿久しぶりに見たぜ。俺としてはまた来て欲しい(w

963 :デフォルトの名無しさん:04/07/19 00:49
自分のバカさ加減に気がついて逃げたんだよ。
そっとしといてやれ。


964 :デフォルトの名無しさん:04/07/19 00:50
ちょっと待て今IP抜いてるw

965 :964:04/07/19 00:57
自称guruのIP抜いたったぞw

207.46.144.222

お楽しみに   >guru

966 :デフォルトの名無しさん:04/07/19 00:58
それMicrosoftやん

967 :guru ◆BFP4DgQ4Jg :04/07/19 01:16
おまいらみたいなあふぉに万が一基億が一にもIPが抜けたとしても
どうしようもないだろ?w
やれるもんならやってみろよ

968 :デフォルトの名無しさん:04/07/19 01:30
>>967
958だが何か?

969 :guru ◆BFP4DgQ4Jg :04/07/19 01:34
何が何か?だよ

970 :デフォルトの名無しさん:04/07/19 01:43
↓以下放置でおながいします

971 :デフォルトの名無しさん:04/07/19 01:44
>>guru
せっかく戻ってきてくれたんだから、ディベートの続きしようぜ

>>まず基底クラスのコンストラクタを起動した後、
>>派生クラスの部分の初期化がなされるんだから、何ら不思議もないんだが。

>じゃあ、
>Base(){}
>Base(int x){}
>のどちらを実行するでしょうか?
>また、その理由は?

漏前は上のどちらを実行すると思うのよ。んでその理由は?

972 :デフォルトの名無しさん:04/07/19 01:54
香ばしい

973 :デフォルトの名無しさん:04/07/19 02:02
大体デイベーとするほど個人の最良が入るもんじゃないだろ
delete thisを許容するかとかならいざ知らず

974 :guru ◆BFP4DgQ4Jg :04/07/19 02:05
>>971
Base(int x){} をどうやって実行できるかを論じてるわけよ。わかる?

975 :デフォルトの名無しさん:04/07/19 02:13
それこそプログラマ次第だろ。

Base b(10) とやりゃ Base(int x){} が呼ばれ
Base b とすれば Base(){} が呼ばれるわけ。

上でも書かれてるがオーバーロードって知ってる?

976 :デフォルトの名無しさん:04/07/19 02:17
すげぇな・・・。
オーバロードも知らないやつがC++に手を出すのか。
悪いことは言わん、やめとけ。
その程度で他人に突っかかるようではC++は死ぬまで無理。

977 :デフォルトの名無しさん:04/07/19 02:18
guru ◆BFP4DgQ4Jg は今までどうやって C++ を勉強してきた?
一冊くらい本は読んだんだろう。そこに何も説明がなかったか?
書名を晒せ。

978 :デフォルトの名無しさん:04/07/19 02:20
C++に手を出す前にオーバーロードを知ってる香具師って
どういう経歴の持ち主なんだろう・・・。

979 :デフォルトの名無しさん:04/07/19 02:22
低レベルな質問には低レベルなやつが対応するという仮説を支持する結果となった。

980 :デフォルトの名無しさん:04/07/19 02:23
いや「オーバーロードも理解できない」っていう意味だろ

981 :デフォルトの名無しさん:04/07/19 02:33
お、生きのいい天然物が来たね〜

982 :デフォルトの名無しさん:04/07/19 02:35
只今、オーバーロードを検索中です
しばらくそのままでお待ちください

983 :デフォルトの名無しさん:04/07/19 02:51
脳内がバッファオーバーフローしそうだ

984 :デフォルトの名無しさん:04/07/19 02:56
classのメンバ関数A(),B()のそれぞれで、
int rnd;
という変数を宣言しているのですが、この場合名前が同じでも全く別物ですよね?
A()の中でB()を呼び出してるんですが、何か挙動が変で...。

985 :デフォルトの名無しさん:04/07/19 02:59
別物

986 :デフォルトの名無しさん:04/07/19 03:00
イルカさんに訊いて来いYO!

987 :デフォルトの名無しさん:04/07/19 03:02
あ、スマソ。↓の意味ね。
【ディベート】Microsoftイルカ v.s. guru【朝まで】

988 :デフォルトの名無しさん:04/07/19 03:04
>>985
ありがとうございます。

989 :デフォルトの名無しさん:04/07/19 03:07
>984
C++なんだからデバッガーでメモリのアドレス見ろよ。基本だ。

990 :デフォルトの名無しさん:04/07/19 03:09
990

991 :デフォルトの名無しさん:04/07/19 03:29
オーバーロードとオーバーライドの違いをわかりやすく覚えるには
どうしたらいいでしょうか。いつもこんがらがるんです...orz

992 :デフォルトの名無しさん:04/07/19 03:38
オーバーライド:乗っ取り

993 :デフォルトの名無しさん:04/07/19 04:11
乗っ取り乗っ取り乗っ取り・・・
なんとなくイメージつかめそうです。
ありがとうございました。




994 :guru ◆BFP4DgQ4Jg :04/07/19 04:23
オーバーロード云々の話じゃない・・・
本当こんな奴らがC++やってるってマジやべーよ

995 :デフォルトの名無しさん:04/07/19 04:31
同じ職場にいなければ桶

996 :デフォルトの名無しさん:04/07/19 04:32
こんな人とは仕事したくねえ。

997 :デフォルトの名無しさん:04/07/19 04:44
>>994
マジレスするとおまいが Derived で初期化子に Base(int x) を指定してるじゃねーか。ということになるんだが。

オーバーロード云々は確かに関係無いが、 >>949 が拙かったな。誤解されても仕方ない書き方。

998 :デフォルトの名無しさん:04/07/19 04:45
とりあえず次スレ立ててくる.(ダメだったときはすまんが誰かよろ)

999 :デフォルトの名無しさん:04/07/19 05:09
C++相談室 part33
http://pc5.2ch.net/test/read.cgi/tech/1090180012/

1000 :デフォルトの名無しさん:04/07/19 05:17
うあー

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

227 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)