■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

C++相談室 part53
1 名前:(σ´∀`)σ :2006/09/27(水) 15:56:21
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE(VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

テンプレその他 >>1-15 付近参照

前スレ
C++相談室 part52
http://pc8.2ch.net/test/read.cgi/tech/1156525695/


2 名前:デフォルトの名無しさん :2006/09/27(水) 15:59:42
■基本■
[C++ FAQ]
 http://www.parashift.com/c++-faq-lite/
 http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
  Cとその仕様を比較しながらの解説なので分かりやすい。
  ***** 質問の前に必ずこの二つに目を通してください *****
[C/C++ リファレンス]
 http://www.cppreference.com/ (英語)
 http://www.cppll.jp/cppreference/ (↑の日本語訳だけど最新は反映しない)
[禿 Stroustrup]
 http://public.research.att.com/~bs/
[C++ International Standard]
 http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110&ICS1=35&ICS2=60&ICS3=
[JTC1/SC22/WG21 - C++]
 http://www.open-std.org/jtc1/sc22/wg21/
  ここから規格の最新(2003より新しい)ドラフトがダウンロードできる。

3 名前:デフォルトの名無しさん :2006/09/27(水) 16:00:58
■Books■
amazon.com C,C++関連書籍
 http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/

The C++ Programming Language
 ttp://www.amazon.com/exec/obidos/ASIN/0201700735/
 ttp://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳)
C++ Primer (3rd Edition)
 ttp://www.amazon.com/exec/obidos/ASIN/0201824701/
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳)
The C++ Standard Library
 ttp://www.amazon.com/exec/obidos/ASIN/0201379260/
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳)
Effective C++
 ttp://www.amazon.com/exec/obidos/ASIN/0201924889/
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳)
More Effective C++
 ttp://www.amazon.com/exec/obidos/ASIN/020163371X/
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳)
Exceptional C++
 ttp://www.amazon.com/exec/obidos/ASIN/0201615622/
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳)
More Exceptional C++
 ttp://www.amazon.com/exec/obidos/ASIN/020170434X/
Exceptional C++ Style
 ttp://www.amazon.com/exec/obidos/ASIN/0201760428/
C++ Coding Standards
 ttp://www.amazon.co.jp/exec/obidos/ASIN/0321113586/
 ttp://www.amazon.co.jp/exec/obidos/ASIN/4894716860/ (翻訳)


4 名前:デフォルトの名無しさん :2006/09/27(水) 16:02:03
■Books(Templateまわり)■
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/
C++ Template Metaprogramming
 http://www.amazon.com/exec/obidos/ASIN/0321227255/


5 名前:デフォルトの名無しさん :2006/09/27(水) 16:03:12
■Libraries■
[Boost]
 Boost http://www.boost.org/
 (日本語) http://www.kmonos.net/alang/boost/
 (日本語) http://shinh.skr.jp/boost/
[標準ライブラリ]
 SGI-STL http://www.sgi.com/tech/stl/
 STLport http://stlport.sourceforge.net/
 GNU libstdc++ http://gcc.gnu.org/libstdc++/
 Apache STDCXX http://incubator.apache.org/stdcxx/
 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://sourceforge.net/projects/loki-lib/
 LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport


6 名前:デフォルトの名無しさん :2006/09/27(水) 16:04:18
今日はなんの日
フッフー

7 名前:デフォルトの名無しさん :2006/09/27(水) 16:04:43
4様

8 名前:デフォルトの名無しさん :2006/09/27(水) 16:04:57
http://piza.2ch.net/tech/kako/980/980175292.html
http://pc.2ch.net/tech/kako/996/996640937.html
http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
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


9 名前:デフォルトの名無しさん :2006/09/27(水) 16:05:28
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/


10 名前:デフォルトの名無しさん :2006/09/27(水) 16:06:05
31 http://pc5.2ch.net/test/read.cgi/tech/1086185282/
32 http://pc5.2ch.net/test/read.cgi/tech/1088236078/
33 http://pc5.2ch.net/test/read.cgi/tech/1090180012/
34 http://pc5.2ch.net/test/read.cgi/tech/1092018643/
35 http://pc5.2ch.net/test/read.cgi/tech/1093958200/
36 http://pc5.2ch.net/test/read.cgi/tech/1096304546/
37 http://pc5.2ch.net/test/read.cgi/tech/1098543578/
38 http://pc5.2ch.net/test/read.cgi/tech/1101473340/
39 http://pc5.2ch.net/test/read.cgi/tech/1106466303/
39(実質40) http://pc8.2ch.net/test/read.cgi/tech/1106527792/
40(実質41) http://pc8.2ch.net/test/read.cgi/tech/1113408957/
41(実質42) http://pc8.2ch.net/test/read.cgi/tech/1120190961/
43 http://pc8.2ch.net/test/read.cgi/tech/1124113879/
44 http://pc8.2ch.net/test/read.cgi/tech/1128512737/
45 http://pc8.2ch.net/test/read.cgi/tech/1133007604/

11 名前:デフォルトの名無しさん :2006/09/27(水) 16:06:49
46 http://pc8.2ch.net/test/read.cgi/tech/1136690107/
47 http://pc8.2ch.net/test/read.cgi/tech/1139931895/
48 http://pc8.2ch.net/test/read.cgi/tech/1142423595/
49 http://pc8.2ch.net/test/read.cgi/tech/1146185570/
50 http://pc8.2ch.net/test/read.cgi/tech/1149427282/
51 http://pc8.2ch.net/test/read.cgi/tech/1153079297/
52 http://pc8.2ch.net/test/read.cgi/tech/1156525695/

■関連スレ■
多すぎ。とりあえずスレタイ C++ で検索して。
以下、スレタイで見つからなさそうな関連スレ。

Boostを語れゴラァ part2
http://pc8.2ch.net/test/read.cgi/tech/1139313234/
GCCについて part7
http://pc8.2ch.net/test/read.cgi/tech/1145357824/

12 名前:デフォルトの名無しさん :2006/09/27(水) 16:07:25
STLつかうと一気に実行ファイルサイズが10倍に?!

13 名前:デフォルトの名無しさん :2006/09/27(水) 16:08:49
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。

14 名前:デフォルトの名無しさん :2006/09/27(水) 16:09:19
任意のタイミングでファイルオープンとファイルクローズが出来るデバックツール探してます。
CreateFileとかCopyFile等の動作チェック用です。
自分で作ってもいんですが、既に多機能な機能やグラフィカルなツールがあるかもしれないので探しています。
VisualStudioパッケージあるかもしれんがようわからん。
誰か知らないか?

15 名前:デフォルトの名無しさん :2006/09/27(水) 16:09:20
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

16 名前:デフォルトの名無しさん :2006/09/27(水) 16:09:52
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

17 名前:デフォルトの名無しさん :2006/09/27(水) 16:10:28
#include <stdafx.h>
後死ね。

18 名前:デフォルトの名無しさん :2006/09/27(水) 16:11:10
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

19 名前:デフォルトの名無しさん :2006/09/27(水) 16:21:29
うわ、久しぶりに個別レス版の儀式乙w

20 名前:デフォルトの名無しさん :2006/09/27(水) 16:25:57
儀式に>>14が組み込まれたな

21 名前:デフォルトの名無しさん :2006/09/27(水) 17:04:18
>>20
www
前スレの質問だ。

22 名前:デフォルトの名無しさん :2006/09/27(水) 17:09:26
>>14
あれ、これもしやマナー違反?


23 名前:デフォルトの名無しさん :2006/09/27(水) 18:02:34
いい具合にマナー違反が組み込まれたな。

24 名前:デフォルトの名無しさん :2006/09/27(水) 18:47:36
class cls{};

class sub_cls : public cls
{
public:
  class cls{};
};

class sub_sub_cls : public sub_cls::cls{};

int main()
{
  (sub_cls::cls)sub_cls::cls();//OK
  (sub_cls::cls)sub_sub_cls(); //ERROR!!
  (cls)sub_sub_cls();     //OK!!
  return 0;
}

25 名前:24 :2006/09/27(水) 18:48:48
>>24のプログラムにおいて,sub_cls::clsの意味が場所に
よって変わってしまいます.
継承元に使用した場合: sub_clsの基底クラスであるcls
それ以外: sub_clsの内部クラスであるcls

このような振る舞いはC++の仕様でしょうか?
また,sub_clsの内部クラスclsを基底クラスに指定
する方法はあるのでしょうか?

環境: VC++.net2003

26 名前:デフォルトの名無しさん :2006/09/27(水) 20:10:17
とても初歩的なことだと思いますが、質問させて下さい。

/* プログラム1 */
#include<iostream>
using namespace std;
void main()
{
char C[80];
cin >> C;
}

というプログラムのcharをintに変更するとエラーが出ます。
charとintは単にバイト数が違うだけの変数だと思うのですが、
なぜエラーが出るのでしょうか?cinの仕様でしょうか?
また、上記プログラム1を

/* プログラム2 */
#include<iostream>
using namespace std;
void main()
{
char C[80];
for(int i=0; i<80; i++){
cin >> C[i];
}
}

の様に書き換えてもうまくいくと思います。
しかし、プログラム1はアドレスCを、プログラム2は配列要素C[i]を
cinに作用させていますが、なぜどちらとも問題なく動くのでしょうか?

本当に初歩的な質問だとは思いますが、どなたかよろしくお願いします。

27 名前:デフォルトの名無しさん :2006/09/27(水) 20:13:19
ヒント:オーバーロード

28 名前:26 :2006/09/27(水) 21:11:01
>>27
回答ありがとうございます。下の質問については理解できました。
ただ、やはりchar→intへの変換でエラーがでるプログラム1の
疑問が分かりません・・・。

よろしくお願いします。

29 名前:デフォルトの名無しさん :2006/09/27(水) 21:15:03
>>28
C++においてchar配列は文字列を格納するのに使われるので、
ストリームにおいてもchar配列は文字列の入出力のために多重定義(オーバーロード)されている。

30 名前:デフォルトの名無しさん :2006/09/27(水) 21:18:11
>>28
プログラム1を

char c[80] -> int c[80]

と変更すると、
コンパイラはoperator>>(int* rhs) を探すが、
そんなもんは無いのでエラーになる。


31 名前:26 :2006/09/27(水) 21:27:39
>>29,>>30
回答ありがとうございます。
つまり、charとintはバイト数の違いだけではなく、C++では、
その意味も微妙に違っていて(charは多重定義されていて)、
charは色々な意味の幅を持つので、関数cinは使えるが、
多重定義されていないintは使えないということでしょうか。

32 名前:デフォルトの名無しさん :2006/09/27(水) 21:41:06
テンプレートについての質問です。

■宣言部
template<typename T>
class A {
public:
A();
int getValue();
};

■定義部
A<T>::A() {}
int A<T>::getValue()
{
return 0;
}

このテンプレートを使ったクラスの宣言部と定義部を一つの
ファイルに書くと問題ないのですが、ヘッダファイルとcppファイルの
二つに分けて書くと、リンク時にエラーになってしまいます。
書き方が悪いと思うのですが、どこが悪いのか教えていただけないでしょうか。


33 名前:デフォルトの名無しさん :2006/09/27(水) 21:49:48
32の質問ももはやテンプレに入れてもいいのではというほど既出。

テンプレートはコンパイル時に定義が見えていないとコンパイルできないのが原則。
ただし例外がある。
1. 宣言にexportを付ける。 - 正攻法だが対応しているコンパイラは絶望的に少ない。
2. ヘッダで定義したり、定義があるcppをヘッダでインクルードしたりする。 - ようするに諦めること。おそらく最もよく取られる手段。
3. cppファイルで明示的実体化を宣言する。 - テンプレート引数を使うだけ並べなければならず面倒。


34 名前:デフォルトの名無しさん :2006/09/27(水) 22:03:36
>>33
丁寧な説明、ありがとうございました。

35 名前:(^-^) ◆MONSOON/qo :2006/09/27(水) 22:03:51
テンプレートとかクラスとか使ったことないんだけどやばい?
普通に配列にアクセスしていく方がやりやすいんだけど
多数で開発とかじゃないといらなくない?

36 名前:デフォルトの名無しさん :2006/09/27(水) 22:05:06
>>35
それ開発じゃなくてコーディングじゃね?

37 名前:デフォルトの名無しさん :2006/09/27(水) 22:15:59
>>25
gcc 3.4.4 ではコンパイルできたんで VC のバグなのかも。
typedef sub_cls::cls sub_cls_inner_cls; で回避できない?

38 名前:デフォルトの名無しさん :2006/09/27(水) 23:13:47
>>35
趣味で一人でやっていて、誰からも求められていないなら好きなようにやればOK

39 名前:24 :2006/09/28(木) 00:30:55
>>37
回避できました.有難うございます.
色々試してみたところ,どうもVCのバクのようです.

40 名前:デフォルトの名無しさん :2006/09/28(木) 17:20:06
自分で作ったコンテナっぽいものを
汎用アルゴリズムに投入したいのですが、
コンテナが満たさなければならない必要十分条件は何でしょうか?

41 名前:デフォルトの名無しさん :2006/09/28(木) 17:27:02
STLスレのほうが食いつきがいいかなあ

引数なしコンストラクタ
コピーコンストラクタ
代入演算子

があればいいんじゃなかったっけ。
あと

デストラクタは例外を投げない

必要があった希ガス。

42 名前:デフォルトの名無しさん :2006/09/28(木) 17:40:18
汎用アルゴリズム(<algorithm>ヘッダにあるようなのだよな?)に突っ込むって話なら
一通り機能備えたiterator持ってればいいんじゃないか?

43 名前:デフォルトの名無しさん :2006/09/28(木) 17:45:14
アルゴリズムに対してはコンテナよりもイテレータの要件を満たす方が大事。
それはともかく、コンテナの要件はここに書くのは面倒だから規格書見ろ。

44 名前:デフォルトの名無しさん :2006/09/28(木) 18:14:21
>>43
規格書(のドラフト)見るのが面倒だから
ここに書いたのに    >_<

45 名前:デフォルトの名無しさん :2006/09/28(木) 18:30:24
アルゴリズムとコンテナには何の関係もないんじゃないかね。
イテレータが対応するコンセプトを満たしていればそれでいい。
istream_iteratorとかコンテナと関連付けられてすらいないし。

46 名前:デフォルトの名無しさん :2006/09/28(木) 18:33:07
>>45
致命的に読解力がありませんね。

47 名前:デフォルトの名無しさん :2006/09/28(木) 18:45:19
>>44
http://www.jisc.go.jp/
JIS検索→規格番号 X3014

PDFの366頁(内容の365頁) 「23. コンテナ」からコンテナの要件が書いてある。
PDFの366頁「24. 反復子」から各種の反復子(イテレータ)の要件が書いてある。

48 名前:デフォルトの名無しさん :2006/09/28(木) 19:09:00
>>47
ファイルが破損していますってメッセージが出て開けないけどどうなっとるの?


49 名前:デフォルトの名無しさん :2006/09/28(木) 19:39:40
std::vector の一部分の要素、たとえば10番目の要素から20番目の要素を
取り出すのに便利な方法ってありますか?コピー元のイテレータ動かしながら
からの vector に push_back しまくるとかですか?

50 名前:デフォルトの名無しさん :2006/09/28(木) 19:45:30
適当にコンストラクタ使うとかinsert_iteratorつかうとか色々あるから好きにしろ。
vector<int>v;
vector<int>v2(v.begin()+10,v.begin()+20);
v2.assign(v.begin()+10,v.begin()+20);
v2.clear();
copy(v.begin()+10,v.begin()+20,back_inserter(v2));

51 名前:デフォルトの名無しさん :2006/09/28(木) 20:50:11
質問です。std::string に関してです。
今、マルチバイト文字列を使用する設定であるとして、

std::string hoge = "表表表";
int pos = (int)hoge.find('\\');

とすると、「表」の2バイト目を \ と認識してしまい、期待通りの動作になりません。
この場合、あくまでマルチバイト文字列を使いたいとすれば、
find を使わずに検索を自分で実装するしかないでしょうか?
それとも、find に代わる何かいい道具はないでしょうか?

よろしくお願いします。


52 名前:デフォルトの名無しさん :2006/09/28(木) 20:58:51
マルチバイト文字のままでは無理。
自前で実装しなさい。

53 名前:51 :2006/09/28(木) 21:05:10
>>52
ありがとうございます、ちまちま実装します。


54 名前:デフォルトの名無しさん :2006/09/28(木) 21:36:26
>>53
事情が許す無いのはわかるけど、可能な限りwchar_tに乗り換えた方がいいよ。
マルチバイト絡みの悩み一切合財から開放される。
処理効率的には微妙でも、
MB->WCへ変換->フィルタ等で処理->MBに再変換
の流れの方がいいくらいの時も多い。
バグも減るしね…

55 名前:デフォルトの名無しさん :2006/09/28(木) 21:50:25
>>51
c_str()使えば、const char*が得られる。
VC++の_mbsstrのようなマルチバイト対応の関数が使えるときにはこういう手もなくはない。

56 名前:デフォルトの名無しさん :2006/09/28(木) 23:11:34
C++マスターするのにどれくらい時間かかるんですか?

57 名前:デフォルトの名無しさん :2006/09/28(木) 23:45:19
>>56
どんなものにも、マスターしたなんて状態は存在しない。
常に上には上があり続ける。上を目指し続けなければならない。

まあC++だとそれが精神論に聞こえないというやつも多いと思うのだが、
別にC++に限ったことではないと俺は思っているよ。

58 名前:デフォルトの名無しさん :2006/09/29(金) 00:12:47
ISOの規格票を完全に把握した上で各処理系毎の実装の問題を全て網羅し、
主要なライブラリ/フレムワークに精通すればC++をマスターしたといえるかもしれない。

んな奴いねーよ。

59 名前:デフォルトの名無しさん :2006/09/29(金) 00:16:26
ある程度行くと納得して、勉強しなくなる。

60 名前:デフォルトの名無しさん :2006/09/29(金) 00:28:36
Boostの議論に参加してC++そのものを作り始めたら
プロフェッサーと呼ばれるかも知れない。

61 名前:デフォルトの名無しさん :2006/09/29(金) 02:23:19
とりあえずハゲろ。話はそれからだ。
http://public.research.att.com/~bs/

62 名前:デフォルトの名無しさん :2006/09/29(金) 02:46:22
あー、それは思った。
ハゲとヒゲは大事だよな。

63 名前:デフォルトの名無しさん :2006/09/29(金) 03:02:38
>>57
ピント外れの正論を一所懸命書くお前みたいな奴って
ほんと馬鹿だと思う。

64 名前:デフォルトの名無しさん :2006/09/29(金) 07:46:47
一番納得したのが>>61だったんだがw

65 名前:デフォルトの名無しさん :2006/09/29(金) 18:48:42
>>61
彼の名前って正しく発音するとどう読むの?
びょーん?
誰かマジレスしてくれ…

66 名前:デフォルトの名無しさん :2006/09/29(金) 18:51:39
>>65
びょーんすっぽすっぽ

67 名前:デフォルトの名無しさん :2006/09/29(金) 18:55:50
ベンジャミン

68 名前:デフォルトの名無しさん :2006/09/29(金) 19:23:16
びょーん・それ・しらんかっとってんちんとんしゃん

69 名前:デフォルトの名無しさん :2006/09/29(金) 21:48:10
http://www.research.att.com/~bs/bs_faq.html#pronounce

70 名前:デフォルトの名無しさん :2006/09/29(金) 22:15:37
FAQのwav聞いた。声が若い気がするが本人なんだろうか。

Is "bjarne" an impostor? bjarneは「インポ」スターですか?
がウケた。辞書ひいたが。

まずは、>>56は、
1mm/秒くらいのものすごい勢いで禿げ上がれ。
毛穴の量を減少させよ。
次に、インポになれたら、発音しにくい名前に改名しろ。


71 名前:デフォルトの名無しさん :2006/09/29(金) 22:43:31
規格はビヨーンと伸び続け
実装予定もビヨーンと伸びる
毛は伸びない

72 名前:デフォルトの名無しさん :2006/09/30(土) 02:37:49
言語仕様と毛髪は規模に関して反比例する。

73 名前:デフォルトの名無しさん :2006/09/30(土) 02:44:33
BASICやればフサフサになれますか?

74 名前:デフォルトの名無しさん :2006/09/30(土) 02:58:35
Brainf*ckをやるとモサモサになりますか?

75 名前:デフォルトの名無しさん :2006/09/30(土) 03:01:56
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。


C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

76 名前:デフォルトの名無しさん :2006/09/30(土) 03:08:41
>>75
>>12-

77 名前:デフォルトの名無しさん :2006/09/30(土) 22:33:11
しかし>>75は何がおもしろいんだろう



78 名前:デフォルトの名無しさん :2006/09/30(土) 22:51:02
ネタが無いけどとにかく何か書いてみたかったんじゃね?

79 名前:デフォルトの名無しさん :2006/10/01(日) 07:36:02
>>77
これが書き込まれた当時は爆笑したものだ。

80 名前:デフォルトの名無しさん :2006/10/01(日) 08:25:05
笑いどころがわからん。
解説してくれ。
しなくてもいいが。

81 名前:デフォルトの名無しさん :2006/10/01(日) 08:43:11
あとから解説されてもわからんと思うぞ。
こういう、何て言うのかな、リアルタイムでマジ馬鹿に遭遇したおかしさは。

82 名前:デフォルトの名無しさん :2006/10/01(日) 09:48:50
そういえば75にはうむご苦労が抜けているな。
最初にやっているからもういいけど。

83 名前:デフォルトの名無しさん :2006/10/01(日) 10:50:26
上級プログラマ様ともなるとこれぐらいの厨で爆笑できるものなのですか

84 名前:デフォルトの名無しさん :2006/10/01(日) 11:28:14
やっぱり笑いどころがわからん。
まあいいか。
次の話題。

85 名前:デフォルトの名無しさん :2006/10/01(日) 12:48:36
そりゃわからんだろう。後から理解するには想像力が要るからな。

86 名前:デフォルトの名無しさん :2006/10/01(日) 14:44:31
>>76 >>81 >>85
昨日今日のことなのに、当時ってなんだよ?
お前は、そろそろ現実に戻ってきた方がいいんじゃねーの?

87 名前:デフォルトの名無しさん :2006/10/01(日) 14:56:42
>>86よ、とりあえず当時ってなんだ?
お前こそ早くもどってくぁw背drftgyふじこlp;@:「

88 名前:デフォルトの名無しさん :2006/10/01(日) 15:08:39
>>87 あんかーのつけまちがえじゃないか?
とくに>>79は嫌われてるからな・・

89 名前:デフォルトの名無しさん :2006/10/01(日) 15:08:57
>>86

とりあえずこのテンプレは俺がこのスレ来たときから有るが。
って言っても日が浅いからpart46からなんだけど。

90 名前:デフォルトの名無しさん :2006/10/01(日) 15:10:13
>>86
うーん、過去スレ見てみるってのはどうかな?

91 名前:デフォルトの名無しさん :2006/10/01(日) 15:33:17
そうだったのか。

92 名前:デフォルトの名無しさん :2006/10/01(日) 15:40:27
何この流れ

93 名前:デフォルトの名無しさん :2006/10/01(日) 17:32:06
ぬるぽ

94 名前:デフォルトの名無しさん :2006/10/01(日) 17:38:17
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ     人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/←>>93
 (_フ彡

95 名前:デフォルトの名無しさん :2006/10/01(日) 18:48:24
インヘリタンスなクラスはヴァーチャルなスーパークラスにインスタンスをオーバーライドですか?

96 名前:デフォルトの名無しさん :2006/10/01(日) 18:49:32
ヴァーチャルなスーパークラスのメソッドをオーバーライドじゃね?

97 名前:デフォルトの名無しさん :2006/10/01(日) 18:53:53
とりあえずなんでもカタカナを使えばいいってもんではないよ。

98 名前:デフォルトの名無しさん :2006/10/01(日) 18:56:53
インヘリタンス:inheritance
(n) 相続財産。先祖、前代などから受け継いだもの。

形容詞でも副詞でも無いのに、インヘリタンス”な”はちょっとなぁ

99 名前:デフォルトの名無しさん :2006/10/01(日) 18:57:27
ネタでいったのに、微妙に意味がつながってしまった・・・シクシク

100 名前:デフォルトの名無しさん :2006/10/01(日) 18:58:12
とりあえずこれでも聞いとけ
http://194.79.31.249:7660

101 名前:デフォルトの名無しさん :2006/10/01(日) 19:16:40
>>15
何のためにダイナミックリンクが存在するのかと。

102 名前:デフォルトの名無しさん :2006/10/01(日) 19:41:15
>>100
何分間あるのよ。もしかして、延々と続くのか。

103 名前:デフォルトの名無しさん :2006/10/01(日) 22:33:04
3時間経過・・・

104 名前:デフォルトの名無しさん :2006/10/01(日) 22:39:08
>>102,103
男が説明してるだろ。webラジオだよ。

105 名前:デフォルトの名無しさん :2006/10/02(月) 07:17:49
おーなつかしー SHOUTcastジャン

106 名前:デフォルトの名無しさん :2006/10/02(月) 21:23:11
質問です。CのスレかC++か迷ったんですが、こっちに書き込みます
関数のプロトタイプ定義で、
void hoge(void)とvoid hoge()と書くのでは同じですよね?
どちらを採用すべきでしょうか

107 名前:デフォルトの名無しさん :2006/10/02(月) 21:26:28
void hoge()でいいよ

108 名前:デフォルトの名無しさん :2006/10/02(月) 21:34:18
サンクス

109 名前:デフォルトの名無しさん :2006/10/02(月) 21:38:54
>>106
C++では同じ。

だがCでは微妙に意味が異なり、引数を取らないという意味になるのは前者だけ。
後者はK&R流になり、引数の指定が無いということでvoid hoge(...)と同じような扱い。

ってここC++スレか、すまん。

110 名前:デフォルトの名無しさん :2006/10/02(月) 23:50:05
>>109
キニスンナ、メンテの都合でCのコード引っ張ってくる事もあらぁな。


111 名前:デフォルトの名無しさん :2006/10/03(火) 01:03:24
なんでもCで開発するやつ会社にいる。まぁそれはいいんだが
毎回車輪の発明を繰り返すのなんとかならんのかなぁ

C++は遅いから使えないとかいってるし使い方しらねーだけじゃんって
いいたいが上司だしいえんし
みんなこうゆうばあいどうするのよ?

112 名前:デフォルトの名無しさん :2006/10/03(火) 01:15:07
上司相手にも言う。
相手の目を見て真剣に何度でも言う。
ないしは上司が直接コードのメンテをするのは勘弁してもらって
進行管理や折衝仕事に回ってもらう。

ベテランプログラマの戦力は確かに馬鹿にならないんだが、
技術の新しさを伴った勉強熱心な若い子の方が役に立つ場合は
往々にしてあるのだし。

ベテランのベテランたる所以はコーディング能力ばかりによるものでもないし、
技術は若干古いが設計は優秀って人には、より上位の工程を管理してもらった方がいい。


まあ、理想論ですけっどもね。

113 名前:デフォルトの名無しさん :2006/10/03(火) 01:19:51
しかもあれなんだよね、IEEEとソフトウェア系の論文読めばのってる
知識って普通に誰でも知ってるはずなのにさもすごいだろって自慢するのは
簡便して欲しい。早いといってもアセンブラレベルで比較したりしないし
はぁやれやれ、だよ例外も何もかもつかえないからエラー処理のために
全部コールバックで受け渡すとかいうきもい設計だしまじ鬱になりそう

114 名前:デフォルトの名無しさん :2006/10/03(火) 01:26:33
いつから愚痴スレに…

115 名前:デフォルトの名無しさん :2006/10/03(火) 01:30:27
そんな会社、辞めちまえ!!

116 名前:デフォルトの名無しさん :2006/10/03(火) 01:31:39
C++で例外使えない場合って、そこそこ多くないか?
俺が組み込みとかばっかりで、例外飛ばされたところで
回復させられる見込みがねえ&例外処理のコストを呑めねえって
場合が多いからってだけなのかもしれんが。

117 名前:デフォルトの名無しさん :2006/10/03(火) 01:51:07
>>113 今の会社にいることが、お前の限界だと思うがな。

118 名前:デフォルトの名無しさん :2006/10/03(火) 02:03:24
>>116
>例外飛ばされたところで回復させられる見込みがねえ
それなら返り値でエラー返しても何も出来ないんじゃないのか?

119 名前:デフォルトの名無しさん :2006/10/03(火) 02:12:33
>>118
実際その通り。
bad_alloc飛ばされてガリガリ巻き戻って「ごめん無理」って出すか
ぬるぽ祭り開催かどっちかってなもんで。
どっちも大して変わらんので、最悪ぬるぽ祭りを後ろに控えつつ、
開催阻止運動にせいを出すと。

で、首尾よく阻止できてる限りは、そもそも例外が飛ぶシチュに縁がないと。
そんなノリですよ。

120 名前:デフォルトの名無しさん :2006/10/03(火) 02:19:56
>>119
「ごめん無理」って出るのと未定義動作とでは全然違うと思うけどなぁ。
奥底で発生したぬるぽがすぐには問題として顕在化せずに潜伏してる可能性とか最悪。
バグの原因探すのに余計な気をまわさないといけない。

121 名前:デフォルトの名無しさん :2006/10/03(火) 02:46:31
原因を例外として飛ばしてるんじゃないか。
それを回復できないんじゃ、
原因を例外で飛ばす意味をはじめっからやり直した方がいいだろ。

122 名前:デフォルトの名無しさん :2006/10/03(火) 02:50:56
>>121 日本語でおk

123 名前:デフォルトの名無しさん :2006/10/03(火) 03:00:17
>>122
その程度のお前じゃ、C++例外は使いこなせないがよく分かる。

124 名前:デフォルトの名無しさん :2006/10/03(火) 03:01:41
>>123
いや、頼むから日本語でおk

125 名前:デフォルトの名無しさん :2006/10/03(火) 03:11:43
>>124 大人は早く寝ろってこった。

126 名前:デフォルトの名無しさん :2006/10/03(火) 03:23:21
・意味をやり直す
・使いこなせないが分かる

言葉って日々変化しているんだなぁw

127 名前:デフォルトの名無しさん :2006/10/03(火) 03:59:39
>>126
何をそんなに怖がってるんだ?
ところで、お前が直すとどんな日本語になるのか直してやってみてよ。

128 名前:デフォルトの名無しさん :2006/10/03(火) 04:01:09
どうみても121の日本語が変だぞ。

さて、ご飯炊いて弁当詰めるか。 orz


129 名前:デフォルトの名無しさん :2006/10/03(火) 04:01:16
元の分では正しい意味が伝わらないので、本人以外が直すのは無理でしょう。

130 名前:デフォルトの名無しさん :2006/10/03(火) 04:18:51
> 直してやってみてよ
これも(間違いとまでは言わないまでも)変だな。
留学生か?

131 名前:デフォルトの名無しさん :2006/10/03(火) 04:23:28
>>127
おかしな日本語をおかしいと感じられない人間が氾濫のは、
おかしなC++のソースが氾濫するのよりも怖いな。

132 名前:デフォルトの名無しさん :2006/10/03(火) 04:35:38
こんな時間に書き込んでる、おまえらの方がおかしいんと思うが?

133 名前:デフォルトの名無しさん :2006/10/03(火) 04:41:33
>>130
>直してやってみてよ
これは普通に通じるし、日常使うだろ。
つまり、お前が言う「変」は感じないが?

ところでいつまでもしつこいようだが、
お前は日本語の教師か何かなのか。

134 名前:デフォルトの名無しさん :2006/10/03(火) 04:48:49
確かにこの日本語教師じゃ例外は無理だなと思う。
>>126は「使いこなせないのが分かる」と脱字なだけと思うけど。違うのか?

135 名前:デフォルトの名無しさん :2006/10/03(火) 05:27:23
ヤクザがこっち見てえらい怒鳴ってるけど意味がさっぱり理解できなくて困っちゃう状態なスレですね

136 名前:デフォルトの名無しさん :2006/10/03(火) 05:43:02
ところで、>>120は日本語だと思うが、
言ってることが理解できないのだが。
誰か解読を頼む。

137 名前:デフォルトの名無しさん :2006/10/03(火) 05:49:47
どこまで自分で考えてどこでどうわからなくなったのか
言ってくれない奴って最悪だよね。

138 名前:デフォルトの名無しさん :2006/10/03(火) 05:51:51
(ノ∀`) アチャー

