C++相談室 part22
- 1 名前:v(^・^)v :03/08/09 01:44
- C++に関する質問はこちらへどうぞ。
ただし質問の前にFAQに一通り目を通してください。
また、テンプレートライブラリ(STL含む)に関する質問は
専用の別スレへどうぞ。
過去スレ、関連スレ、関連リンクなどはこちら>>2-7
- 2 名前:v(^・^)v :03/08/09 01:45
- ■過去スレ■
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://pc2.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc2.2ch.net/tech/kako/1043/10436/1043605481.html
16 http://pc2.2ch.net/tech/kako/1045/10457/1045746245.html
17 http://pc2.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc2.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc2.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc2.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc2.2ch.net/test/read.cgi/tech/1057580107/
- 3 名前:v(^・^)v :03/08/09 01:45
- ■基本■
[C++ FAQ]
http://www.parashift.com/c++-faq-lite/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[禿 Stroustrup]
http://www.research.att.com/~bs/
[C++ Final Draft International Standard]
http://www.kuzbass.ru/docs/isocpp/
http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
[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/ (日本語)
- 4 名前:v(^・^)v :03/08/09 01:45
- ■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/
- 5 名前:v(^・^)v :03/08/09 01:46
- ■Compiler■
[GCC]
http://gcc.gnu.org/
(Windows上でのPOSIX環境構築 http://www.cygwin.com)
[Borland C++ Compiler]
http://www.borland.co.jp/cppbuilder/freecompiler/
[.NET Framework SDK]
http://www.microsoft.com/downloads/details.aspx?FamilyId=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=ja
[DigitalMars]
http://www.digitalmars.com/
[OpenWatcom]
http://www.openwatcom.org/
[Comeau]
http://www.comeaucomputing.com/
[Intel]
http://www.intel.com/software/products/compilers/
[Metrowerks]
http://www.metrowerks.com/mw/default.htm
- 6 名前:デフォルトの名無しさん :03/08/09 01:48
- __ノ | _
| | | ノ\__ヽ
ヽ二二 ヽ -―人 、 | \ノ◎)
_____/ /'(__)ヽ____|
/ / _(__)∩ \
| |/ ( ・∀・ )ノ RUBY! \
.\ヽ、∠___ノ\\ \
.\\::::::::::::::::: \\ \
- 7 名前:v(^・^)v :03/08/09 01:49
- ■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
- 8 名前:v(^・^)v :03/08/09 01:56
- ■関連スレ■
[【C++】template 統合スレ -- STL/Boost/Loki, etc.]
http://pc2.2ch.net/test/read.cgi/tech/1047978546/l50
[【C++】Boost使い集まれ!]
http://pc2.2ch.net/test/read.cgi/tech/1033830935/l50
[C/C++の宿題やらせてください。]
http://pc2.2ch.net/test/read.cgi/tech/1058283913/l50
[初心者にVisual C++を教えるスレ]
http://pc2.2ch.net/test/read.cgi/tech/1056280510/l50
[VisualC++(MFC限定)相談室]
http://pc2.2ch.net/test/read.cgi/tech/1056584836/l50
[ATL 相談室]
http://pc2.2ch.net/test/read.cgi/tech/1029029882/l50
[C/C++でのWindowsPrograming議論スレ(質問お断り)]
http://pc2.2ch.net/test/read.cgi/tech/1049790146/l50
[COMの世界を斬る!]
http://pc2.2ch.net/test/read.cgi/tech/981823340/l50
[managed C++ やろうぜ!!]
http://pc2.2ch.net/test/read.cgi/tech/1014486422/l50
[C++Builder相談室]
http://pc2.2ch.net/test/read.cgi/tech/1054280736/l50
[タダで使えるBorland C++]
http://pc2.2ch.net/test/read.cgi/tech/1054390397/l50
[Code of the Nerds" Digital Mars C/C++]
http://pc2.2ch.net/test/read.cgi/tech/1044210976/l50
[GCCについて]
http://pc2.2ch.net/test/read.cgi/tech/1046179115/l50
[OpenWatcom C++]
http://pc2.2ch.net/test/read.cgi/tech/1033433728/l50
[タダで最強!フリーC/C++コンパイラ]
http://pc2.2ch.net/test/read.cgi/tech/1035882599/l50
- 9 名前:1 :03/08/09 01:59
- なんかここって5連続以上で投稿するとはねられるのか。知らなかった。。。
- 10 名前:デフォルトの名無しさん :03/08/09 02:37
- これ見てください。
http://jbbs.shitaraba.com/game/bbs/read.cgi?BBS=1314&KEY=1060147851&LAST=100
- 11 名前:デフォルトの名無しさん :03/08/09 02:43
- 嫌です
- 12 名前:v(^・^)v :03/08/09 02:44
- ■関連スレ(テンプレートを用いたライブラリ中心)■
【C++】template 統合スレ -- STL/Boost/Loki, etc.
part1 http://pc2.2ch.net/tech/kako/1037/10377/1037795348.html
part2 http://pc2.2ch.net/test/read.cgi/tech/1047978546/l50
【C++】Boost使い集まれ!
http://pc2.2ch.net/test/read.cgi/tech/1033830935/l50
STLスレッド
part1 http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
part2 http://pc3.2ch.net/tech/kako/1026/10267/1026793823.html
Generic Programming with C++ Template
http://pc.2ch.net/tech/kako/1008/10085/1008593126.html
- 13 名前:v(^・^)v :03/08/09 02:44
- ■関連スレ(環境依存の話題)■
[GCC]
GCCについて
part1 http://pc2.2ch.net/tech/kako/1007/10077/1007731543.html
part2 http://pc2.2ch.net/test/read.cgi/tech/1046179115/l50
祝・GCC 3.0リリース http://pc.2ch.net/test/read.cgi/unix/992942337/l50
[Digital Mars]
Code of the Nerds" Digital Mars C/C++
http://pc2.2ch.net/test/read.cgi/tech/1044210976/l50
[Borland]
C++Builder相談室
part1 http://piza2.2ch.net/tech/kako/969/969458279.html
part2 http://pc.2ch.net/tech/kako/997/997074601.html
part3 http://pc3.2ch.net/tech/kako/1016/10160/1016065855.html
part4 http://pc2.2ch.net/tech/kako/1035/10355/1035596146.html
part5 http://pc2.2ch.net/tech/kako/1045/10455/1045542179.html
part6 http://pc2.2ch.net/test/read.cgi/tech/1054280736/l50
タダで使えるBorland C++!
part1 http://pc3.2ch.net/tech/kako/1002/10023/1002377328.html
part2 http://pc2.2ch.net/tech/kako/1030/10304/1030493157.html
[VisualC++]
VisualC++相談室
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc2.2ch.net/tech/kako/1036/10368/1036897197.html
- 14 名前:v(^・^)v :03/08/09 02:45
- 初心者にVisual C++を教えるスレ
part1 http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
part2 http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
part3 http://pc2.2ch.net/tech/kako/1038/10381/1038160750.html
part4 http://pc2.2ch.net/test/read.cgi/tech/1044196393/l50
part5 http://pc2.2ch.net/test/read.cgi/tech/1048698321/l50
VisualC++(MFC限定)相談室 MFC7.dll
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
Windows Programing for C/C++(Not MFC)
http://pc2.2ch.net/test/read.cgi/tech/1018239290/l50
COM の世界を斬る!
http://pc2.2ch.net/test/read.cgi/tech/981823340/l50
ATL 相談室
http://pc2.2ch.net/test/read.cgi/tech/1029029882/l50
managed C++ やろうぜ!!
http://pc2.2ch.net/test/read.cgi/tech/1014486422/l50
- 15 名前:v(^・^)v :03/08/09 02:47
- ↑この名前は決まり事ですか?
- 16 名前:デフォルトの名無しさん :03/08/09 02:50
- CとC++ってもう終わっていまはC#なんじゃないんですか?
- 17 名前:デフォルトの名無しさん :03/08/09 02:52
- >>16
違う。今はJava。
- 18 名前:デフォルトの名無しさん :03/08/09 05:49
- std::list < std::string >
で特定の文字列を含む要素を削除したいのですが
どのようにすればいいのでしょうか?
- 19 名前:デフォルトの名無しさん :03/08/09 06:08
- remove_if
- 20 名前:1 :03/08/09 09:26
- >>12-15
テンプレ長いので整頓して>>2-8にしたんだけど、ダメすか?
>>18
struct contains {
const string& key;
contains( const string& key ) : key(key) {}
bool operator()( const string& str ) const { return str.find(key) != string::npos; }
};
lst.erase( remove_if( lst.begin(), lst.end(), containe("hoge") ), lst.end() );
- 21 名前:デフォルトの名無しさん :03/08/09 13:53
- >struct contains {
> const string& key;
> contains( const string& key ) : key(key) {}
> bool operator()( const string& str ) const { return str.find(key) != string::npos; }
>};
前スレによるとこの時コンストラクタに渡されるテンポラリstring("hoge")の
生存期間はコンストラクタを抜けるまでという事になっているから
これでは駄目なのではないのか?そうだとすれば
const string key;と書くべきという事になるのだが…
- 22 名前:20 :03/08/09 14:00
- >>21
んにゃ。"full expression containing the call" の終わりまで有効です。
前スレ829 (827ではなく) 参照。
- 23 名前:デフォルトの名無しさん :03/08/09 14:06
- >>22
829は関数呼び出しの参照パラメータに結合した場合で
827はコンストラクタの初期化リストに結合した場合だから
827が適用されるように見えるのだが?
- 24 名前:18 :03/08/09 14:07
- 試して見ます。ありがとうございます。
- 25 名前:デフォルトの名無しさん :03/08/09 14:13
- >>23
コンストラクタの初期化リスト( ctor-initializer / 12.6.2.1 )とは
constructor()
: parent_class( ... ), member( ... ) ← これ
のことであって
new constructor( ... ) ← これ
のことではない。こっちはコンストラクタ関数呼び出しの際の参照パラメータへのbind。
- 26 名前:デフォルトの名無しさん :03/08/09 14:27
- >コンストラクタの初期化リスト( ctor-initializer / 12.6.2.1 )とは
それはもちろん承知だが、つまり
contains() : key(string("hoge")) {}
は駄目という事か。なるほど
具体例がないからよく分からなかった。
- 27 名前:18 :03/08/09 14:30
- うまくいきました。ありがとうございました。
- 28 名前:デフォルトの名無しさん :03/08/09 17:43
- >>27
こっちもためしてみな。
lst.remove_if( contains( "hoge" ) );
- 29 名前:デフォルトの名無しさん :03/08/09 23:47
- >>28
それだ!
- 30 名前:デフォルトの名無しさん :03/08/10 08:23
- ヘッダー1をインクルードしたヘッダー2を
インクルードするとヘッダー1が受け継がれてしまうのですが、
これを受け継ぎたくないのです。
ヘッダーのみでインラインクラス作る時にこの制約が生じると思うのです。
cppでインクルードしたいヘッダーをインクルードすればこれを回避できるのですが、
2つのファイルに分離してしまいます。
解決策はあるのでしょうか?
- 31 名前:デフォルトの名無しさん :03/08/10 08:49
- templateがないなら分割コンパイルすればいいが
あるなら(今のところ)あきらめるしかない。
あるいは独自のネームスペースに閉じ込めてもいいが
マクロはどうにもならない。
- 32 名前:C++ユーザーはSCOに金を払え! :03/08/10 10:15
- プログラミング言語のC++も当社が保有しており、他社にライセン
スしています。当社はC++から多くのロイヤルティ収入を得ていま
す。カルデラの知的資本の奥の深さには驚かされました。
http://www.zdnet.co.jp/enterprise/0208/20/nw_01.html
- 33 名前:デフォルトの名無しさん :03/08/10 10:16
- >>30
たとえばヘッダ2で必要としている(ヘッダ1内の)宣言が型名で、
ヘッダ2の中ではそれへのポインタとして利用されているだけなら、
ヘッダ2の中でその型名だけ(それが型名であると)宣言してやれば、
ヘッダ2がヘッダ1をインクルードする必要はなくなる。
もしヘッダ2がインクルードされる前にヘッダ1がインクルードされていれば
中身のあるその宣言を使えばいいし、逆にインクルードされていなければ、
ヘッダ2の中で自前で必要最低限の宣言だけしてやれば良い。
...しかしたとえそれが型名であっても、ヘッダ1でテンプレートが使われていたり、
ヘッダ2でポインタや参照以外の使われ方をしていたりすると、
>>31 のいうとおり、どうしようもないだろうな。
ってゆーか漏れはそもそも、そういう構成自体がどうかと思うが。
- 34 名前:デフォルトの名無しさん :03/08/10 10:44
- >>1
乙!!
- 35 名前:名無しさん@Emacs :03/08/10 10:52
- ちょいと質問です。変な状況かもしれないのだけど。
C++で書かれた二つのライブラリを組合わせて一つのプログラムを
作りたいのですが、それぞれに別のメモリ管理ポリシーをもってます。
つまりそれぞれで operator new() を別のものにしてやりたいのですが、
うまい方法はないでしょうか?
それぞれのライブラリはもう書きあがっているので、できるだけ
ライブラリのコード自体はいじらずに、ヘッダをちょこっといじるだけで
すむとうれしいのですが..
- 36 名前:デフォルトの名無しさん :03/08/10 11:14
- ( ´_¬`)プ──ン
- 37 名前:デフォルトの名無しさん :03/08/10 11:34
- クラスライブラリなら、メモリアロケーションをポリシー化して、
継承させればいいんでないか?
- 38 名前:デフォルトの名無しさん :03/08/10 13:46
- 前スレからきますた。
C++のRTTIについて質問なのですが、これってC++は
どうやって実現しているのですか?
文字列で各インスタンスに埋め込んでいるのでしょうか?
- 39 名前:デフォルトの名無しさん :03/08/10 13:48
- >>38
普通は、仮想関数テーブルに型情報を置いてある。
仮想関数テーブルがどこにあるかは前スレを見れ。
- 40 名前:38 :03/08/10 13:53
- >>39
レスありがとうございます。
仮想関数テーブルの質問も私ですた。(苦笑
ってことは仮想関数をもたないクラスのインスタンスも
vptrを持っているということですか?
- 41 名前:デフォルトの名無しさん :03/08/10 13:55
- >>40
RTTIは仮想関数画ナイトダメ
- 42 名前:38 :03/08/10 13:59
- >>41
そうなんですか?
仮想関数を持たないクラスでもRTTI使えますが。。。
- 43 名前:デフォルトの名無しさん :03/08/10 14:08
- >>40
>>40
No, それだと C との互換性がなくなっちゃうから。C++ 標準規格では、
仮想関数を持たないクラスに対して downcast できないことになってる。
5.2.7 Dynamic cast
1 The result of the expression dynamic_cast<T>(v) is the result of converting the expression v to type
T. T shall be a pointer or reference to a complete class type, or “pointer to cv void”. ...
(2-5 upcast とか null ポインタの扱いなど)
6 Otherwise, v shall be a pointer to or an lvalue of a polymorphic type (10.3).
- 44 名前:38 :03/08/10 14:19
- >>43
なるほど。。。納得です。
となると仮想関数をもたないクラスのRTTIは
どうやって実現しているのですか?
- 45 名前:デフォルトの名無しさん :03/08/10 14:20
- RTTI といえば typeid もあるけど、あれも polymorphic class 以外に
適用すると、実際の型が返ってくるとは限らない。
5.2.8 Type identification
3 When typeid is applied to an expression other than an lvalue of a polymorphic class type, the result
refers to a type_info object representing the static type of the expression.
>>42
処理系とテストコード晒してみ?
- 46 名前:デフォルトの名無しさん :03/08/10 14:24
- まあでも、polymorphic class以外のクラスを、
親クラスから子クラスのポインタにキャストするような
使い方は、あんまりしないわな
(あ、でもCRect->RECT*みたいなのがあるか)。
- 47 名前:38 :03/08/10 14:29
- >>45
ていねいにありがとうございます。m(__)m
環境はVC++6.0で
#include <iostream>
#include <typeinfo>
using namespace std;
class CBase
{
};
class CDerived : public CBase
{
};
int main(){
CBase* p;
p=new CDerived;
cout << typeid(p).name() << endl;
delete p;
return 0;
};
こんな簡単なコードで試しているのですが、出力はCBaseへのポインタ
と出ます。
でCBaseに仮想関数を追加してもやはりダメでした。
- 48 名前:デフォルトの名無しさん :03/08/10 14:33
- VC6 だとデフォルトで RTTI 無効だったような。
メニューバーから [プロジェクト] - [設定] で設定ダイアログ表示
[C/C++] タブ選択
「ランタイムタイプ情報 (RTTI) を有効にする」のチェックボックスを確認
- 49 名前:デフォルトの名無しさん :03/08/10 14:36
- #include <iostream>
#include <typeinfo.h>
class Base {
public:
virtual void vvfunc() {}
};
class Derived : public Base {};
using namespace std;
main()
{
Derived* pd = new Derived;
Base* pb = pd;
cout << typeid( pb ).name() << endl; //prints "class Base *"
cout << typeid( *pb ).name() << endl; //prints "class Derived"
cout << typeid( pd ).name() << endl; //prints "class Derived *"
cout << typeid( *pd ).name() << endl; //prints "class Derived"
delete pd;
}
- 50 名前:デフォルトの名無しさん :03/08/10 14:36
- typeid( type-id )
typeid( expression )
- 51 名前:38 :03/08/10 14:37
- >>48
あぅ。
こんなのがあったのですね。知りませんですた。(--);;
でもやっぱりダメみたいですー。(TT)
- 52 名前:38 :03/08/10 14:43
- >>49
理解できますた。
コードまで書いていただいてすんまそん。
お騒がせしますた。
逝ってきます。。。
- 53 名前:デフォルトの名無しさん :03/08/10 14:45
- >>51
> cout << typeid(*p).name() << endl;
これで CDerived と表示されない?
- 54 名前:38 :03/08/10 14:47
- >>53
なりますた。
ポインタの型を表示させていますた。(TT)
- 55 名前:30 :03/08/10 16:05
- >>31,33
ありがとうございます。
>ってゆーか漏れはそもそも、そういう構成自体がどうかと思うが。
そうですね。
ヘッダー1(class1)をヘッダー2(class2)でインクルードせずに
プロトタイプ宣言して使っても
結局はヘッダー2もインクルードしないとコンパイルできない...。
ただ、後からヘッダー1以外で定義した(class1)を選択できる
余地は生まれるわけだが、(class1)のあるヘッダーを探さなければいけない罠。
- 56 名前:デフォルトの名無しさん :03/08/10 16:17
- しょうもないことかもしれないのですが
#includeディレクティブって、みなさんどこに
書きますか?
.cppにまとめて書いている人を良く見かけますが
.hでそのクラスの実装で必要なのをインクルード
してはマズイでしょうか?
- 57 名前:>>2ちゃんねらーの皆さん :03/08/10 16:21
- 2ちゃんねらーなどの間で、人気のある寺院が有ります。
これらの寺院にて諸願成就を祈願しましょう。(爆)
(1-3件目)
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(4件目)
--------------------------------------------------------------
寺院名 吉祥山唐泉寺
通称 江戸川不動尊
所属宗派 真言宗泉涌寺派
住所 〒133−0051
東京都江戸川区北小岩七丁目10−10
京成電鉄の小岩駅から徒歩約15分
(JR線の小岩駅は、
京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号 03−3658−4192
住職 高田正圓
(女住職で、先代住職(高田真快)の奥さんであった模様。)
本尊 不動明王
祈祷日及び祈祷時刻
通常は毎日午前6時より(150分前後かかる模様)
行われるが、毎月28日には(不動明王縁日として)
午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩) 3000円 5000円 10000円
(特別護摩) 30000円(21日間) 100000円(108日間)
300000円(365日間)
--------------------------------------------------------------
- 58 名前:デフォルトの名無しさん :03/08/10 16:22
- >>56
継承関係があったりメンバ変数として実態を持つ場合には、当然ヘッダに
書く必要がある。ただし、そうすると
1. ヘッダ A に private メソッドを追加
2. ヘッダ A を include している別のヘッダ A1, A2, A3... も
影響を受ける (と make や統合環境のビルドシステムは理解する)
3. 結果としてヘッダ A, A1, A2, A3, ... を直接・間接に include している
ソースコードは全部リコンパイル
となって、規模が大きくなってくるとキツイ。
俺は極力ヘッダ同士の include はせずに、実装も impl イディオムや
インターフェース継承 + FactoryClass などを使って隠蔽するように
してる。
- 59 名前:デフォルトの名無しさん :03/08/10 16:22
- ヘッダの依存関係は少ないほど良い。
- 60 名前:デフォルトの名無しさん :03/08/10 16:28
- >>56
58のとおりだが、
他に、相互参照したときにエラーになるなど。
- 61 名前:56 :03/08/10 16:35
- >>58-59さん
なるほど...
.cppでインクルードすると#includeを書く順番に気を
つけないといけないので、.hに書けばいいのにと
思ったのですが、書籍によっては徹底的に.cppで
まとめてインクルードしているもので。
58さんの方法、まだ初心者なのでよくわからないのですが
もっと勉強しますです。。。
- 62 名前:デフォルトの名無しさん :03/08/10 16:45
- > .cppでインクルードすると#includeを書く順番に気を
> つけないといけないので
それはヘッダの書き方が間違ってる気がする。
- 63 名前:56 :03/08/10 16:47
- >>60さん
ありがとうございます。
でも、Grid.hとCell.hがあったらGrid.h中でCell.hを
インクルードしておいて、プログラム中ではGrid.h
だけインクルードするようにしたいですね、やっぱり...
みなさんみたいにもっといっぱい経験を積まなきゃぁ
- 64 名前:デフォルトの名無しさん :03/08/10 16:52
- >>63
GridだけでCellを使わないならCell.hをインクルードする必要はないでしょ。
Cellも使う時だけCell.hをインクルードすればいいだけだし。
勝手にまとめてインクルードされて些細な変更でまとめて再コンパイルされるより、使うものだけインクルードした方がマシ、
何十個もインクルードするわけじゃないんだから。
- 65 名前:56 :03/08/10 17:04
- >>64
ちょっとこんがらがってきたのでよく考えて見ます。。。
- 66 名前:デフォルトの名無しさん :03/08/10 18:42
- C++でAccessに接続したいのですが
何か参考になるサイトがあれば教えてください。
- 67 名前:デフォルトの名無しさん :03/08/10 20:44
- 質問です。
class CTest{
public:
CTest();
private:
int m_nValue;
};
というクラスがあって、m_nValueを初期化するのに
CTest(){m_nValue=100;}
と書いている場合と
CTest():m_nValue(100){}
と書いている場合がありますが
どう違い、使い分けているのでしょう?
- 68 名前:デフォルトの名無しさん :03/08/10 20:46
- >>67
代入と初期化の違いを調べろ。
- 69 名前:デフォルトの名無しさん :03/08/10 20:56
- >>67
何も考えずに
CTest():m_nValue(100){}
使え
- 70 名前:デフォルトの名無しさん :03/08/10 21:20
- 組み込み型の値ならたいした違いはない。と思う
- 71 名前:デフォルトの名無しさん :03/08/10 21:22
- 継承する時とかに違いが出る
- 72 名前:デフォルトの名無しさん :03/08/10 21:22
- 出るか?
- 73 名前:デフォルトの名無しさん :03/08/10 21:31
- 出ない
- 74 名前:デフォルトの名無しさん :03/08/10 22:07
- 出るっ、出ますうっ のガイドライン
http://that.2ch.net/test/read.cgi/gline/1038243550/
- 75 名前:デフォルトの名無しさん :03/08/11 03:44
- 標準ライブラリの名前付け規則(アンダースコア区切りの小文字)について、
なぜあのようになっているか理由が示された文書はありますか?
- 76 名前:デフォルトの名無しさん :03/08/11 05:04
- UNIXではあれが普通だから。
- 77 名前:デフォルトの名無しさん :03/08/11 07:23
- map型のコンテナの宣言の時に判定関数を付けたいんですが
その判定関数のはどうしたらいいんでしょうか?
戻り値がboolで仮引数がpairにしているんですけどエラーでコンパイルできません
- 78 名前:デフォルトの名無しさん :03/08/11 07:59
- ダメ質問の典型例
- 79 名前:デフォルトの名無しさん :03/08/11 08:29
- >>35
それオレも知りたい。
引数を微妙に変えたoperator new()を用意して、
MFCのデバッグ用operator new()とぶつからないようにしたりしてる。
もうちょっとなんとかならんのか…
- 80 名前:デフォルトの名無しさん :03/08/11 08:37
- 別のプログラムにしてタスク間通信する
- 81 名前:77 :03/08/11 08:54
- bool haitei(const double& a, const double& b)
{
return a < b;
}
と関数を書いて
map<string,double> x(hantei);
とかいています。
したいことはコンテナの並び順をdoubleの値で順番が決まるようにしたいんです。
- 82 名前:デフォルトの名無しさん :03/08/11 08:57
- map<double,string>でいいだろ
- 83 名前:_ :03/08/11 09:01
- http://homepage.mac.com/hiroyuki45/
- 84 名前:デフォルトの名無しさん :03/08/11 09:15
- ( ´_¬`)プ──ン
- 85 名前:デフォルトの名無しさん :03/08/11 09:31
- なんでコンストラクタに比較関数を渡してるのかが分からん。
1.釣り
2.参考にした文献にそう書いてあった
3.やっぱり釣り
- 86 名前:デフォルトの名無しさん :03/08/11 09:37
- >>81
> したいことはコンテナの並び順をdoubleの値で順番が決まるようにしたいんです。
無理。んなことしたらmapじゃなくなる。
あと比較関数はテンプレートの引数に。
- 87 名前:デフォルトの名無しさん :03/08/11 09:47
- 麻雀かとおもた
typoだよね
- 88 名前:81 :03/08/11 09:53
- Accelerated C++のp137に
map<K,V> m(cmp);
キーの型が const Kで値の型がVである空のmapを生成する。ただしキーの順番は判定関数の
cmpで決められる。
って書いてあったんです。
キーでしか並べられないことは理解しました。正しくは
map<K,V,cmp> m;
と書くのでしょうか?
- 89 名前:デフォルトの名無しさん :03/08/11 10:00
- デフォルトはless<Key>だからそれを変えなければ意味ない
pointer_to_binary_functionにしとくとか
- 90 名前:デフォルトの名無しさん :03/08/11 10:01
- >>88
コンストラクタに渡せる比較関数は、
map<K,V,CMP> ← としたときの、CMP 型のオブジェクトのみ。
map<K,V, bool (*)(const K&,const K&> m( &cmp );
とでも書くか、もっと綺麗に書くなら比較関数を
関数オブジェクト(わかんなけりゃgoogleれ) にするか。
- 91 名前:デフォルトの名無しさん :03/08/11 10:01
- >>88
前者の記述も間違いではないがこの場合 cmp は less<Key> に限定されるから意味がない。
後者の記述で、cmp には関数オブジェクトのクラスを指定すればいけるばず。
- 92 名前: :03/08/11 13:45
- みんな、SCO にお金払ってる?
俺、払ってないんだけど…
- 93 名前: :03/08/11 13:47
- http://slashdot.jp/comments.pl?sid=112395&cid=373312
MozillaQuestによると、SCOはC++の権利も主張しはじめたようです。
http://mozillaquest.com/Linux03/ScoSource-02_Story03.html
- 94 名前:デフォルトの名無しさん :03/08/11 13:50
- MSに金払ってるからC++は関係ねーな
- 95 名前:デフォルトの名無しさん :03/08/11 22:27
- まったくの初心者なんですが、
C++でキーのログをとりたいんですがどーすればいいですか?
JAVAみたいにキーイベントあるんでしょうか?
- 96 名前:デフォルトの名無しさん :03/08/11 22:49
- javaでやれば?
- 97 名前:デフォルトの名無しさん :03/08/12 00:23
- スパイウェア市ね
- 98 名前: :03/08/12 00:28
- >>95
それは C++ にあるとかないとか、の問題じゃないと思う。
つーか、使っている OS のイベントハンドラにアクセスするためのライブラリがあればできるんじゃない?
- 99 名前:デフォルトの名無しさん :03/08/12 00:39
- 初心者は何(の本)から手をつけたらいいでつか?
独習?
- 100 名前:デフォルトの名無しさん :03/08/12 00:48
- 麻奈たんハァハァ…
- 101 名前:デフォルトの名無しさん :03/08/12 02:59
- >>99
Cマガジン
- 102 名前:デフォルトの名無しさん :03/08/12 11:29
- >>99
Cマガジン
- 103 名前: :03/08/12 11:31
- その前に SCO にかね払わないと…
SCO に吸い取られて餓死しそうです。
- 104 名前:デフォルトの名無しさん :03/08/12 12:34
- VC++6.0 デフォルト
コンパイル通らないけど、こういうのってだめなんだっけ?
#include <vector>
#include <map>
class A{};
class B{};
class C{
public:
C(){}
C(const std::pair<const A, B> &in){}
};
int main(){
std::map<A, B> m;
std::vector< C > v(m.begin(), m.end());
return 0;
}
- 105 名前:デフォルトの名無しさん :03/08/12 12:51
- >>98
ありがとうございます。
調べてみます。
- 106 名前:デフォルトの名無しさん :03/08/12 13:11
- >>104
VC7では通る
- 107 名前:デフォルトの名無しさん :03/08/12 13:13
- less<A>がなくても通るのだろうか
- 108 名前:デフォルトの名無しさん :03/08/12 13:20
- プログラムの勉強をしようと思うのですが、
友達に聞いたところ、ゲームを作ったり本気でやりこむつもりなら、
CやC++が良いと言われました。
そこで質問なのですが、
C++を理解するためにはCの知識は必要ですか?
どういう順序でやっていくのが良いと思いますか?
夏厨ですがよろしくお願いします。
- 109 名前:デフォルトの名無しさん :03/08/12 13:22
- >>108
いきなりC++でじゅうぶん。人並みの頭があれば。
- 110 名前:デフォルトの名無しさん :03/08/12 13:26
- C++は難しすぎ、と言うスレが立っていますが、
それほど難解なのですか?
また、ゲームを作る事を目標にした時、
CよりC++の方が適しているのでしょうか?
(この二つの違いも良く分かってないもので。。)
- 111 名前:デフォルトの名無しさん :03/08/12 13:35
- >>110
難解ということはないが、いろんなことができるので
"全部"使えるようになろうと思うとかなり大変ということ。
一部しか知らなくても十分使えるので、徐々に知識を増やせばいい。
CとC++の違いだが、C++はCを拡張した言語なので、基本的に
C++はCのすべての機能を含み、さらに多機能だと考えて良い。
ただし、Cの機能だけを前提にした書き方と、C++の機能があるときの
書き方の主流は違っているので、C++目的に先にCを覚えるのは遠回りかも。
- 112 名前:デフォルトの名無しさん :03/08/12 13:36
- >>110
C++の方が適している。今時純粋なCで組むやつなんか少ないと思われ。
C++は他の言語に比べると難解と言えるかもしれない。
- 113 名前:デフォルトの名無しさん :03/08/12 13:44
- >>110
(Cと比べて)C++のいいことろ
・オブジェクト指向を実現しやすい
・STLが便利(有り難味はそのうちわかる)
・低水準な部分(ハード周りの部分)を気にしなくてすむかもしれない
悪いところ
C++自身の入門書でよいものがない(大抵はCなどの経験が前提)
細かいことを気にしだすときりがない
はじめにGUIに手を出すと挫折する
- 114 名前:104 :03/08/12 13:47
- >>106
サンクスコ。
そうか、7では通るのか...。
なんかvector(unsigned int, T, allocator)
に解釈されてるっぽい。
- 115 名前:デフォルトの名無しさん :03/08/12 13:52
- >>114
VC6だとSTL関連は通らないことが多いかも
- 116 名前:デフォルトの名無しさん :03/08/12 14:29
- 他スレでも関連したことを聞いたのですが教えてください。
みなさん自作の共通関数とかってどうやってプロジェクト
に取り込んでコンパイルしていますか?
cppに例えばSumという関数を定義して、それを別のcpp
から呼びに行くと「定義されていない識別子です」と
叱られるのですが。
- 117 名前:デフォルトの名無しさん :03/08/12 14:33
- ハラショー
- 118 名前:デフォルトの名無しさん :03/08/12 14:46
- >>117
すぱしーば
- 119 名前:デフォルトの名無しさん :03/08/12 15:10
- >>116
ヘッダファイル書け(´д`;)
- 120 名前:デフォルトの名無しさん :03/08/12 15:11
- >>116
ヘッダーファイルというものを知らんのか
- 121 名前:デフォルトの名無しさん :03/08/12 15:22
- >>119,120
知りませんが何か?
- 122 名前:デフォルトの名無しさん :03/08/12 15:23
- >>121
そこまで根源的な初歩を知らないなら
まずは入門書嫁
- 123 名前:116 :03/08/12 15:34
- 遅れてしみません。
121は私ではありません。TT
ヘッダ.hと実装.cppに分けて、ヘッダ
を取り込んだのですが、関数を呼んでいる部分で
「グローバルネームスペースにない」といって
叱られます。
- 124 名前:デフォルトの名無しさん :03/08/12 15:38
- >>123
簡単な例を見せて
- 125 名前:デフォルトの名無しさん :03/08/12 15:38
- >>123
namespaceが本当に違っているのでなければ、
ヘッダに書いた関数プロトタイプの引数のどっかが違ってるとかじゃないの?
- 126 名前:116 :03/08/12 15:39
- でヘッダにネームスペースCommonを定義したのですが、
別のcppでそのヘッダをインクルードして
using namespace Common;
とやっても、
Common::Func();
だと通るのですが、ただの::Func()
だと通りません。
遅れたのですがVC++6.0です。
- 127 名前:デフォルトの名無しさん :03/08/12 15:42
- >>126
::Func()はusingの外のグローバルネームスペースから探すから当然では
Func()だろ
- 128 名前:116 :03/08/12 15:45
- >>124-125
レスありがとうございます。
ソースですが
-- Common.h --
namespace Common
{
void Func();
}
-- Common.cpp --
void Common::Func(){//処理...}
-- 別のcpp --
#include "Common.h"
using namespace Common;
void main()
{
::Func(); // 通らない
Common::Func(); // 通る
}
こんな感じです。
- 129 名前:デフォルトの名無しさん :03/08/12 15:46
- >>128
だから、::Func()と Func() は違うぞ。後者に汁
- 130 名前:116 :03/08/12 15:47
- >>127
みなさんおさわがせしました。TT
逝って来ます。。。
- 131 名前:デフォルトの名無しさん :03/08/12 15:50
- Cの入門書を終わらせていざC++の入門書を紐解くと
Cの知識が全然役に立たないのは仕様ですか?
他言語からの移行組はCやる必要なかった?
- 132 名前:166 :03/08/12 15:52
- >>129
サンクスコ!です。TT
- 133 名前:デフォルトの名無しさん :03/08/12 15:52
- >>131
うん
- 134 名前:デフォルトの名無しさん :03/08/12 16:02
- >>131
しかし、C++の入門書はCからの差分のみ書かれている場合が多いので、
いきなりclassのソースが出てきてstructとの比較……とかやられても
さっぱり理解できない気がする。
文法からしっかり説明されてる本ならいいけどね。
- 135 名前:デフォルトの名無しさん :03/08/12 16:06
- C相当の知識はWebで収集してしまえ!
- 136 名前:デフォルトの名無しさん :03/08/12 16:31
- C++も色々あるみたいですけど
どれを使ったらいーんですか?
一番メジャーなやつ教えてください。
- 137 名前:デフォルトの名無しさん :03/08/12 16:34
- >>136
C++処理系?
unix/linux系ならGCC3.x
WindowsならMS純正ってことでVisualC++.NET2003がC++的に無難かね
- 138 名前:デフォルトの名無しさん :03/08/12 16:41
- vector<string> func();
みたいな関数があって、返り血の各要素を変数
v1,v2,v3...
に格納したいんですけど簡単な方法ありますか?
perlみたいに (v1,v2,v3,...) = func(); とできればよいんですけど
- 139 名前:デフォルトの名無しさん :03/08/12 16:45
- >>138
配列のまま使わない理由は?
v1, v2...のほうが面倒だらけじゃんか
- 140 名前:デフォルトの名無しさん :03/08/12 16:47
- directxをがんがんに使ったドハデなゲームを作るには、どのC++がいいですか?
bolandのはダメって友達が言ってたんですが・・・
- 141 名前:デフォルトの名無しさん :03/08/12 16:51
- >>139
ちょっと抽象的過ぎました。すいません。例えば
vector<string> func(string s);
string s = "会社,社員,社員コード";
(company,name,code) = func(s);
のようにしたいんですが。
- 142 名前:デフォルトの名無しさん :03/08/12 16:52
- >>141
ゲイツのC#にしとけ
- 143 名前:デフォルトの名無しさん :03/08/12 16:53
- >142は141じゃなくて>>140ね
まちがえた欝だ。
- 144 名前:デフォルトの名無しさん :03/08/12 17:03
- >>141
まあ簡単で安全な記法はないが、結果を構造体にすれば多少使いやすくなる:
struct record {
std::string company, name, code;
record(const std::string& com, const std::string& nam, const std::string& cod)
:company(com), name(nam), code(cod) {}
};
record vector_string_to_record(const std::vector<std::string>& v)
{
return result( v[0], v[1], v[2] );
}
- 145 名前:デフォルトの名無しさん :03/08/12 17:03
- >>139
vector ≠ 配列
>>138
vector <string> rtn = func();
company = rtn[0];
name = rtn[1];
code = rtn[2];
じゃだめなん?
- 146 名前:デフォルトの名無しさん :03/08/12 17:04
- >>144
あ、 return result は return record の間違い
- 147 名前:デフォルトの名無しさん :03/08/12 17:09
- footempl<tuppleType>(company, name,code) = someTupple;
を実現するテンプレートは作れると思う。
- 148 名前:デフォルトの名無しさん :03/08/12 17:11
- >>140
microsoft の製品にはmicrosoftの製品で・・・。
つまり vc2003つーことだ。
- 149 名前:デフォルトの名無しさん :03/08/12 17:17
- >>141
boost::tuple<string,string,string> f(string);
string s,s1,s2,s3;
boost::tie(s1,s2,s3)=f(s);
- 150 名前:デフォルトの名無しさん :03/08/12 17:20
- >>149
boost便利棚
- 151 名前:138=141 :03/08/12 17:22
- >>144
こんな方法もあるんですね。勉強になります。
>>145
たしかに地道に代入するのが手っ取り早いかも。
>>147
どうやるんだろう。全然思いつかないです。
>>149
と思ったらboostにはこんな便利なものがあるんですか。これを機会に導入してみよう。
- 152 名前:デフォルトの名無しさん :03/08/12 18:19
- Visual C++やgccなど色々なソフトの名前を聞きますが、
エディタ等が違うだけですか?作れるプログラムの種類が違って来たりするのでしょうか?
- 153 名前:デフォルトの名無しさん :03/08/12 18:43
- >>152
私はVC++でコンパイルするソースもgccでコンパイルするソースも
同じエディタを使ってますが。
- 154 名前:デフォルトの名無しさん :03/08/12 18:55
- >>152
つくれるぷろcの種類が違います
- 155 名前:デフォルトの名無しさん :03/08/12 20:13
- ボーランドしぃプラプラのインスコと環境変数の設定は終わった。
簡単なソースも書いた。拡張子も.cppにした。
cd使って.cppが置いてあるフォルダまで行く事も出来た。
で、コンパイルするには後なにをすれば良いんだ?
HSPはボタン一発で全部やってくれたんだが
CとかC++ってなんか小難しいのな。
- 156 名前:デフォルトの名無しさん :03/08/12 20:18
- >>155
makefile で ググれ。
俺はVCしか使ったこと無いんで、これ以上説明できん。
- 157 名前:デフォルトの名無しさん :03/08/12 20:26
- bbc failname
- 158 名前:デフォルトの名無しさん :03/08/12 20:30
- >>157
名前をしくじるのか?
- 159 名前:デフォルトの名無しさん :03/08/12 20:30
- >>157
> bbc failname
なんか失敗しそうだなw
- 160 名前:デフォルトの名無しさん :03/08/12 20:31
- >>155
http://www.hi-ho.ne.jp/jun_miura/bccdev.htm
あたり使え
- 161 名前:デフォルトの名無しさん :03/08/13 09:55
- >>157
徹夜明けだけど激しくwラタ
- 162 名前:デフォルトの名無しさん :03/08/13 11:09
- bcc32 filename でやったぞ
- 163 名前:デフォルトの名無しさん :03/08/13 11:10
- いまさらながらだが、bbcじゃなくてbccだよな。
- 164 名前:デフォルトの名無しさん :03/08/13 11:12
- いまさらながらだが、bbcじゃなくてbccだよな。
- 165 名前:デフォルトの名無しさん :03/08/13 11:16
- いまさらながらだが、bbcじゃなくてbccだよな。
- 166 名前:デフォルトの名無しさん :03/08/13 11:19
- bcc32 filenameでやったらコンパイルできたぞ!
最初bbcとbcc試してダメだったんだが32を付けないといかんのだな。
objファイルとかtdsファイルとかわけわからん物まで出てきたがな!
お前等thx
exeファイルクリックしても一瞬で画面が消えてしまうのは、
ソースにHSPで言うwaitとかstopを入れてないからだろうか。
- 167 名前:デフォルトの名無しさん :03/08/13 11:24
- クリックして実行すんじゃなくて、コマンドプロンプトからfilename[Enter]で
- 168 名前:デフォルトの名無しさん :03/08/13 11:36
- Auto〜って予約語ですか?
- 169 名前:デフォルトの名無しさん :03/08/13 11:38
- >>168
no
- 170 名前:デフォルトの名無しさん :03/08/13 11:38
- auto のみ予約語
- 171 名前:168 :03/08/13 11:42
- >>169-170
ありがとうございます
- 172 名前:デフォルトの名無しさん :03/08/13 11:47
- >>167
thx
*
**
***
****
*****
と表示する事に成功したよ。
- 173 名前:デフォルトの名無しさん :03/08/13 11:59
- tdsとかobjファイルって消したらまずい?
激しく邪魔なんだけど。
- 174 名前:デフォルトの名無しさん :03/08/13 12:18
- >173
いいよ。
- 175 名前:デフォルトの名無しさん :03/08/13 12:21
- >>173
全部開発が終了したら消す。
- 176 名前:デフォルトの名無しさん :03/08/13 12:51
- >>173
かまわんが。ソースコードの管理だけはちゃんとしとけよ。
- 177 名前:デフォルトの名無しさん :03/08/13 13:10
- このページの後半に書かれていることは間違いですよね?
http://www.kurumi.sakura.ne.jp/~kumicyou/cplusplus/1305.html
- 178 名前:デフォルトの名無しさん :03/08/13 13:17
- 中盤にかかれている、
>実は、explicitを使用しない場合、コンストラクタは何回でも呼べる。
> A a = 1; //a = A( 1 );
> a = 2; //a = A( 2 );
このあたりから、間違いなわけだが。
- 179 名前:デフォルトの名無しさん :03/08/13 13:20
- >>177
うへえ、コンストラクタでメモリ確保すると異常終了するだって?
むちゃくちゃですな。
'Resource Acquisition is Initialization'の前提が崩れる(笑)
それより代入演算子定義してないからメモリリーク起こしてそうだけどな。
- 180 名前:デフォルトの名無しさん :03/08/13 13:22
- まさに、「代入演算子定義してない」から、二重解放がおこっているのでせう。
- 181 名前:デフォルトの名無しさん :03/08/13 13:22
- > A a = 1; //a = A( 1 );
これは×
> a = 2; //a = A( 2 );
これは○
>(異なるインスタンスを作れば)コンストラクタは何回でも呼べる。
○
- 182 名前:デフォルトの名無しさん :03/08/13 13:32
- >>177
A a = 1; // A::A(1)で初期化, a.p確保
a = 2; //a = A( 2 ); これは分解すると:
// 1. 一時オブジェクト tempがA::A(2)で初期化, temp.p確保
// 2. a.operator=(temp)を実行, デフォルトなのでまるまるコピーされ
// a.pが刺していたメモリはリーク、a.pはtemp.pが指す内容になる
// 3. 一時オブジェクトtempが解体, temp.pはfree
// a.pが指している領域は開放済みになってしまう
a = 3;
a = 4;
a = 5;
この時点で、a.pには A(5)の一時オブジェクトのために確保されて
既に開放されたアドレスが入っている。
結果、returnの時点で、aの初期化のときに確保されたpのメモリがリークし、
A(5)の一時オブジェクトで確保されたpが二重解放されてるわけだな。
- 183 名前:デフォルトの名無しさん :03/08/13 14:51
- >>35,79
VCなら
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmex/html/vcconmanagedtypesmfc.asp
みたいな手は使えない?
試してみたけど、MFCアプリの中でMC++できた。
- 184 名前:デフォルトの名無しさん :03/08/13 17:09
- visual c++ とフツーのC++はどう違うんですか?
どっち先に覚えればいいですか?
- 185 名前:デフォルトの名無しさん :03/08/13 17:14
- >>184
フツーのC++って何よ
- 186 名前:デフォルトの名無しさん :03/08/13 17:17
- >>184
少なくとも小文字と大文字の違い以上のものはあると思うぞ。
- 187 名前:デフォルトの名無しさん :03/08/13 17:45
- >>184
どちらか片方でも全て覚えることは無理。
覚えるのではなく、使えるようになればよい。
- 188 名前:デフォルトの名無しさん :03/08/13 17:46
- 文法とかは同じだよね?VC++も。
俺borlandのつかってるけどVCとどう違うのか良くワカラソ
しかもC++はじめたばかりの初心者ときたもんだ
- 189 名前:デフォルトの名無しさん :03/08/13 17:56
- いろいろと処理系特有の言語拡張がある
- 190 名前:デフォルトの名無しさん :03/08/13 18:04
- Visual C++, Borland C++ Builder = 製品名
C++ = 言語名
「VC++, BCB は、C++で開発するための環境を提供するアプリ」ってことやん。
まぁ、環境固有の言語拡張とかもあるけどさ…
- 191 名前:デフォルトの名無しさん :03/08/13 18:47
- 処理系と言語
- 192 名前:デフォルトの名無しさん :03/08/13 19:58
- 誰か俺に宿題を出しておくれ。
ちなみに30分前にC言語ライフをスタートしたペーペー。
知識としてはHSPでシューティングからRPGまで一通り作った程度。
Cの知識はウンコみたいなもんです。
- 193 名前:デフォルトの名無しさん :03/08/13 20:11
- 宿題スレの過去問でもやっとけ。
- 194 名前:デフォルトの名無しさん :03/08/13 20:15
- 何を入れても ぬるぽ と出力される iostream を実装せよ。
- 195 名前:デフォルトの名無しさん :03/08/13 20:58
- >>194
ぬるぽ と入れたら ガッ と出して欲しいね。
- 196 名前:デフォルトの名無しさん :03/08/13 20:58
- 例えばtest()とmain()があって、test()の後にmain()がある。
両方関数だけどtest()の中にcoutとか書かれててもそこでは実行されなくて、
main()以下でtest()が呼び出された場合に初めてtest()の中に書かれてるcoutが実行される。
プログラムはmain()以下で始まってそれ以前にある物はただの宣言(設定)みたいな物。
こういう認識で合ってますか?
- 197 名前:デフォルトの名無しさん :03/08/13 21:09
- >>194
iostreamを実装せよの部分が良くわからんけど、
何か値を入力出来る様にチャット窓みたいなの作って、
そこに何を入れられても「ぬるぽ」って出力すれば良いって事?
つまり入力する所でエンター押された時に入力された値を無視して、
関数nurupo()に飛ばしてcout << "ぬるぽ" << endl;を実行させる様にすれば良いだけか。
まぁそのチャット窓の作り方から調べないといけないわけだけれども。
- 198 名前:デフォルトの名無しさん :03/08/13 22:03
- >>197
basic_iostreamを派生したクラスを実装しろってことでは
- 199 名前:デフォルトの名無しさん :03/08/13 22:21
- >>198
やっぱり俺の理解を超えた難しい意味だったのか。
まぁとりあえず197に書いた「何入力してもぬるぽと表示するプログラム」は出来たよ。
勝手に理解して勘違いしたが勝手に宿題もしたからこれでおk!
- 200 名前:デフォルトの名無しさん :03/08/13 23:27
- >>197 >>199
ガッ
- 201 名前:デフォルトの名無しさん :03/08/13 23:30
- 「何入力してもぬるぽ」ってのは「何出力してもぬるぽ」の間違いちゃうんかと。
- 202 名前:デフォルトの名無しさん :03/08/14 01:23
- 情けない質問なのですがおながいします。
int と float の計算で
100 * 2.33000 が 232 になってしまいます。
コンパイラもwarning(floatからintへの変換でデータが失われている
かもしれない)といっているのですが、
こんなときどうコーディングすればいいのでしょうか?
- 203 名前:デフォルトの名無しさん :03/08/14 01:27
- 有理数(boost::rationalとか)
- 204 名前:デフォルトの名無しさん :03/08/14 01:42
- >>202
intの100をfloatに型キャストすればいいんじゃないの?
(float)100*2.33000
俺は試してないからね。自分で試してみてね。
- 205 名前:デフォルトの名無しさん :03/08/14 01:48
- 実は232.9999...というオチ
- 206 名前:202 :03/08/14 01:50
- >>203
サンクスコです。
でもboost入ってないんです。TT
>>204
それもやってみたのですがダメです。
10000をかけると23299になりますた。
ウォッチだと2.33000ってなってるのに
なんなんでしょう。TT
どうもです。。。
- 207 名前:202 :03/08/14 01:51
- >>205
>実は232.9999...というオチ
実際そのようです。TT
どうすればいいでしょうか?
- 208 名前:デフォルトの名無しさん :03/08/14 01:51
- 四捨五入じゃダメ?
- 209 名前:202 :03/08/14 01:57
- 作業的には、intは用紙幅でfloatはプレビュー倍率です。
>>208
四捨五入、あるいは切り上げはできたらしたいのですが
nWidth * fZoom のどこでしたらいいのでしょう。
初心者質問でしみません。。。
- 210 名前:デフォルトの名無しさん :03/08/14 01:58
- floatがはじめからdoubleならうまくいくんだけどねぇ。
floatをdoubleにキャストしても駄目みたい。
内部表現の問題だろうな。
- 211 名前:202 :03/08/14 02:01
- >>210
ですよね。doubleにキャストしてもダメでした。
デバッグウィンドウにも2.33000って出てるのに
タチ悪いです。VC++6.0なんですがこんななんですね。。。
- 212 名前:デフォルトの名無しさん :03/08/14 02:01
- >>209
#include <cmath>
四捨五入:
static_cast< int >( std::floor( nWidth * fZoom + 0.5f ) );
切り上げ:
static_cast< int >( std::ceil( nWidth * fZoom ) );
四捨五入のfloorはいらんかも。
- 213 名前:212 :03/08/14 02:03
- VC6か。std外さないと通らないかも。
- 214 名前:デフォルトの名無しさん :03/08/14 02:03
- >>211
俺が確認したのはBCCだったよ。結果は同じだった。
- 215 名前:202 :03/08/14 02:11
- みなさんレスありがとう。
212さんの切り上げでみごと解決しますた。(端数の
原因はわからないので保留しますた。stdははずしたら
通りますた。)
遅くにほんとにどうもありがとう!!...(TT)...
- 216 名前:デフォルトの名無しさん :03/08/14 02:14
- floatの2.33自体が実は内部表現では2.299...となっているから、
根本的に無理かもしれない。もとデータがすでに2.33ではないのだから。
この場合は四捨五入で逃げられるかもしれないが、
今度は.5境界近辺で同じ問題に遭遇するので根本的解決にはならないかも。
- 217 名前:デフォルトの名無しさん :03/08/14 02:16
- 浮動小数点数の計算は数学のようにはゆかない。
- 218 名前:202 :03/08/14 02:18
- >>216
だからBCCでもVCでも同じ現象なんでしょうか。
>今度は.5境界近辺で同じ問題に遭遇するので根本的解決にはならないかも。
印刷のズレ程度なのでとりあえず保留しておくことにします。
端数ってムズいですね。。。
- 219 名前:デフォルトの名無しさん :03/08/14 02:23
- こういうのって(最終的にintが必要なら)100倍とか10000倍とかで倍率を整数値で保持しておいて
最終結果を1/100なり(必要なら50足してから)するのが、一番まともな気がするけど。
利息や消費税計算とかはそうじゃないのかな?知らないけど。
- 220 名前:202 :03/08/14 02:26
- >>217
>浮動小数点数の計算は数学のようにはゆかない。
つねにそれを頭に入れておかないといけないんですね。
お金がらみじゃなくてよかたー。
>>219
>こういうのって(最終的にintが必要なら)100倍とか10000倍とかで倍率を整数値で保持しておいて
なるほど...
ちらっと思ったのですが印刷部分でスピードが必要と思い、そのまま
ピクセルで持っちゃったのが悪かったかも。。。
(別のtwipとかの座標系を使うとか...)
- 221 名前:デフォルトの名無しさん :03/08/14 02:32
- お金がらみは怖いよね。
昔、COBOL使ってたけど固定小数点だったな。
科学技術計算をさせるときは難儀だったけど。
- 222 名前:デフォルトの名無しさん :03/08/14 02:44
- Currencyとかの通貨型をサポートする環境も増えてきてるよね。
COBOLは給与計算とか販売管理、生産管理とかで
実績は十分証明されているもんね。
昔VBでお金からみのシステムの置き換えをやったけど
稼動後以前のシステムと1円合わないとか言われた。
例えばa * b * cでa*bですぐ端数処理するか、全部終わって
やるかの誤差らしかった。んなもん知るかとw
- 223 名前:デフォルトの名無しさん :03/08/14 03:51
- そんなこと言わずに、丁寧につくってあげてなー。
- 224 名前:デフォルトの名無しさん :03/08/14 10:20
- というか、どう端数処理するかが仕様に含まれていないのは如何なものかと。
- 225 名前:デフォルトの名無しさん :03/08/14 10:47
- >>224
仕様出す方は、切り捨てと四捨五入とJIS丸めの違いを知らないから。
>>202
速度を重視するなら尚更floatなんて使うな。
恐らくはdoubleで充分だし、必要なら整数で実装するべき。
- 226 名前:デフォルトの名無しさん :03/08/14 11:27
- っていうか、boost 入ってないなら今からインストールして rational 使えば?
>>225
印刷関係ってことは多分実行環境は PC だし、
多分 double の方が早いだろ。
- 227 名前:デフォルトの名無しさん :03/08/14 11:58
- JIS丸めとIEEE754って何が違うの?
- 228 名前:デフォルトの名無しさん :03/08/14 12:11
- JIS丸めって、JIS Z 8401だよね。
ってことはISO 31/0かな。
IEEEの番号はしらね。
- 229 名前:デフォルトの名無しさん :03/08/14 12:48
- >>225-226
floatは32ビット、doubleは64ビットで
なんでdoubleのほうが早いの?
- 230 名前:デフォルトの名無しさん :03/08/14 12:58
- >>229
80x86 では内部では 80 ビットで計算してるから
どっちでもデータ変換が生じることに変わりはないので、
基本的にはどっちでも速度は一緒。
でも、標準関数では double 型が使われているので、
その関数との受け渡しにおいては
float だとデータ変換が生じて遅くなってしまう。
- 231 名前:デフォルトの名無しさん :03/08/14 12:58
- >>229
ハードウェアが最初から double を想定して作られてるから。
- 232 名前:229 :03/08/14 13:10
- >>230-231
なるへそ。単純にCPUのビットだけの問題じゃないんですね。
- 233 名前:デフォルトの名無しさん :03/08/14 13:24
- >232
同じような理由で、charの方がshortやlongより早く処理できると思ったら大間違い。
- 234 名前:デフォルトの名無しさん :03/08/14 13:30
- 202です。昨晩はどうもでした。
>>226
boost入れたいのですがHDDがあと200Mぐらいしか...
>>225-231
doubleのほうが早いんですね。知らなかた...
ところで昨日212さんに教えてもらった標準ライブラリ関数
std::ceilですが、なぜVCだとstdがついてるとコンパイル
できないのでしょうか?
VCは初心者なのですがVCにはそんなクセみたいなのが
いっぱいあるのでつか?
- 235 名前:デフォルトの名無しさん :03/08/14 13:36
- if(1926 <= a && a <= 1989)
if (1990>a&&a>1925)
この二つは同じ意味だと思いますが、処理の早さに差が出たりしますか?
a+=1よりa++と書いた方が速いというのは聞いた事あるのですが、
そういう細かいところで速度をアップするテクニックって他にどんなものがありますか?
- 236 名前:デフォルトの名無しさん :03/08/14 13:38
- 盲目的にdoubleの方が速いと思わない方が良いよ。
CPUやコンパイラに左右されるということを忘れずに。
ちなみに単精度用の関数( sinf とか sqrtf とか )が
用意されているコンパイラもある。
- 237 名前:デフォルトの名無しさん :03/08/14 13:55
- >>235
速度に差は出ない。
>a+=1よりa++と書いた方が速いというのは聞いた事あるのですが、
どこの馬鹿にそんなこと吹き込まれたか知らないけど、それは大嘘。
まぁ、演算子のオーバーロードの実装の仕方によれば変わるかもしれないけど。
- 238 名前:デフォルトの名無しさん :03/08/14 14:02
- 最近のx86ならlong doubleが80bitフルでない?
- 239 名前:デフォルトの名無しさん :03/08/14 14:03
- >235
その例なら、
if( (unsigned)( a - 1926 ) <= 1989 - 1926 )
の方がたぶんはやい。
- 240 名前:デフォルトの名無しさん :03/08/14 14:15
- >>235
やー、悪いことは言わない。今は可読性を重視した方がいいと思うよ。
マシン性能があがり、お馬鹿なコンパイラも減ってる昨今だし。
ボトルネック解消なら、別で稼ぐべきかと。
>>237
大嘘ってことは無いと思うけど
- 241 名前:デフォルトの名無しさん :03/08/14 14:21
- >a+=1とa++
今時のコンパイラ(つーかC++コンパイラ)なら同じようなコードを出力するはず。
但し、古い貧弱な環境用のCコンパイラが前者は定数値との足し算、
後者をインクリメントで実装しているのも事実。
>1926云々
単純に年だけで元号を判定することは危険。
なぜならば、1989年はたったの数日しか昭和ではなかったから。
- 242 名前:デフォルトの名無しさん :03/08/14 14:24
- 最近の CPU だと
むしろ INC x より ADD x, 1 の方が速いって聞くけどね。
- 243 名前:デフォルトの名無しさん :03/08/14 14:26
- 昭和元年も、数日しかないけれど。
- 244 名前:デフォルトの名無しさん :03/08/14 14:27
- 一例を挙げると、その他の例を挙げないと気がすまない香具師がいるのはこのスレですか?
- 245 名前:デフォルトの名無しさん :03/08/14 14:30
- まー要するに気にするなってこった。
でもhoge++は++hogeと書こうな。operator++のことも考えて統一した方がいい。
とか書くと「hage[hoge++]とhage{++hoge]は違うだろ」とか言い出すだろうけど
そういう時は
++hoge
hage[hoge]
か
hage[hoge]
++hoge
と書くもんだ。
- 246 名前:デフォルトの名無しさん :03/08/14 14:48
- >>234
VC6 はそうなるね。
古いから標準仕様に追いついてないだけ。
VC .NET なら大丈夫だった気が。
古いのは使うなってこった。
- 247 名前:デフォルトの名無しさん :03/08/14 14:48
- class benki {
const int unko;
public:
benkio(void) : unko(100) {}
};
うんこは定数?それともconstオブジェクト?
- 248 名前:デフォルトの名無しさん :03/08/14 15:11
- >>247
排泄物
- 249 名前:デフォルトの名無しさん :03/08/14 16:49
- 便器はオブジェクトなのにウンコはオブジェクトじゃないのか
- 250 名前:デフォルトの名無しさん :03/08/14 17:01
- >>247
class benki {
static const int unko=0xBAD;
};
定数になりますた
■過去ログ置き場に戻る■
1- 次250
最新50