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

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

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;
};

定数になりますた

251 :202:03/08/14 17:59
>>246
ありがとう。。。

252 :デフォルトの名無しさん:03/08/14 19:42
>>247
class benki {
 static const int unko=0xF00D;
};

定食になりますた


253 :デフォルトの名無しさん:03/08/14 20:06
>>252
Scatologyパターンってやつですね

254 :デフォルトの名無しさん:03/08/14 21:20
>>253
ヤヤウケタ

255 :デフォルトの名無しさん:03/08/14 22:29
C++超初心者なのですがよろしくお願いいたします。m(__)m
関数を実装するのに
func(CPoint* pPoint)
とポインタで実装するか
func(CPoint& Point)
と参照を使って実装するか迷うのですが
どういう風に使い分ければいいのでしょうか。

256 :直リン:03/08/14 22:29
http://homepage.mac.com/maki170001/

257 :デフォルトの名無しさん:03/08/14 22:34
>>255
いろいろ流派があるんだけど、大きく分けると2派。

1. NULL が来る可能性がある場合のみポインタで後は参照。
2. 関数内部で値を書き換えるならポインタ、そうでないなら参照
 (呼び出し側で、値渡しと明らかに区別が付くように)

俺は 1 の方。


258 :255:03/08/14 22:50
>>257
レスありがとうございます!
あっ、ヌルポインタが来る場合があるのですね。
MFCを勉強しているのですが、たいていポインタで渡して
いるのでなんでだろうと思ったのですが、積極的に
参照を使ってもいいんですね。納得です!

259 :デフォルトの名無しさん:03/08/14 22:56
>>258
MFC ってもうかなり古いから、
MFC の設計方針はあんまり当てにならんよ。


260 :デフォルトの名無しさん:03/08/14 23:14
まあ、古いから駄目と言うわけでもないんだが、
折れは特別な理由がない限りはほとんどポインタ。
最悪、仕様変更があったときでも対応しやすいし。
(賛否があるのはわかった上でね。)

261 :デフォルトの名無しさん:03/08/15 06:48
おれは>>257のでいくと2かな。
だからint unko(const hoge& hage)とかしかつかったことないなぁ。


262 :デフォルトの名無しさん:03/08/15 07:05
俺はオブジェクト指向上の要素としてのクラスは全部ポインタ経由だな。
つか、どうせ生成〜保持〜破棄とポインタで扱うことがほとんどだから、
いちいち関数の引数に渡すときにデリファレンスするのも馬鹿らしいって
理由なんだが。

263 :デフォルトの名無しさん:03/08/15 07:34
値で多態ができる仕組みが欲しい。
RTIを駆使すれば実装できるんじゃないかねえ

264 :247:03/08/15 08:54
>>250-252
コンパイル時に置き換えてくれるの?

265 :デフォルトの名無しさん:03/08/15 09:21
実際にどうなるかなど気にしない方がいい

266 :デフォルトの名無しさん:03/08/15 10:15
ある1つのクラス内でしか使わない定数ってどんな風に定義してる?
1. static const int unko = 100;
2. const int unko;(初期化リストで初期化)
3. enum { unko = 100, };
4. クラス外でconst int unko = 100;
5. #define unko 100
6. 憧れのあの子はウンコなんてしない

267 :デフォルトの名無しさん:03/08/15 10:17
>>266
お前、「6. 憧れのあの子はウンコなんてしない 」と書きたかっただけだろ?

268 :266:03/08/15 10:20
>>267
いや、いたって真面目な質問です。
6. は定数なんて使わないって意味。

269 :デフォルトの名無しさん:03/08/15 10:47
1. static const int unko = 100;
3. enum { unko = 100, };

これ以外は機血画位

270 :デフォルトの名無しさん:03/08/15 10:49
特に4と5はな。


271 :デフォルトの名無しさん:03/08/15 11:05
2はクラス内定数じゃない気が

272 :266:03/08/15 11:21
ごめん、今まで4の基地外だった。
他人様のソース見る限りでは1は少数派かな?
って事で3で逝きます。

273 :デフォルトの名無しさん:03/08/15 11:43
>>266
4.はcppファイルの方に書くんでしょ?
それならよく使う。
ヘッダファイルを汚さない手を他に思いつかないんだよね。

274 :デフォルトの名無しさん:03/08/15 12:02
>>273
cpp内で継承クラス作って、そこに書けばいいのでは?

275 :デフォルトの名無しさん:03/08/15 12:03
>>272
272 みんな好き好んで 3 を使ってるわけじゃない。
ほんとは 1 にしたいけど、古いコンパイラ(VC6 のとか)は
1 を定数として認識してくれないから。
(固定長の配列の宣言とかに使えない)

>>273
cpp ファイル内で使いたいんなら static つけてファイル内スコープに。


276 :デフォルトの名無しさん:03/08/15 12:05
リンケージ

277 :デフォルトの名無しさん:03/08/15 12:07
>>275
4.2 -1-
"The use of the static keyword is deprecated when declaring objects in namespace scope."

278 :デフォルトの名無しさん:03/08/15 12:14
今から借りてきたあの本を根性で前ページスキャンします。

279 :デフォルトの名無しさん:03/08/15 12:20
>277
それがどう関係するのか教えてください。
namespaceスコープではなくclassスコープの話をしているのだと認識していました。


280 :デフォルトの名無しさん:03/08/15 12:26
>>272
テンプレートとも相性抜群だからおいらも 3 をお薦めしとくよ。

281 :266:03/08/15 13:04
共有するソースなら3を、そうでなければ1を。
状況に応じて4を使い分ければいいかな?

所で文字列定数ってどうしてる?
クラス外で const char* unko = "もりもり";
これは逝って良し?

282 :デフォルトの名無しさん:03/08/15 13:39
どんなプログラムかによってどんな手段がいいかは変わってくる。

フォーマルにやる必要がある場合は、面倒くさいけど
文字列定数に関してはそれだけをひとつのファイルに
まとめたりするのがベスト。

おちゃらかでいい場合はリテラル文字列をその場で直埋め。

283 :デフォルトの名無しさん:03/08/15 15:09
const char * const unko = "もりもり";

じゃねぇーの?

284 :山崎 渉:03/08/15 15:15
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

285 :デフォルトの名無しさん:03/08/15 17:16
age

286 :デフォルトの名無しさん:03/08/15 19:45
あげ

287 :デフォルトの名無しさん:03/08/16 10:07
>>281
static const char unko[];
をクラス内に作って、
.cpp 内で const char Unko::unko[] = "もりもり";
と初期化。

288 :デフォルトの名無しさん:03/08/16 11:16
>おちゃらかでいい場合はリテラル文字列をその場で直埋め。

ファイルかリソースだな

289 :デフォルトの名無しさん:03/08/16 11:19
>>288
多言語化しやすいしな。

290 :デフォルトの名無しさん:03/08/16 11:44
>>288
お前はたった数十行規模のプログラムでもそんなことするのか?
まぁ、止めはせんが。

291 :デフォルトの名無しさん:03/08/16 11:45
>289
YAGNI

292 :まりりんまんそん:03/08/16 16:19
先輩の皆様、膣問させてください。m(__)m
{
 int *i;
 float *f;
 double *d;

 i = new int;
 f = new float;
 d = new double;

 //何らかの処理

 delete d,f,i; // ←ココ
}

最後の行のdelete文はi,f,dの指す3つの領域をすべて正しく解放しますか?
それとも、

delete d;delete f;delete i;