139 名前:デフォルトの名無しさん :2006/10/03(火) 06:06:52
日本語が変って言われたなら次から直せばいいだけなのに
なんでくだらない言い訳に走るんだろう。

140 名前:デフォルトの名無しさん :2006/10/03(火) 06:23:05
>>120が何を言ってるのか俺も同じく分からないが
誰か解読してくれないか?

141 名前:デフォルトの名無しさん :2006/10/03(火) 06:27:09
>>139は、どの当たりがくだらない言い訳なんだ?
このままでは、みんながお前に合わせないといけないようだな。

142 名前:デフォルトの名無しさん :2006/10/03(火) 06:44:11
>>140-141
日本語が変とかしつこい奴だけど、たまに現れるだよ。
これじゃ友達いないようだし、一番近づきたくないタイプだ。
こんなのに係わっても疲れるだけだぞ。

143 名前:デフォルトの名無しさん :2006/10/03(火) 06:57:29
>>141
×どの当たり
○どの辺り

144 名前:デフォルトの名無しさん :2006/10/03(火) 07:49:58
彼は亡くなったお祖父さんの
「日本語の使い方について指摘されても、決して自分の非を認めてはならん」
という遺言を忠実に守っているお祖父ちゃん想いの少年なのです

そっとしておいてあげて下さい

145 名前:デフォルトの名無しさん :2006/10/03(火) 08:28:56
>>120はそんなにおかしいか?
俺は普通に理解できたが。

146 名前:デフォルトの名無しさん :2006/10/03(火) 08:31:51
滝川人民キモイ

147 名前:デフォルトの名無しさん :2006/10/03(火) 09:30:02
変かどうかはともかく、漏れも>>120は理解できた。
説明ったって、一体あれのどこがわからんのかわからん。

148 名前:デフォルトの名無しさん :2006/10/03(火) 09:38:53
>>120は分かるけど>>121がさっぱり

149 名前:デフォルトの名無しさん :2006/10/03(火) 10:02:08
30レス近くも引っ張るような話題なのか?

150 名前:デフォルトの名無しさん :2006/10/03(火) 11:20:35
char()やwchar_t()の値が、'\0'やL'\0'と等しい事は保証されてますか?

151 名前:デフォルトの名無しさん :2006/10/03(火) 11:24:32
はい。

152 名前:デフォルトの名無しさん :2006/10/03(火) 11:32:22
ありがとう

153 名前:デフォルトの名無しさん :2006/10/03(火) 14:19:10
>>150
誤字脱字で細かい奴が一人いるんからだろ。
いつからここはオレ様専用スレになったんだろうな。