のようにちゃんとばらばらに記述しないといけませんか?
bcc32でコンパイルしてみてるんですが、いずれもエラーはでません。
ちゅか、メモリが解放されたかどうかのチェックのしかたがわからないよ、ママン。('・c_・` )

293 :デフォルトの名無しさん:03/08/16 16:24
>>292
deleteされるのはiだけ。
,演算子(コンマ演算子)を調べるべし。

294 :デフォルトの名無しさん:03/08/16 16:26
> delete d,f,i; // ←ココ
ダメ。 これだと d の指す領域しか開放されない。
(delete d), f, i;
http://www.microsoft.com/japan/developer/library/vclang/_pluslang_c.2b2b_.operators.htm

295 :デフォルトの名無しさん:03/08/16 16:32
>>292
> ちゅか、メモリが解放されたかどうかのチェックのしかたがわからないよ、ママン。('・c_・` )
Borland の C++Builder を買えば
http://www.borland.co.jp/cppbuilder/papers/codeguard/index.html
とかでチェックできるけど。free版だとなさそうな気がする。

296 :まりりんまんそん:03/08/16 16:39
>>293-294
サンクスです。マンコ^h^h^hコンマ演算子、調べてみます。

>>295
今のところ適当なループを書いてクラッシュするまでまわしたりしてますが・・・。
そうですか、ありませんか・・・。;_;

回答ありがとうございました。m(__)m

297 :デフォルトの名無しさん:03/08/16 16:43
デストラクタが呼ばれた時に何らかの情報を出力するクラスを作って試せばいいじゃない。

298 :293:03/08/16 17:18
ごめんなさい。虚偽を書きました。
294氏が正しい。

299 :デフォルトの名無しさん:03/08/16 17:35
似たような落とし穴にこんなのがある。
ttp://www.tietew.jp/cppll/archive/8838 (後半部分)

300 :デフォルトの名無しさん:03/08/16 22:05

コーポレイトソフトウェアていうサポセンの馬鹿が
PGに喧嘩売ってます。

http://money.2ch.net/test/read.cgi/haken/1057486349/287

腹立ちました。
みんなでやっつけにいこう。

301 :デフォルトの名無しさん:03/08/16 22:22
んなことで所構わず貼って回るなよな。

302 :デフォルトの名無しさん:03/08/16 22:25
C++勉強中の者ですが、マクロがいまいち理解できません。
宣言した名前に数字や命令などを入れるんですよね?
それで後から書き換える時に楽にできる、と。

そこで疑問なのですが、例えば数字を入れる場合で、
普通に変数でやる場合と何か違いはあるんですか?
命令を入れる場合でも、普通に関数でやれば良いような・・・

あと、C++とC#を比較するとどの辺が違いますかね?

303 :まりりんまんそん:03/08/16 22:30
>>302
マクロは「単なる文字列である」ことが重要。

例えば
#define M男 鞭で叩かれ蝋燭で熱せられることに喜びを見出す者。雄
と定義すると、
コンパイル時にソースコード中の「M男」という文字列が
「鞭で叩かれ蝋燭で熱せられることに喜びを見出す者。雄」に置き換わる。
単にテキストが置換されるだけなので、
どんな文字の定義も許される。
逆にいうと、置換された結果が正しいプログラム文であるかどうかは、
プログラマが保証しなければならない。

・・・たしか、こんな感じ。

304 :デフォルトの名無しさん:03/08/16 22:37
>>302
マクロはC言語からのレガシー(遺産)で、昔は const や inline なんかがなかったのよ。
だからいまなら const や inline なんかでやるようなことを全部マクロでやってたわけ。
だから const や inline なんかでできることでマクロを使うの避けましょう。

まぁ、よくわかんなかったら今はとりあえずマクロは他に打つ手が無い時の最後の手段だってことだけ覚えとけ。

305 :デフォルトの名無しさん:03/08/16 22:39
どんな例だYO!!w

306 :デフォルトの名無しさん:03/08/16 23:17
// マクロの簡単な罠ドゾー

#define TAX 1.0+0.05
void main(){
printf("1000*TAX=%.0f", 1000*TAX);
}

307 :デフォルトの名無しさん:03/08/16 23:34
const, inline, template, ... などを駆使すれば、
マクロが必要になることってのはあんまりない。
まぁ、完全になくなるってことはないけど。

308 :デフォルトの名無しさん:03/08/16 23:39
class fusianasan {
void putchar();
};


309 :デフォルトの名無しさん:03/08/16 23:39
マクロはALGOL60で言うところのcall by nameによる呼び出しを実現していると
考えることができる。

普通のC++の関数の呼び出しは call by value である。
ただし、仮引数が参照の場合は call by reference(参照渡し) である。


310 :春は来ない:03/08/17 00:31
それは、それは、空を越えて〜 やがて、やがて、迎えに来る〜♪

311 :デフォルトの名無しさん:03/08/17 04:29
クラスのstaticな関数はインライン展開されるのでしょうか?
コンパイラ依存であれば、VisualC++ 2003 について
教えて欲しいです。

312 :デフォルトの名無しさん:03/08/17 04:54
インライン展開を期待する書き方(クラス定義内に書くかinline指定する)をしており、
コンパイラがインライン展開可能な関数であればインラインになる。

コンパイラにも依存するが
関数自体にも依存するので一概には言えない。

313 :デフォルトの名無しさん:03/08/17 06:32
>>311
インライン展開される【保証があるか】
インライン展開される【場合があるか】
どっちが知りたいんだ?

前者なら
http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=ISO%2FIEC+14882%3A1998&dantaiCd=ISO&status=1&pageNo=0

後者ならアセンブラ嫁

314 :デフォルトの名無しさん:03/08/17 06:36
インライン展開に関係ありそうなことと、なさそうなことを考えてみれ。
・再帰
・関数ポインタ
・リンケージの種類

315 :311:03/08/17 07:19
>>312-314
どうもありがとうございました。

316 :デフォルトの名無しさん:03/08/17 16:36
それほど多くを知らないせいか、そこら辺のフリーソース見ても、
例外処理をしているものは、ほとんど皆無です。

趣味グラムくらいでは、例外処理って、あまり有用じゃないのでしょうか?

317 :デフォルトの名無しさん:03/08/17 16:51
>>316
んなこたない。
けどC++の例外クラスは腐ってるから簡単お手軽に使う気はあまりしないよ。
せめてエラーの原因をstringで持たせりゃいいのに。

318 :デフォルトの名無しさん:03/08/17 16:59
>>317
はぁ?
stringで持たせるクラスを派生させればいいだけじゃ?

319 :316:03/08/17 17:03
プロとアマの違いは、エラー処理の厳密さだ!と指摘され、ショックのあまり気がふれ
例外処理でコードを埋めようとしたところ、あまりの例のなさに、がっかりしてたとこでした。

>>317
レスありがとうございます。やっぱり使いづらいのですね。
stringなら簡潔でよかですねぇ。処理の流れを分けて、
可読性を高めるはずなのに、かえってシンプルじゃ無くなったりで…。

どっかで綺麗に実装してるコード例とかないかなぁ…。

320 :デフォルトの名無しさん:03/08/17 17:04
それよりstringを投(ry

321 :316:03/08/17 17:05
ぉぅ、書いてる間に…

>>318
なるほどなるほど、やはり皆さんそれぞれ独自に
自分用例外クラスを設けてるんでしょうか。

322 :デフォルトの名無しさん:03/08/17 17:07
例外ってC言語のsetjmp,longjmpに相当するぐらいの負荷があるのでしょうか?

323 :デフォルトの名無しさん:03/08/17 17:11
C++の例外クラスってこれだもんな・・・
始めてみたときハァ?って思ったよ。
class exception {

public:
exception () throw();
exception (const exception&) throw();
exception& operator= (const exception&) throw();
virtual ~exception () throw();
virtual const char* what () const throw();
};

まともな例外クラスとはこういうものを言うんだよ。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemexceptionmemberstopic.asp

324 :316:03/08/17 17:33
>>323
うーーむ、すいません。熱心に読んでは見たのですが
使い方が良く分からなくて….NETが無いと駄目なのかな…。

なんとなく、すごそうだってのは良く分かりました。

325 :デフォルトの名無しさん:03/08/17 17:36
>>323
ハァ? それと同じようなモン派生させてそれ使えばいいだろ。何度も言わせんな馬鹿。

326 :316:03/08/17 17:50
>>325
レス番違うけど、俺へのレスかな…すんません、もう何がなにやら。

327 :316:03/08/17 17:52
あまり長引いても迷惑ですし、まだしばらくは分相応に
返り値でエラーチェックに戻ります…レスありがとうございました

328 :デフォルトの名無しさん:03/08/17 17:57
レス番違うく無いけどね



329 :デフォルトの名無しさん:03/08/17 18:12
厨房用例外クラス

class Error
{
 std::string message;
public:
 Error(std::string msg): message(msg){}
 std::string const &Message(){ return message; }
 static void Check(bool exp, std::string message){
  if(!exp) throw Error(message);
 }
};

int main(int argc, char* argv[])
{
 int n = 0;
 try{
  Error::Check(n==3, "n==0でなければならない");
 }catch(Error &e){
  std::cout << "ERROR:" << e.Message() << std::endl;
 }
 return 0;
}

330 :デフォルトの名無しさん:03/08/17 18:16
assertで十分

331 :デフォルトの名無しさん:03/08/17 18:32
>>322について誰か知りませんか?

332 :デフォルトの名無しさん:03/08/17 18:33
>>331
自分でasmファイル吐くコンパイルオプション付けて調べてみたらどうですか?

333 :デフォルトの名無しさん:03/08/17 18:35
>>332
知らないならだまっててね

334 :デフォルトの名無しさん:03/08/17 18:38
チンカス

335 :デフォルトの名無しさん:03/08/17 18:39
プ

336 :デフォルトの名無しさん:03/08/17 18:39
↓以下厨の煽りあい

337 :デフォルトの名無しさん:03/08/17 18:40
asmも分からないのに速度なんて気にしてる時点で厨丸出し

338 :デフォルトの名無しさん:03/08/17 18:42
てかさぁ、質問されたこと以外のことを書き込んでる時点で荒らしじゃね?

339 :デフォルトの名無しさん:03/08/17 18:44
夏全開

340 :デフォルトの名無しさん:03/08/17 18:47
                   _,,,,,.........,,,,__
                 /:;:;:;:;:;:;:;:;:;:;:;:;:;,丶
..    さっさと教えれ…  /:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;.,ヽ
                 i' ' ' ' ' ' ' ' 'i;:;:;:;:;:;:;:;:;.,|
    ,.-‐¬ ̄-、¨¬‐、  |\,. 、/  L:;:;:;:;:;:;.;.l
   ////""`'""''ヽソ-‐l=・= =・=  ヽ:;/¨iノヽ、
  //////」  -=== }  |         ,ノ./lllll/、
  i//ノソ,._______,.""'  '".i,  l `_       ./lllll/  ヽ
  ヽ彡i.6 ̄ ̄i.,__ノ⌒i.,_ノ ..::ゝ.,_____,,,...- /llllllll/    ヽ
  /ヽ ゝ'    ,rti.l.l.l.、)ゝノlllllllllゝ.,__,ノlllllllllllllソ     .}
⌒`ヽ、ヽ li       ./ヽllllllllllllllllllllllllllllllllllllllliゝ /    /
、   V ヽ ゝ  _,......__ ノノ  ヽllllllllllllllllllllllllllllllllli/    ./
丶、,.、,ヽ     ミ三   ` ¬ ‐‐---‐¬ ¨ ̄
        ((   ̄ ̄ ¨¬‐- ..,_
          l 川 |

341 :デフォルトの名無しさん:03/08/17 18:53
あーあ、役に立たねぇ板だな。時間損した。

342 :デフォルトの名無しさん:03/08/17 18:56
>>341
使うのが難しい板ですからね。
質問者のレベルによっては何の役にも立たないんですよ。

343 :デフォルトの名無しさん:03/08/17 18:59
>>341
只なんだよ、只。
乞食根性は仕方ないが
少しは隠せ、恥を知れ。

344 :デフォルトの名無しさん:03/08/17 19:03
おみやげ。

技術系メーリングリストで質問するときのパターン・ランゲージ
http://www.hyuki.com/writing/techask.html
真・技術系メーリングリスト FAQ
http://www.geocities.co.jp/SiliconValley/5656/

メーリングリストを掲示板に置き換えても通用するから読んでね。

345 :↑↑↑↑↑↑↑↑:03/08/17 19:07
ブラクラ

346 :デフォルトの名無しさん:03/08/17 19:37
ところで、>>322について誰か知りませんか?


347 :デフォルトの名無しさん:03/08/17 19:41
>>346
ある
# 人に聞くよりプログラム書いて時間計れ!

348 :デフォルトの名無しさん:03/08/17 19:41
>>347
知らないならだまっててね

349 :デフォルトの名無しさん:03/08/17 19:43
チンカス

350 :デフォルトの名無しさん:03/08/17 19:43
無限ループの予感!

351 :デフォルトの名無しさん:03/08/17 19:47
while (true) {
 ところで、>>322について誰か知りませんか?
 自分で調べてみたら?
 知らないならだまっててね
 チンカス
}

352 :デフォルトの名無しさん:03/08/17 19:52
#ってなに
C#って単語を時々きくけど。

353 :デフォルトの名無しさん:03/08/17 19:53
>>348は騙りかJava厨、C#厨だと思うが
アセンブラで見るか、それがわからなきゃ
簡単なベンチマークぐらい書けよ。つーか、レベル低杉。

# >>352は釣りと見た。

354 :322:03/08/17 20:00
うう、すいません・・・つまらない質問してしまって・・・
私は322以降発言していないのですが・・・
私のせいでなんかスレが荒れてしまって本当に申し訳ない・・・


話は変わるのですが、>>322のレスについて誰かご存知の方はいらっしゃいませんか?

355 :デフォルトの名無しさん:03/08/17 20:07
>>354
謝らなくていいから>>353が言っていることを無視するな

356 :デフォルトの名無しさん:03/08/17 20:07
今日C++を始めたんですが、
BCC5.5で

/////////////////////////
#include <iostream.h>
int main(void)
{
cout << "test002";

return 0;
}
/////////////////////////
をコンパイルすると、

/////////////////////////
致命的エラー F1003 c:\(省略)\include\stdcomp.h 5: erroe 指令: Must use C++ for STDCONP.h
/////////////////////////

と、表示されコンパイルできないんですが、、、

ちなみに堀越一雄著「決定版初めてのC++」を参考にしています。
著者が使用しているg++コンパイラじゃないと使えないんでしょうか?
それともiostream.hが入ってないだけ?

お願いします。

357 :デフォルトの名無しさん:03/08/17 20:08
理論抜きでいきなりベンチとったりアセンブラソース眺める奴は馬鹿。

358 :322:03/08/17 20:08
>>355
知らないならズボンのチャックを閉じていてください。

359 :デフォルトの名無しさん:03/08/17 20:12
>>356
拡張子がcppになっていないとか

360 :デフォルトの名無しさん:03/08/17 20:12
>>356
本古すぎ

361 :デフォルトの名無しさん:03/08/17 20:16
オブジェクトのアンワインドの分だけ例外が遅い。

362 :デフォルトの名無しさん:03/08/17 20:20
>>357
アセンブラのソース眺めれば理論が分かるだろ

363 :デフォルトの名無しさん:03/08/17 20:22
>>359
拡張子は「c」になってます。
>>360
図書館でC++関連の本を探したらコレしかなかったんで・・・。

364 :356:03/08/17 20:22
>>357
コレ、私です。

365 :356:03/08/17 20:23
>>363-364
失礼こっちでした。
焦りすぎ、、、

366 :デフォルトの名無しさん:03/08/17 20:25
>>365
拡張子cppにして本屋にいって本を買ってきなさい

367 :356:03/08/17 20:34
>>366
あっ!
出来ました!
ありがとうございます・・・。

何度もスイマセンが
独習用として買う場合のお勧めを教えて下さいませんか?
値段は安ければ文句無いですがひとまず保留として、
C++初心者分かりやすいのをお願いします。

368 :デフォルトの名無しさん:03/08/17 20:38
なんでできるんだろ
.hつけるとstd::がいらなくなる???

369 :デフォルトの名無しさん:03/08/17 20:43
>>367
ttp://www5c.biglobe.ne.jp/~ecb/cpp/cpp00.html

所々間違いもあるっぽいがとりあえずこのへんでもみとけ。

370 :デフォルトの名無しさん:03/08/17 20:44
>>368
.h 付きのヘッダは namespace std が無かった頃の負の遺産なので。

371 :356:03/08/17 20:47
>>369
参考になりました。
ありがとうございます。

372 :デフォルトの名無しさん:03/08/17 20:47
一般的には .h 付きのヘッダは推奨ではないが、
移植性を考えると現状では .h 付きのヘッダのほうがよかったりする。


373 :デフォルトの名無しさん:03/08/17 21:00
>>372 んなこたぁない。

374 :デフォルトの名無しさん:03/08/17 21:22
C++本気でマスターしようとするなら、本代は最低2万はかかるよねぇ

375 :デフォルトの名無しさん:03/08/17 21:23
>>374
最近はネットですむけどね。


376 :デフォルトの名無しさん:03/08/17 21:33
>>374
英語が読めれば、ネットで読みきれないほどの記事があふれてる。本要らない。

377 :デフォルトの名無しさん:03/08/17 21:36
>>354
だから
「ある」
ってさっき言ったじゃん


378 :デフォルトの名無しさん:03/08/17 21:37
>>370
わしの使っている本にはusing namespaceに関する表記がまったくないのですが、
なんかいいサイトを知りませぬか?;q;

379 :デフォルトの名無しさん:03/08/17 21:47
>>373
.h 付きでないヘッダに対応している処理系を対応し始めたバージョンを併記して
5つ以上リストアップしてくれ。それができないならそんなこと言うな。
できたら負けを認めよう。

380 :デフォルトの名無しさん:03/08/17 21:55
C++勉強中です。
とあるクラスでひとつのメンバ関数をconstにしたら、連鎖的に書き換える必要がでてきて、
最終的に全てのメンバ関数がconstになり、全てのメンバ変数がmutableになりました。
これってたぶん使い方を誤ってますよね。
mutableの効果的な使用法を解説しているサイトはありませんでしょうか?

381 :373:03/08/17 21:57
>>379
めんどくさい。STLport使えよ。

382 :デフォルトの名無しさん:03/08/17 22:00
>>380
mutable使わない方向でお願いします。

383 :デフォルトの名無しさん:03/08/17 22:02
>>381
STLportって printf とか C 言語のときからの標準関数も含んでるの?

384 :デフォルトの名無しさん:03/08/17 22:04
mutable を使う例としては参照カウントぐらいで、
それ以外で mutable を使うことは滅多にない。

385 :デフォルトの名無しさん:03/08/17 22:05
>最終的に全てのメンバ関数がconstになり、全てのメンバ変数がmutableになりました。

意味なし。最強

386 :381:03/08/17 22:06
>>383
ごめん、聞かれてる意味がわからない。

387 :デフォルトの名無しさん:03/08/17 22:07
VC7.1でSTLPortって使えるの?

388 :デフォルトの名無しさん:03/08/17 22:07
通報しました

389 :380:03/08/17 22:08
>>382 >>384
ありがとうございます。
しばらくは mutable は存在しないものとして学習を進めていくことにします。

390 :380:03/08/17 22:10
>>385
やっぱり・・・。そんな気はしたんですよね。

391 :デフォルトの名無しさん:03/08/17 22:11
メンバ変数を変更するメンバ関数ではconstを付けるな

メンバ変数を見るだけのメンバ関数にはconstを付けろ

392 :デフォルトの名無しさん:03/08/17 22:12
メンバ変数を見るだけのメンバ関数なのにiteratorで舐め回すとエラーが出ます。

393 :デフォルトの名無しさん:03/08/17 22:15
>>392
const_iteratorでも?

394 :デフォルトの名無しさん:03/08/17 22:15
>>392
const_iteratorにしる。

395 :デフォルトの名無しさん:03/08/17 22:16
>>392
const_iteratorじゃだめ?

396 :デフォルトの名無しさん:03/08/17 22:17
>>379
> .h 付きでないヘッダに対応している処理系を対応し始めたバージョンを併記して
> 5つ以上リストアップしてくれ。それができないならそんなこと言うな。

知らんが、今後シェア最大になるであろう Visual Studio .NET 2003 には .h 付きヘッダが
含まれていないのだが。それでも .h を入れた方が移植性が高いと思うのか?

397 :デフォルトの名無しさん:03/08/17 22:20
C++って一貫して一貫性がないな。

398 :デフォルトの名無しさん:03/08/17 22:21
322と名乗っている教えて君に【無礼者】のレッテルを貼る
教授または先輩に見放された理由がよくわかる

399 :デフォルトの名無しさん:03/08/17 22:22
それは一貫性だな。

400 :デフォルトの名無しさん:03/08/17 22:23
>>396
それは今後の話だろ?
現状では同じ VC でも未だにバージョン6が主流。

401 :デフォルトの名無しさん:03/08/17 22:25
>>400
で、だから.hつけるのかね?

402 :デフォルトの名無しさん:03/08/17 22:26
メタ一貫性だろ

403 :デフォルトの名無しさん:03/08/17 22:27
>>396
まじ!?
じゃあCのソースをコンパイルできないじゃん。

404 :デフォルトの名無しさん:03/08/17 22:31
>>403
無いのはiosteam.hとかだろ。たぶん。
Cでコンパイルすればいいんだしさ。どうせ。

405 :デフォルトの名無しさん:03/08/17 22:33
>>401
.h 付きじゃないとダメな処理系の時にはどうしてるの?
#if をいちいち使ってるの?

406 :デフォルトの名無しさん:03/08/17 22:36
>>405
.h 付きだとダメな処理系の時にはどうしてるの?
#if をいちいち使ってるの?

407 :デフォルトの名無しさん:03/08/17 22:39
>>406
そんな処理系使ったことないある。
そんな処理系、実際どれくらいあるの?

408 :デフォルトの名無しさん:03/08/17 22:42
.h月じゃないと駄目な処理系に出くわしたら
泣く泣く自分で.h付かないヘッダ作って、中で.h付きのファイルをincludeしてください

409 :デフォルトの名無しさん:03/08/17 22:45
>>408
で、.h 付きだとダメな処理系ってどれくらいあるの?

410 :デフォルトの名無しさん:03/08/17 22:51
>>409
VC++.NET 2003

411 :デフォルトの名無しさん:03/08/17 22:53
>>410
それだけなの?

412 :デフォルトの名無しさん:03/08/17 22:54
gccでも最近のバージョンは警告出す。

413 :デフォルトの名無しさん:03/08/17 22:55
>>412
コンパイルは通るんでしょ?

414 :デフォルトの名無しさん:03/08/17 22:56
>>411
67%のシェアをほこる処理系ですが

415 :デフォルトの名無しさん:03/08/17 22:59
>>414
旧バージョン含めたらでしょ

416 :デフォルトの名無しさん:03/08/17 23:00
>>414
それはどこが公表してるどういう数字?
できたらソースきぼんぬ。

417 :デフォルトの名無しさん:03/08/17 23:01
ウザ

418 :デフォルトの名無しさん:03/08/17 23:03
>>414
VC++.NET 2002は .h付きもサポートされてるよ。
で、その67%のシェアって、2003のシェアじゃないよな。

419 :デフォルトの名無しさん:03/08/17 23:06
.hつけなきゃいけない処理系って何?

420 :デフォルトの名無しさん:03/08/17 23:08
ttp://www.trickpalace.net/cgi-bin/cppll/enq.cgi?mode=enquete&number=5

母数が少ないからあんまりあてにはならんけど、
そんなに現状と激しい差はないと思われる。

421 :デフォルトの名無しさん:03/08/17 23:09
http://www.trickpalace.net/cgi-bin/cppll/enq.cgi?mode=enquete&number=5

422 :デフォルトの名無しさん:03/08/17 23:20
>>419
VC6。
あと、最近のバージョンなら大丈夫だと思うが CodeWarrior も。

423 :デフォルトの名無しさん:03/08/17 23:26
VC++6.0にiostreamとか入っているよ?

424 :デフォルトの名無しさん:03/08/17 23:31
stdio がアウト。( cstdio なら大丈夫 )

425 :デフォルトの名無しさん:03/08/17 23:31
ハードリンクも作れない低脳どもが

426 :デフォルトの名無しさん:03/08/17 23:33
あと付け加えとくと VC6 は cstdio にしても
標準関数が std 名前空間に入ってくれないから意味が無い。

427 :デフォルトの名無しさん:03/08/17 23:34
>>425
そんなもの必要ありませんがなにか?


428 :デフォルトの名無しさん:03/08/17 23:34
>>424
何それ? いやマジで。cstdioは知ってるぞ。

429 :デフォルトの名無しさん:03/08/17 23:38
// VCだとアウト
#include <stdio>

int main() {
  printf("hoge\n");
  return 0;
}

430 :デフォルトの名無しさん:03/08/17 23:38
とりあえず、「STLPortを入れて.hを抜いとく」のがいいんかな。

431 :デフォルトの名無しさん:03/08/17 23:41
VC7.1にSTLPort入れるとエラー出るよ

432 :デフォルトの名無しさん:03/08/17 23:42
>>430
STLportって printf とか C 言語のときからの標準関数も含んでるの?

以下ループ・・・

433 :デフォルトの名無しさん:03/08/17 23:48
>printf とか C 言語のときからの標準関数
は処理系依存の物が沢山あるからそういうことはないよ
処理系で用意されているオリジナルのヘッダを読み込むだけの
同名のヘッダは用意されているけど

434 :デフォルトの名無しさん:03/08/17 23:48
429 名前:デフォルトの名無しさん[sage] 投稿日:03/08/17 23:38
// VCだとアウト
#include <stdio>

int main() {
printf("hoge\n");
return 0;
}

435 :デフォルトの名無しさん:03/08/17 23:49
>>433
例えば stdio.h をインクルードしてるだけの stdio があるってことですか?

436 :デフォルトの名無しさん:03/08/17 23:51
>>435
stdio.hもcstdioもある

437 :デフォルトの名無しさん:03/08/17 23:54
>>436
そうなんだ、知らなかったよ。情報ありがとう。

でも >>431 によると STLport を使う事で問題が
万事解決ってわけでもなさそうですね。

438 :デフォルトの名無しさん:03/08/17 23:55
>>429
> #include <stdio>
そりゃアウトだろう。

439 :デフォルトの名無しさん:03/08/18 00:00
初めて見たよ

440 :デフォルトの名無しさん:03/08/18 00:11
>>435>>436 は、微妙に話がかみ合ってない。(cの一文字)
で、>>424>>429は、無視でよろしいですか?

441 :デフォルトの名無しさん:03/08/18 00:20
>>422
デマはよせ。VC++ は 4.2 から <iostream> を持っとる。

>>440
> で、>>424>>429は、無視でよろしいですか?
>>403とかも無視でよろしいと思う。

442 :デフォルトの名無しさん:03/08/18 00:26
結局、 >>372 が諸悪の根源か?

443 :デフォルトの名無しさん:03/08/18 00:48
で、結局のところどういうことなの?
.h 付きだとダメな処理系は VC++.NET 2003 オンリーで、
.h 無しだとダメな処理系は?

444 :デフォルトの名無しさん:03/08/18 00:54
>>443
>.h 付きだとダメな処理系は VC++.NET 2003 オンリー
これが正しいわけだが。つーか規格嫁。

445 :デフォルトの名無しさん:03/08/18 00:57
>>444
なんだその噛み合ってないレスは

446 :デフォルトの名無しさん:03/08/18 00:58
>>444
規格も大切だが移植性の話してるんだから
現状がどうなっているかは重要。
規格にしたがったからって実際に現実の移植性が
いいかとは別問題。

447 :デフォルトの名無しさん:03/08/18 01:00
>>446
で、きみは.hつけるのかね?

448 :デフォルトの名無しさん:03/08/18 01:03
>>447
その参考にする為に訊いてるんだから
つけているかつけていないか別問題だろ。
頭悪いなぁ。

449 :デフォルトの名無しさん:03/08/18 01:07
>>448
規格は一つ。
現実問題は処理系の数だけある。
どっちに依るかは使う処理系によって自ずと決まろう。

450 :デフォルトの名無しさん:03/08/18 01:10
規格にすがる気持ちは無いけど、一定の拠り所はほしいよな。

451 :デフォルトの名無しさん:03/08/18 01:12
規格規格逝ってる香具師はANSIC++規格に100%準拠したコンパイラが出るまで、
C++を使わないで下さい。

452 :デフォルトの名無しさん:03/08/18 01:13
>>450
そうそう。規格通りに実装されてなければ意味をなさないし、
実際問題、まだ全てが規格通りに実装されるわけでもないんだし。

453 :デフォルトの名無しさん:03/08/18 01:14
移植性移植性逝ってる香具師はembedded系のC++コンパイラサブセットでも通るコードだけ書いて下さい。

454 :デフォルトの名無しさん:03/08/18 01:16
>>453
実際にそれを使う奴は他の処理系でも意識してコード書くだろ。
特に共通で使えそうなコードならなおさら。

455 :デフォルトの名無しさん:03/08/18 01:18
要するにだ、今の規格は現場のニーズを満たしていないと。現場のニーズは
規格化するにはあまりにも多岐にわたっていると。そういうことだな?

456 :デフォルトの名無しさん:03/08/18 01:19
拠り所が欲しい奴は↓に従え。

まず規格通り .h 無し。
エラーが出るようなら STLport を検討。

それでダメなら .h を足して、対応する std:: の使用を変更する。
このとき、移植性が必要なソースなら処理系で定義済みの
プリプロセッサシンボルで .h の追加、namespaceの変更をスイッチ可能にしておく。

それでだめなら諦めて実装を変える。
このとき、移植性が必要なソースなら処理系で定義済みの以下略

457 :322:03/08/18 01:20
プププ 流石低能ばかりがいるスレですね。

458 :デフォルトの名無しさん:03/08/18 01:21
>>457
また来やがったなw

459 :デフォルトの名無しさん:03/08/18 01:24
ttp://www.tietew.jp/cppll/archive/121

460 :322:03/08/18 02:19
ああっ、なんてレベルが高いスレッドなんだ。これじゃ誰もついていけない。
2ちゃんねるも捨てたもんじゃないな。まだこんなレベルが高いスレッドが
あるんだもんな。しかし、ここに書き込んでいる連中は相当なレベルの高さ
だよなぁ。これじゃ、こんなにレスがつくのも当たり前だよ。本当に322の
レベルは高いと思うけど、それについて行ける奴も凄いな。まったく尊敬
するよ。おれもみんなを見習ってレベルの高い人間になれるように精進する。
そして、みんなについて行けるような立派なプログラマになるよ。まだ見習い
だけど3ヶ月後の俺を見ていてくれよ。みんなをアッと言わせるプログラマに
なるからさ。その時まで、みんなもレベルが高いのを持続してくれよな。
ほんと、2ちゃんねるに来て幸せだよ、オレは幸せものだなぁ。


461 :デフォルトの名無しさん:03/08/18 02:22
>>460
長文オツカレー、だけどみんなもう飽きちゃってんだよねぇ…。

462 :1:03/08/18 02:29
//Basic.h
class Basic {
public:
int b;
Basic() {b=10;}
};

//C1.h
#include "Basic.h"
class C1 : public Basic {
public:
int cc1;
C1() {cc1 = 1;}
};

//C2.h
#include "Basic.h"
class C2 : public Basic {
public:
int cc2;
C2() {cc2 = 2;}
};


463 :2:03/08/18 02:29
//Main.cpp
#include <iostream>
#include "C1.h"
#include "C2.h"
using namespace std;

int main(int argc, char** argv) {
C1 c1;
C2 c2;
cout << "c1.cc1=" << c1.cc1<<"c1.b="<< c1.b;
cout << "c2.cc2=" << c2.cc2 <<"c2.b="<< c2.b;
return 0;
}

%c++ Main.cpp
In file included from C2.h:1,
from Main.cpp:3:
Basic.h:2: redefinition of `class Basic'
Basic.h:2: previous definition of `class Basic'

となってしまいます。どうしたらよいのでしょうか?

464 :デフォルトの名無しさん:03/08/18 02:31
とりあえずインクルードガード

465 :322:03/08/18 02:47
>>461
コピペにマジレスオツカレー、だけど俺も飽きてんだよねぇ・・・どうしよう・・・

466 :デフォルトの名無しさん:03/08/18 02:51
>>465
とりあえず、話を聞いてくれる友達を作れw

467 :デフォルトの名無しさん:03/08/18 03:10
>>464
できましたー。蟻がォ。
こんなのに、何時間もかけてたなんて…鬱。

468 :デフォルトの名無しさん:03/08/18 12:31
標準では
ネットワークサポートしてないのでしょうか?(C or C++)
VCなのですが、sys/socket.hなどが見つかりません。


469 :デフォルトの名無しさん:03/08/18 12:33
>>468
Winsockなんてのがあるよ。でも、あまり期待しないでね。

470 :デフォルトの名無しさん:03/08/18 12:41
ネットワークは、標準にはならないと思うよ。
ネットワークが不要な環境や不可能な環境もあるわけで、
ネットワークがCやC++の標準になってしまうと、そういう環境では
非標準のコンパイラしか供給できなくなる。

471 :デフォルトの名無しさん:03/08/18 13:16
GUIは、標準にはならないと思うよ。
GUIが不要な環境や不可能な環境もあるわけで、
GUIがCやC++の標準になってしまうと、そういう環境では
非標準のコンパイラしか供給できなくなる。

472 :デフォルトの名無しさん:03/08/18 13:47
STLは、標準にはならないと思うよ。
STLが不要な環境や不可能な環境もあるわけで、
STLがCやC++の標準になってしまうと、そういう環境では
非標準のコンパイラしか供給できなくなる。


473 :デフォルトの名無しさん:03/08/18 14:35
>>469-470
とりあえずOSで用意されたものを使うことにしました。
ありがとうございました。




474 :デフォルトの名無しさん:03/08/18 14:46
一気にレスを読んで、例外に関する話が出てきたけど、
http://www.cuj.com/documents/s=8250/cujcexp2106alexandr/
で紹介されている Enforce を使ってみてはどうかと思う。
実際に使ってみると Log とる時にすごく便利。

何気に std::runtime_error を std::string で実装している環境向けなので、
STLport では使えなかったりするが。


475 :デフォルトの名無しさん:03/08/18 17:44
>424 >429
それは、c++の規格通り。

476 :デフォルトの名無しさん:03/08/18 17:54
(unsigned int)aは、
coutで変数を表示したりする時に一時的に内容をint型に変更するって理解で合ってますか?

477 :デフォルトの名無しさん:03/08/18 18:04
aの型は変わらない

478 :デフォルトの名無しさん:03/08/18 18:35
>>476
a を usigned int として解釈する、
もしくは a から usigned int の一時変数を作成することを意味する。

479 :デフォルトの名無しさん:03/08/18 18:55
VC++で.h付きのと.h無しのとを混ぜるのはやめような。
どっちをincludeするかで使われるライブラリが異なる。

480 :デフォルトの名無しさん:03/08/18 20:09
>>476
a の値を unsigned int に変換した値を得るだけ。
a 自身に変化は無い。
-a が a の値の符号を逆転させた値を得るだけで
a 自身に変化が無いのと同じように。

481 :デフォルトの名無しさん:03/08/18 22:24
Javaをあまり知らないので聞きたいのですが、
C++のSTLみたいなgeneric programmingってJavaでそのまま使えます?

482 :デフォルトの名無しさん:03/08/18 22:34
>>481
ダウンキャストの嵐でよければ、現状でもそれなりには、
container/iterator/algorithm ... みたいなものはある。

けど、もっとマシな Generics は JDK 1.5 に期待せよ。
http://objectclub.esm.co.jp/JavaGenerics/

483 :デフォルトの名無しさん:03/08/18 22:39
>>482
ありがとう。かなり参考になった。

484 : ◆uDXNh2HK82 :03/08/18 23:41
Microsoft Visual C++ .NETとBorland C++Builder 6のどちらを買ったほうがいいですか?
使用目的はC++の勉強や趣味にしたいと思っていますが、本格的なアプリケーション作成も十分出来るなどの点を踏まえて教えて下さい。

485 :デフォルトの名無しさん:03/08/18 23:56
>>484
VC .NET 2003 にしとけ。
Borland はもう結構長いことバージョンアップしてないし。

486 :デフォルトの名無しさん:03/08/19 00:08
>>484
.NET Frameworkかcygwinでまずは遊ぶのがいいよ。
金出したからといってプログラミングができるようになるわけじゃない。
書籍に金をかける方がいい。

487 :デフォルトの名無しさん:03/08/19 00:13
IDE無しじゃ学習効率は大幅にダウンする。
書籍以前の問題だな。

488 : ◆uDXNh2HK82 :03/08/19 00:30
>>484です。
C++の勉強と書きましたが、GUIの勉強に近いです。
C++の書籍は購入し、Linuxも持っているので標準入出力、反復、条件分岐、ポインタなどはある程度出来ます。
GUIをやろうとするとなんか調子が悪いし、Windowsなどでフリーで提供されているソフトよりもわかりづらい部分もあるので、Windowsでの開発環境を買ってみたいと思いました。
WindowsのAPIも利用したいです。
でもCUIならgccはとてもいいです。

489 :デフォルトの名無しさん:03/08/19 00:35
抽象クラスのコンストラクタはpublicでOKでしょうか?

490 :デフォルトの名無しさん:03/08/19 00:40
>>489
純粋仮想関数をもってないならprotectedにしとくといいよ。

491 :デフォルトの名無しさん:03/08/19 00:40
privateにしていいの?

492 :489:03/08/19 00:46
えと、抽象クラスということで、pure virtualありです。
> 純粋仮想関数をもってないならprotected
は何故なのでしょうか? おしえていただけると嬉しいです。


493 :デフォルトの名無しさん:03/08/19 00:52
>>492
Abstract not_implemented;
って感じに抽象クラスのインスタンスを作ってもエラーにならないから。

494 :489:03/08/19 00:54
ああ、なるほど。サブクラスでoverrideしなくてもいいけど、
抽象クラスそのものをインスタンス化してもらっちゃ嫌だと
いうことですね。ありがとうございます。


495 :デフォルトの名無しさん:03/08/19 01:23
>>491
全然OK。
そういう設計もある。

496 :デフォルトの名無しさん:03/08/19 03:20
教えてください。
int i=15 * 6 * 0.7; // 62
int i=15 * 0.7 * 6; // 63
で前者は62に後者は63になるのですが
これは一体なんなんでしょうか?


497 :デフォルトの名無しさん:03/08/19 04:02
C++に関係あるんでしょうか


498 :デフォルトの名無しさん:03/08/19 04:05
http://www.google.co.jp/search?q=%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0+%E8%AA%A4%E5%B7%AE&ie=UTF-8&oe=UTF-8&hl=ja&lr=lang_ja
http://www.google.co.jp/search?num=30&hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&q=%E6%BC%94%E7%AE%97%E5%AD%90+%E5%84%AA%E5%85%88%E9%A0%86%E4%BD%8D+%E7%B5%90%E5%90%88&lr=lang_ja

499 :496:03/08/19 04:28
>>498
ありがとうTT

500 :デフォルトの名無しさん:03/08/19 06:40
質問です。
プログラムの実行中に、関数を動的に書き換えたいと考えています。
そこで、オリジナルの関数を宣言した時、
その関数のポインタを得ることは出来ますが
関数の終端を得るにはどうすればよいでしょうか?
(この「終端」はアセンブラ命令でいうretの位置だと捉えてください)

501 :デフォルトの名無しさん:03/08/19 06:46
>>500
オリジナルを動的に書き換えるのは(確か)無理。
char型の配列を書き換えてcallならできるだろうけど。

502 :デフォルトの名無しさん:03/08/19 06:52
配列にコピーしたいから終端を知りたいんですけど。

503 :デフォルトの名無しさん:03/08/19 06:58
>>502
だから無理。はじめから配列にアセンブラで命令入れとけ。

504 :500:03/08/19 07:08
回答どうもありがとうございます。
WriteProcessMemoryでどうにかなるかな?
と思ったのですが、無理なのですね〜勉強になりました。

御教授いただいたchar型配列のcallを試してみます。
どうもでした。ちなみに502は私ではありませんが、すいませんです。

505 :502:03/08/19 07:16
じゃあなんで終端を知りたいんだろう。

506 :500:03/08/19 07:28
>505
そうでした・・すいません。
最初と変わって申し訳ないのですが、オリジナルの関数以外も視野に入れさせてください。
書き換えは不可能でも、関数の内容の読み取りを行いたいんです。

そこで、ちょっと終端検出を考えて試してみたのですが
void a(〜)
{
 〜
};
void b(〜)
{
};

と隙間無しに宣言して、aとbのポインタを見てみると
bはaの直ぐ後ろに確保されているようで
b-1がaの終端ということでいいのかも、と思ったのですが
この方法は、あまりよくないんでしょうか・・?
メモリの確保のされ方はOSのほうの話になりますか?

507 : :03/08/19 08:00
>>506
OS じゃなくてコンパイラの出すコード次第だと思う。
(リンカも多少仕事する余地があるかな)

>この方法は、あまりよくないんでしょうか・・?
どっちにしろ移植性ゼロなんだから、C++ の話題じゃあないし、
あまり気にせず出来るやり方でやればよいと思うよ。
Win32 ならコード書き換えるんなら VirtualProtect(Ex) でチャクチャキっと。


508 :デフォルトの名無しさん:03/08/19 11:22
>>506
書き換えとか読み取りとかって・・・
コンパイルというものを理解しているかな?
アセンブラとか、マシン語とかって知ってる?
メモリーの中に、Cの関数が入っているわけじゃないよ。
最近はソースコードデバッガがあたりまえだから、そういう錯覚に陥りやすいのかもしれないけど。

509 :デフォルトの名無しさん:03/08/19 11:35
>>508
>>500みるかぎり、その辺は分かってるんじゃないかな

510 :デフォルトの名無しさん:03/08/19 17:35
書き換えたいんだったらOpenC++のMOP使う方が格好いいよ。


511 :デフォルトの名無しさん:03/08/19 17:40
てか、関数ポインタを使えと小一時間・・・

512 :デフォルトの名無しさん:03/08/19 19:40
スレ違い+マルチ
氏ね

513 :デフォルトの名無しさん:03/08/19 20:46
>>506
>と隙間無しに宣言して、aとbのポインタを見てみると
>bはaの直ぐ後ろに確保されているようで

そんな保証はない! ・・・と断言してみせた。
さあ次はお前の番だ。保証があると反駁してみせろ。

514 :デフォルトの名無しさん:03/08/19 21:13
コンパイラの設定によってはインラインになるかもしれんしな。

515 :デフォルトの名無しさん:03/08/19 21:45
ぶっちゃけ最初どういうプログラムかいて勉強すりゃいい?
javaだったらGUI簡単につかえてやる気がでるんだが・・・

どこかほどほどに大きいサンプルプログラムおちてるとこないっすか?

516 :デフォルトの名無しさん:03/08/19 21:53
今は大概のアプリケーションがフリーであったりするから
プログラミングのためのモチベーション維持するのが大変だよな。
大きなものはいきなりは作れないだろうし。

517 :デフォルトの名無しさん:03/08/19 23:45
>>515
Qtはいいよ!!!!

518 :デフォルトの名無しさん:03/08/20 02:38
クラスのメンバ変数?で三次元配列使いたいんですけど、初期値を代入する方法としてファイルも使わずスマートに記述する方法ってありますか?

519 :デフォルトの名無しさん:03/08/20 03:00
Qtよりgtkmmがいいよ

520 :デフォルトの名無しさん:03/08/20 03:27
>>518
もうちょっと、詳細な状況説明をおながいします。

521 :518:03/08/20 03:37
>>520
理解できない馬鹿は黙ってろよ。


わかってる人、よろしくお願いします。

522 :デフォルトの名無しさん:03/08/20 03:47
単次元配列に初期値用意してループ使って初期化。

523 :518:03/08/20 03:47
>>521
禿道。>>520みたいなやつって邪魔だよね。

524 :デフォルトの名無しさん:03/08/20 05:12
粘着Java厨、C#厨警報!
質問者はトリップを忘れずに。

525 :デフォルトの名無しさん:03/08/20 05:44
>>521>>523
三次元配列は固定長なのか、初期値は定数なのか、その辺次第だろ?

526 :デフォルトの名無しさん:03/08/20 06:38
ジサクジエンカコワルイ

527 :デフォルトの名無しさん:03/08/20 12:28
三次元配列を使いたいといっている時点でスマートじゃない罠。

528 : :03/08/20 13:04
C++ でメソッドの定義を記述するとき、
あいまいさがない限りは this-> を省略できますよね。
これの this-> を強制するようにはできますか?
それってコンパイラごとのオプションで #pragma で指定するようなものなんでしょうか。

ローカル変数で同じ名前の変数を使ってしまって、
それがバグの原因になるということが頻繁にあるので、
明示的に this-> を使うように強制したい、と思うんです。

使用しているのは gcc 2.95.2 です。

529 :デフォルトの名無しさん:03/08/20 13:05

コーディング規約

530 : :03/08/20 13:08
>>529
みんなが規約をきっちりと守ってくれたらいいんですが…

531 :デフォルトの名無しさん:03/08/20 13:08
>>528
コンパイラでは規制はできない。
そんな腐ったルールを強制するよりは
名前ルールのほうで回避するのが普通
(ローカル変数は小文字だけ、とかメンバ変数はm_つけるとかそういう類。
コーディング規約スレ参照)

532 : :03/08/20 13:14
>>531
やっぱりそうですか…
現状、ローカル変数は aaa_bbb_ccc 系の命名方法、
クラスの変数は aBbbCcc 系の命名方法にしているんですが
(Windows 系のプロジェクトとあわせるためもあって)、
守ってくれない人もいるんで強制できたらなぁと思った次第です。

PHP のようにデフォルトで強制される言語もあるんで、
Web がらみの仕事も多いうちではどうせなら C++ でも強制してしまえ、とばかりに。

533 :_:03/08/20 13:14
http://homepage.mac.com/yamazaki8/hankaku09.html

534 :デフォルトの名無しさん:03/08/20 13:20
>>532
名前ルールで分割しない場合、
人間が見てもthisを付けるべきかの判断がそもそも困難なので
コードレビューをしてもミスを残す危険がある。
(問題をおこす場面というのは同一の名前の場合なわけだからね)

しかし名前ルールで分割する場合、宣言をレビューした時点で
誰もが違反を指摘できる。

535 : :03/08/20 13:27
>>534
宣言を見た時点で、その名前の付け方は違反だと指摘できる、ということですね。

問題は無意識にメンバ変数と同じ名前のローカル変数を使ってしまっても、
コンパイラにはそれを検出するすべがないということだと思うんです。
まぁコンパイラによっては警告を出してくれるものはあるみたいですけど。

ん?もしかしたら -Wall で g++ は警告出してくれるんじゃないか?
んなことないか。

536 :デフォルトの名無しさん:03/08/20 13:43
>>535
組織でやってるのなら確実にレビューをすればそういうチェックと共に
多くの問題を発見できるんだが脳。

ちなみに名前を隠蔽する場面ってのは、メンバ変数以外にも
引数やらローカル変数同士ですらあるし、 namespace + usingも罠だな。


537 : :03/08/20 14:01
>>536
ですね、特にヘッダファイルの中に using かかれた日にゃぁ。
それが与えられたライブラリのヘッダファイルだったりすると…最悪。

538 :デフォルトの名無しさん:03/08/20 14:23
ちょっとくだらない質問なのですが、お願いします。
shared_ptrが使える場合は、徹底的に使った方が良いでしょうか?

使わない方が良いっていう場面が、あったら教えてください。

539 :デフォルトの名無しさん:03/08/20 14:28
値でいい場合

540 :デフォルトの名無しさん:03/08/20 15:41
もう少しこう……いえ、いいです

541 :デフォルトの名無しさん:03/08/20 16:22
>>538
間違いなくatd::auto_ptrより速度が遅いと思うので、コンテナに入れる時
以外は使わなくていいんじゃなくて?

542 :デフォルトの名無しさん:03/08/20 16:22
std::auto_ptrのTYPOですたスマソ

543 :デフォルトの名無しさん:03/08/20 16:23
shared_ptrを一回参照はがししてしまった上でもう一回別のshared_ptrに入れたときには
カウンタが分裂してしまうこともあったりするかもね。

そういう使い方をしなきゃならんときはオブジェクト自身にカウンタを持たせて
intrusive_ptrのほうがいいかも、とか。
(メモリ効率もいいし)

544 :デフォルトの名無しさん:03/08/20 16:33
//hoge.hh
#if __cplusplus
extern "C++"{
#endif //__cplusplus
class Hoge{
Hoge();
~Hoge();
printHoge();
};
#if __cplusplus
}
#endif //__cplusplus

というようなclassを作った時に、
Hoge(), ~Hoge, printHoge
をC言語から呼び出して使う方法はあります?


545 :デフォルトの名無しさん:03/08/20 16:34
muri

546 :デフォルトの名無しさん:03/08/20 16:37
>>538
new は代表的な重い処理のひとつで、shared_ptr は参照カウンタの為に余分に
new が行われるから shared_ptr を多用し過ぎするとそこそこパフォーマンス影響がでるハズ。
だから、沢山作られるオブジェクトなら shared_ptr を使わずにその本体のオブジェクトに
参照カウントを内臓するような設計にしたほうがいい。
とは言っても例によって最近のマシンはパワフルだからフツーは shared_ptr を
使いまくっても問題ナッシングだとは思う。

547 :デフォルトの名無しさん:03/08/20 16:41
>>544
そもそも C では class が作れんし。

まぁ、無理やりそれっぽいことをすることはできる。
IDirectDrawSurface とかの COM のヘッダファイルが
ある程度参考になるのではないかと。

548 :デフォルトの名無しさん:03/08/20 16:41
>>541-543
あれから自分でソース読んでたのですがさっぱりで…助かりました。

速度はやはり落ちるのですね。ちょっと特殊な用途なので
参照はがしもありそうで…intrusive_ptrは初耳、勉強しておきます。
やっぱり訊いて良かった…。

ひとまずコンテナのみに使用しておきます。レスありがとうございました。

549 :デフォルトの名無しさん:03/08/20 16:45
>>546
書いているうちにすいません。なるほど、生成にかなりコストが…。
ちょっと貧弱なマシンも考えなければなので、これは根本から見直さないと…。

いやはや本当に助かります。レスサンクスです。

550 : :03/08/20 17:13
C は sizeof を使わないとビット幅が確定しないのがなぁ。
あと、符号{つき|無し}{右|左}ローテートとかもあったら便利なのになぁ。
ビット演算やりたければアセンブラつかっていう話もあるけど、
そういう低レベルのところを言語仕様に入れてくれてもいいのになぁ。

歴史的には高級言語としてそういうのを隠蔽しようとしてきたんだろうけど、
いまの C の価値はむしろそういうレベルのコード生成の透明性にあるからなぁ。

551 :デフォルトの名無しさん:03/08/20 17:23
ビットフィールド

552 :デフォルトの名無しさん:03/08/20 17:26
つまり、shared_ptr だの、smart_ptr だのをあまり利用せず、
IUnknown 継承して、CComPtr つかえってことですね。


553 :デフォルトの名無しさん:03/08/20 17:26
>>550
ローテイトもってる CPU じゃないと
実装が面倒になるというのもあったのではなかろうか。多分。

554 : :03/08/20 17:28
>>553
ははぁ、そうなのかもね。でもなぁ 8bit の時代からあったからなぁ。
ところで、皆さん整数の桁あふれとかはちゃんと対処しています?

加算命令で int の幅を超えちゃっても、
C の言語仕様上は検出するすべがありませんよね。
多くのプロセッサは桁あふれを検出することができると思うんですが、
C からも使えたら便利だとは思いませんか?

555 :デフォルトの名無しさん:03/08/20 17:34
ローテイトを何に使いたいんだ?
それが気になる

556 :デフォルトの名無しさん:03/08/20 17:34
C言語の生い立ちから考えるとやっぱりその辺は
「アセンブラを使用汁」ってことに尽きるんでしょうなぁ。

557 : :03/08/20 17:37
>>555
要素が0と1だけからなり、加算がXORで表現される、
激しく巨大な行列の演算。

グラフ理論なんかでよく出てくる。

558 :デフォルトの名無しさん:03/08/20 17:39
>>加算命令で int の幅を超えちゃっても、C の言語仕様上は検出するすべがありませんよね

計算量増えるけど先に確かめておけばいい
C++なら検出つきの整数クラスでも作ればいいだろう
それならすぐ元に置き換えられるし

559 :デフォルトの名無しさん:03/08/20 17:41
>>557
やはりローテイトの出番がよく分からんなあ

560 :デフォルトの名無しさん:03/08/20 17:46
C# だとオーバーフローを検出できるんだっけ?

561 :デフォルトの名無しさん:03/08/20 18:07
Effective STLに書いてあった等価と同値の違いがいまいち分かりません。
詳しく説明して欲しいな。

562 :デフォルトの名無しさん:03/08/20 18:55
>>561
んー、あれが一番詳しい(というかわかりやすい)説明だと思うが・・・。

563 :デフォルトの名無しさん:03/08/20 20:21
C++でXMLやるのに良いサイトありますか?
そもそもXMLは仕様が固まったのでしょうか?

564 :デフォルトの名無しさん:03/08/20 20:37
>>563
http://pc2.2ch.net/test/read.cgi/tech/1017641205/

565 :デフォルトの名無しさん:03/08/20 22:11
>>560
できるよ。
コンパイラオプションに -checked つけるか、
checked(式) ってやると例外が発生するようになる。


566 :デフォルトの名無しさん:03/08/20 23:16
XMLは仕様が固まったのでしょうか、っていつの時代の人なんだ。

567 :デフォルトの名無しさん:03/08/21 00:30
c++で端末を直接制御するためのライブラリって
ncursesであってます?

568 : :03/08/21 07:07
>>567
まぁそれが一般的だろうね。

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)