154 名前:デフォルトの名無しさん :2006/10/03(火) 15:07:55
>>154
いい加減しつけーんだよ黙れクズ

155 名前:デフォルトの名無しさん :2006/10/03(火) 15:10:21
ずいぶんと自虐的なヤツだな


156 名前:デフォルトの名無しさん :2006/10/03(火) 15:18:30
自分の非をやっと認めたようだな。
今後は釣られんじゃねーよ!

157 名前:デフォルトの名無しさん :2006/10/03(火) 15:37:46
>原因を例外で飛ばす意味をはじめっからやり直した方がいいだろ。

「原因を例外で飛ばす意味をはじめっから学び直した方がいいだろ」
と書くべきでは?

>その程度のお前じゃ、C++例外は使いこなせないがよく分かる。

「その程度のお前じゃ、C++例外は使いこなせないであろう事がよく分かる」
では?

>ところで、お前が直すとどんな日本語になるのか直してやってみてよ。

「直す」が重複。
「ところで、お前が直すとどんな日本語になるのかやってみてよ」
では?


158 名前:デフォルトの名無しさん :2006/10/03(火) 15:53:00
はいはい、よくできました。
これは>>121だけど、>>120は修正しないのか?
>>120の方が難しそうだけどな。

159 名前:デフォルトの名無しさん :2006/10/03(火) 15:57:58
まだ在日が暴れてんのか

160 名前:デフォルトの名無しさん :2006/10/03(火) 16:59:29
最近ム板も、朝鮮人がよく出入りするようになってから、荒れ出した。

161 名前:デフォルトの名無しさん :2006/10/03(火) 17:05:59
>>157
こいつずいぶんと偉そうだ。
日本語勉強中のチョンだろう。
お前は嫌われてるんだからマ板にいけ。

162 名前:デフォルトの名無しさん :2006/10/03(火) 17:19:47
  /\___/\
/ /    ヽ ::: \
| (●), 、(●)、 |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄
|  ,,ノ(、_, )ヽ、,,   |  < まーた朝鮮人か!!
|   ,;‐=‐ヽ   .:::::|    \_______
\  `ニニ´  .:::/
/`ー‐--‐‐―´´\

163 名前:デフォルトの名無しさん :2006/10/03(火) 17:23:17
>>159市ね

164 名前:デフォルトの名無しさん :2006/10/03(火) 18:25:09
>>161
その「日本語勉強中のチョン」に遠く及ばない日本語を書く連中って・・・。

165 名前:デフォルトの名無しさん :2006/10/03(火) 18:43:16
在日ってこんなにしつこいとは知らなかった…
これじゃ、嫌われて当然だよな。

166 名前:デフォルトの名無しさん :2006/10/03(火) 18:47:01
在日ってもう本国に帰れないんだろ。
日本でも嫌われて、本国にも帰れず、
確かにないするかわからない危険な奴らだ。
あー、こわい、こわいwww

167 名前:デフォルトの名無しさん :2006/10/03(火) 19:00:21
一人で必死に在日をキーワードにしようとしてるけど
誰も乗ってくれないね。

相手を「まっとうな日本人」より下に位置づければ位置づけるほど
それ未満だった自分の位置がえらいことになってしまう構図なのに、
その状況も考えず思いつきだけで抵抗しようとするからこうなる :-)

168 名前:デフォルトの名無しさん :2006/10/03(火) 19:10:16
は?何惑わされてんだ?
言語野ぶっこわれた>>121が一人で必死なだけだろ?

169 名前:デフォルトの名無しさん :2006/10/03(火) 19:15:29
そうなのか。やっぱり在日だったのか。
2世か?3世か?

それよりも、もう半島人の言い訳見るの飽きたから、
だれかC++の相談ないのか?

170 名前:デフォルトの名無しさん :2006/10/03(火) 19:27:23
お前らデスマーチでそんなストレス溜まってんのか

171 名前:デフォルトの名無しさん :2006/10/03(火) 19:38:55
>>170
×デスマーチ
○デスニート

デスマーチだったらこんなところで油売ってらんない。

172 名前:デフォルトの名無しさん :2006/10/03(火) 20:03:54
template<typename T> struct Outer
{
template<typename T> struct Inner {};
};

こういう風にテンプレート引数の名前が被ってもいいんでしょうか?

173 名前:デフォルトの名無しさん :2006/10/03(火) 20:08:03
>>172
ダメ

174 名前:デフォルトの名無しさん :2006/10/03(火) 20:13:07
>>171
慣用句「油を売る」の使い方がおかしい気がする。

175 名前:デフォルトの名無しさん :2006/10/03(火) 21:23:56
無いところから無理矢理作り上げたプライドを保とうとすると
色々大変なんだなぁと思った。
間違いを認めるって、結構エネルギー要るしね。余計に敷居が高いよね。

176 名前:デフォルトの名無しさん :2006/10/03(火) 21:24:21
おそらく環境依存になってしまうと思うんですが、
あるオーバーロードされた関数を呼ぶ時に
どのバージョンの関数を呼ぶようにコンパイルされたかは
どうやって調べるのがいいんでしょうか
今のところcoutして実行してみる方法しか思いつかないです・・

foo(int i){ cout << "int ver";}
foo(hoge f){ cout << "hoge ver";}


177 名前:デフォルトの名無しさん :2006/10/03(火) 21:26:19
今ふと思った
きっと>>176のところではオーバーロードを何度も繰り返す仕様の仕様書を書いちゃったんだろうな、と

オーバーロードってバージョン管理までしてくれたっけ?
完全に別個じゃなかった?

178 名前:デフォルトの名無しさん :2006/10/03(火) 21:27:22
>>175
「打ち砕かれた妄想設定の続行」という一番痛いパターン(>>169)晒しちゃったしね

179 名前:デフォルトの名無しさん :2006/10/03(火) 21:30:54
>>175
自分の事を書きたいならチラシの裏だけにしておけ。

180 名前:デフォルトの名無しさん :2006/10/03(火) 21:32:29
>>178は何を言いたいのかさっぱり分からないけど、誰か解読をヨロ

181 名前:デフォルトの名無しさん :2006/10/03(火) 21:33:27
>>176
C++ デマングリング
でぐぐるべし。

182 名前:デフォルトの名無しさん :2006/10/03(火) 21:33:56
>>180
× は何を言いたいのか
○ が何を言いたいのか

183 名前:デフォルトの名無しさん :2006/10/03(火) 21:36:32
>>180
× 分からないけど、誰か
○ 分からないんで、誰か

184 名前:デフォルトの名無しさん :2006/10/03(火) 21:39:00
ttp://konuma.txt-nifty.com/blog/2006/01/post_7c86.html

185 名前:デフォルトの名無しさん :2006/10/03(火) 22:01:58
>>177
あるライブラリを使用しているんですが、
そのライブラリがテンプレートとオーバーロードを多用していて、
ソースを一見読んだだけでは何が呼ばれるのかさっぱりでして


>>181
ぐぐって来ます

186 名前:デフォルトの名無しさん :2006/10/03(火) 22:26:32
>>182-183
修正してニコニコしているみたいだけど、
それはスレと関係ないことだと思ってないのかな?
ねぇ、あらし君!迷惑なんだけど止めてくれるよね。

187 名前:デフォルトの名無しさん :2006/10/03(火) 22:43:13
このスレはC++スレではなくて朝鮮人スレなのか。

188 名前:デフォルトの名無しさん :2006/10/03(火) 22:57:20
直すな、アラシ!

189 名前:デフォルトの名無しさん :2006/10/03(火) 23:01:25
中国人留学生ってやっぱりウザイ
キモイから、早くお国に帰ってくれないかなぁ…

190 名前:デフォルトの名無しさん :2006/10/03(火) 23:04:56
朝鮮人スレというより三国人スレ

191 名前:デフォルトの名無しさん :2006/10/03(火) 23:27:43
中国人ってよりも在日三世だろ。
「自分は在日三世だ!!」ってみんなにばれたら
次の日から白い目で見られて避けられるだろうな…
細かい事ばかり気にして神経質みたいだし、そもそも友達いないかもな。
あんまり偉そうにしていると、身辺調査されて終いにばれちまうぞ。

でも、マ板だったら仲間が多いだろ。そっちにいけよ。

192 名前:デフォルトの名無しさん :2006/10/03(火) 23:30:27
ageてまで語る事じゃないだろ
この手の話題はスルーしろよ
本当にム板はこの手の耐性が低いな

193 名前:デフォルトの名無しさん :2006/10/03(火) 23:33:37
日本に帰化しないって事は、朝鮮有事になったら、向こうの側に付くって
事だろ。そんな危険な存在をかくまっておくなんて、政府はどうかしている。
とっとと絞め殺せ。

194 名前:デフォルトの名無しさん :2006/10/03(火) 23:44:21
そんなに「在日、在日」って言うな!
これでも俺たちは必死に生きてるんだぞ!!
給料上げて欲しい・・・・

195 名前:デフォルトの名無しさん :2006/10/04(水) 00:34:20
何この書きにくい流れ・・
けど気になるので質問するぽ

「もしもdeleteされていなければdeleteする」
というようなコードを書くことって可能でしょうか

Type* t = new Type();
delete t;

こんなコードがあり、後のほうでtが削除されたか気になって
if(t)delete t;
とやってみたけど、玉砕

NULLポインタに対してdeleteは大丈夫なようですが
delete tの後に残ったものはNULLではないのですね
何かよい方法ってあるのでしょうか

196 名前:デフォルトの名無しさん :2006/10/04(水) 00:36:34
>>195
・クラスで隠蔽する。
・newを使わない。
・deleteしたらNULLを代入しておく。

197 名前:デフォルトの名無しさん :2006/10/04(水) 00:36:59
>>195
自分でgcっぽい仕組みを作る

198 名前:デフォルトの名無しさん :2006/10/04(水) 00:37:44
>>196人(・∀・

199 名前:デフォルトの名無しさん :2006/10/04(水) 00:50:21
>>196
deleteしたらNULLを代入しておく
 コレ頂きます!感謝
クラスで隠蔽する
 既にクラスなんですが、なんでクラスのポインタにしているかというと
 NEWを返す関数の返り値を代入したりするからです
 (今の代入演算子の実装だとデストラクタが呼ばれないようなので・・)

200 名前:デフォルトの名無しさん :2006/10/04(水) 00:54:00
>>197
どもです、ただ俺のレベルでは自作は厳しいっす;
そういう方向だと
BOOSTのスマートポインタを使えば解決しそうだけど
今作っているプログラムで必要な箇所は本当に一部なんで
今回はNULL代入で乗り切ろうと思います

201 名前:デフォルトの名無しさん :2006/10/04(水) 00:57:01
スマートポインタ使えよ

202 名前:デフォルトの名無しさん :2006/10/04(水) 00:58:18
PS
この方式だと宣言時に初期化しないものにも
全てNULLを代入しとく必要がありますね
これ、クセにしようかな

203 名前:デフォルトの名無しさん :2006/10/04(水) 01:00:12
そんな非効率で危険で幼稚な実装すんな

204 名前:デフォルトの名無しさん :2006/10/04(水) 01:01:55
スマートポインタ
ttp://www.ne.jp/asahi/yamashita/programming/tips/smart_ptr.html
boostのshared_ptrはCOMと同じく参照カウントなので循環参照が危険かも

ところでマクロでちょっとだけ便利にするのはダメ?
#define delcls(x) delete x; x=NULL

205 名前:デフォルトの名無しさん :2006/10/04(水) 01:05:33
こいつ例外安全性とか全然考えてないんだろうな(笑)
だいたいdeleteが散らばってる時点で設計がめちゃめちゃへたくそ

206 名前:デフォルトの名無しさん :2006/10/04(水) 01:07:21
>>205
設計と実装を混ぜるクソ発見

207 名前:デフォルトの名無しさん :2006/10/04(水) 01:14:02
>>204
>参照カウントなので循環参照が危険かも
知りませんでした、ありがとう

auto_ptrはコンテナ使ってるから避けてます
コピーが発生すると所有権が移るんでしたよね?

マクロいいですね!思いつかなかったです

208 名前:デフォルトの名無しさん :2006/10/04(水) 01:17:06
循環参照が気になるなら他のスマートポインタを使えばいい。
それより例外安全性の方が大きな問題だよ。

209 名前:デフォルトの名無しさん :2006/10/04(水) 01:17:52
>>207
マクロよりtemplate関数にすべきだと思う。

設計から見直すべきだとは思うけど。

210 名前:デフォルトの名無しさん :2006/10/04(水) 01:19:24
そうだね、大きな問題だね
はいはい

211 名前:デフォルトの名無しさん :2006/10/04(水) 01:20:25
>>205
すみません
ヘボなんで、まだ例外とか全然使いこなせてないっす^^;


212 名前:デフォルトの名無しさん :2006/10/04(水) 01:25:18
例外が発生したらdeleteされなくなっちゃうんだよ。

213 名前:デフォルトの名無しさん :2006/10/04(水) 01:29:54
newしたオブジェクトをコンテナに入れるのだったら、ptr_containerもあるぞ。

214 名前:デフォルトの名無しさん :2006/10/04(水) 01:31:03
>>208
型安全性って全く詳しくないんだけど
型安全にするか、全く型安全にしないかの2択じゃなかったですか?
そうでないならちゃんと勉強せねば・・

今の例外の知識で作ると、中途半端になりそうなので
ちょっと怖いです、アドバイス頂いたのにすみません

>>209
どもです
テンプレートは、今は可読性もあるのでできるだけ使わないようにしてます
好きなんですけどね、テンプレート

215 名前:デフォルトの名無しさん :2006/10/04(水) 01:32:28
>>214
型安全と例外安全は別物だよ。言葉からして違うし。

216 名前:デフォルトの名無しさん :2006/10/04(水) 01:33:42
例外安全性はC++の用語なのでしょうか?
どういうことだか教えてください。

217 名前:デフォルトの名無しさん :2006/10/04(水) 01:36:05
怖いも何もスマートポインタに入れるだけでいいのに。君のコーディングの方が怖いと思う。

218 名前:デフォルトの名無しさん :2006/10/04(水) 01:37:59
>>212
デストラクタで
if(t)delete tをやってみたところメモリリークしてました;
うーん、やっぱり例外学ばないとダメなんかなぁorz
new/deleteだけ気をつけるとかじゃ・・ダメ?w

>>213
それは初耳ですた!
調べてみます

219 名前:デフォルトの名無しさん :2006/10/04(水) 01:38:03
>>214
どこに可読性の問題が…?
マクロを奨めないのは副作用の問題があるからだけど。

220 名前:デフォルトの名無しさん :2006/10/04(水) 01:38:51
例外安全といえばExceptional C++。

ごめん、言ってみたかっただけ、俺もまだ読んだことない。

221 名前:デフォルトの名無しさん :2006/10/04(水) 01:44:40
>>218
趣味でコーディングするならそれでもいいんじゃないか?C++始めたばかりだろうし、少しずつ覚えていけばいい。

まあスマートポインタは簡単に使えるしわざわざ生ポインタ使う理由はないと思うが。

222 名前:デフォルトの名無しさん :2006/10/04(水) 01:45:22
>>215
あ、そうですね、プログラマのくせに適当ですません・・

>>217
他に理由をあげると、きちっと動作を理解してから使いたいってのがあります
スマートポインタにも色々あるみたいだし

>>219
そういわれるとちょっと悩みます
実際そんなにたいしたテンプレートにはならないだろうけど
他の人もこのコードにふれる可能性があるので

223 名前:デフォルトの名無しさん :2006/10/04(水) 01:48:24
Exceptional C++ Styleの訳本も出たな。

224 名前:デフォルトの名無しさん :2006/10/04(水) 01:49:27
>>220
持ってるけど、読んでなかった・・がーん
なんかむずそうだから後回しにしてた
うーむ、読まないと

>>221
ふむふむ
一つのカンタンな解としては
基本的には循環参照ってのだけ気をつけておいて
スマートポインタを使えばええんでしょうか
循環参照は・・これから調べますw

というかみなさんすごいいっぱいアドバイスくれて
ありがとうございます!

225 名前:デフォルトの名無しさん :2006/10/04(水) 01:52:35
int a = new int[0];
ってどうなります?確保されないのか1つだけ確保されるのか・・・

226 名前:デフォルトの名無しさん :2006/10/04(水) 01:56:54
0個確保される。

227 名前:225 :2006/10/04(水) 02:01:49
・・・というとこのコードは意味なしということですか?
それとも0個確保されるというのは何か意味があるのでしょうか・・・

228 名前:デフォルトの名無しさん :2006/10/04(水) 03:22:52
>>227
実装次第では仮令0個でもdelete[]しないとメモリリークする。

229 名前:デフォルトの名無しさん :2006/10/04(水) 03:29:32
アレ? スタック上に生成する配列の場合、
0 だとコンパイルエラーになっちゃうけど、
new の場合は 0 でもいいんだっけ?

230 名前:225 :2006/10/04(水) 03:33:00
>>228
すいません・・・仕組みが理解できなくて
例えばどういった実装でメモリリークが起こるのでしょう?

231 名前:デフォルトの名無しさん :2006/10/04(水) 03:39:29
よかないのが普通だろうが、コード自体は不正でもなんでもない。
mallocにサイズ0を渡してもNULLが返ってくるわけじゃなく、
大抵の場合newもそれに倣った動作をしてよこす。
つまりヒープの管理領域だけは消費されてしまう。
newが実値を返す以上はdelete[]しないとメモリリーク確定。

232 名前:225 :2006/10/04(水) 03:43:48
なるほど、使えないけど領域だけは食うということですか
deleteが必要というわけですね

233 名前:デフォルトの名無しさん :2006/10/04(水) 03:52:48
>>230 >>229
例えば、こんなコードを考えれば0個確保はできないといけない。
int main(int argc, char ** argv)
{
int a = new int[atoi(argv[1])];
delete[] a;
return 0;
}
また、delete[]を実装するためには何個確保できたか記録する必要がある。
その記録をヒープ上に確保するなら、delete[]しないとメモリリークになる。

234 名前:デフォルトの名無しさん :2006/10/04(水) 04:11:46
new int[0]がぬるぽを返すのはまずいのかな。

235 名前:デフォルトの名無しさん :2006/10/04(水) 08:20:41
>223
マジで出てるし
More Exceptional の方を先にするのが道理だと思うのだが……

236 名前:デフォルトの名無しさん :2006/10/04(水) 10:04:27
>>234
new (nothrow) だったら確保の失敗と区別が出来なくなる。
それと
          _
      ミ ∠_)
         /
         /   \\
 ウイーン  Γ/了     | |
  ウイーン  |.@|    | | ガッガッガッ
       | / | .     人
       |/ |    <  >_Λ∩
      _/  | //. V`Д´)/ ←>>234
      (_フ彡           /

237 名前:デフォルトの名無しさん :2006/10/04(水) 10:10:17
谷崎潤一郎

238 名前:デフォルトの名無しさん :2006/10/04(水) 11:20:52
テンプレートクラスで、その型がfloatならAの処理をして、
それ以外なら何もしないといった処理はどうやればいいでしょうか?

その(floatの)クラスを継承したクラスを作ればいいような気もするんですが、
出来ればfloatの時とそうでないときで、透過的に使えるようにしたいんです。

239 名前:デフォルトの名無しさん :2006/10/04(水) 11:23:28
特殊化のこと?

240 名前:デフォルトの名無しさん :2006/10/04(水) 11:35:47
>>239
すいません。ちょっと調べてみた所特殊化だと
同一の処理を行う部分も書き直す必要があるのではないでしょうか。
一部のメソッドのみを書き換えたり、メソッドを追加するだけのようなコトがしたいんです。

241 名前:デフォルトの名無しさん :2006/10/04(水) 11:41:50
共通の部分をくくりだせばいいよ

242 名前:デフォルトの名無しさん :2006/10/04(水) 11:53:40
共通部分を関数テンプレートで書く。

243 名前:デフォルトの名無しさん :2006/10/04(水) 12:10:58
>>241,242
どういうことでしょうか?
ベースとなる汎用のクラスFooがあるときに、
Foo<double>で変更部分のみ記述したら
変更部分以外は無かったことにされました。

244 名前:デフォルトの名無しさん :2006/10/04(水) 12:13:12
外部に template <class T> void foo2(T param)
などの下請け関数を作り、共通部分はそこで処理する。

245 名前:デフォルトの名無しさん :2006/10/04(水) 12:16:41
>>244
そういうことでしたか、大がかりな変更になるんですね。。
一度それでやってみます。ありがとうございました。

246 名前:デフォルトの名無しさん :2006/10/04(水) 12:19:33
内容がほとんど同じなら、typeinfo(T) == typeinfo(float) などで
分岐させられないか?

247 名前:とおりすがり :2006/10/04(水) 13:10:30
typeinfo はいや。
さしみ

248 名前:デフォルトの名無しさん :2006/10/04(水) 14:32:06
>>246
typeinfoなんか使ったらコンパイル通せなくなるかもよ

249 名前:デフォルトの名無しさん :2006/10/04(水) 23:16:17
>>243
下のコードを VC2005express で試してみたら期待通り f2() だけ特殊化されたよ。
なかったことにされたっていうのは具体的にどういうことなのか教えて。

#include <iostream>
using namespace std;
template<class T> struct G {
void test() { f1(); f2(); f3(); }
void f1() { cout << "G::f1" << "\n"; }
void f2() { cout << "G::f2" << "\n"; }
void f3() { cout << "G::f3" << "\n"; }
};

template<> void G<double>::f2() { cout << "Special G::f2" << "\n"; }

int main() {
G<int> gi;
gi.test();
G<double> gd;
gd.test();
}

250 名前:デフォルトの名無しさん :2006/10/06(金) 00:27:33
UTF-8扱えるようにbasic_string<char>を改良しようと思うんだけど

どこから手をつければいいの?

class ustring : std::basic_string<unsigned char>{

この中に何が書けばいいのか解らない



■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.