C++相談室 part21
レス数が1000を超えています。これ以上書き込みはできません。
0001v(^・^)v
NGNGただし質問の前にFAQに一通り目を通してください。
また、テンプレートライブラリ(STL含む)に関する質問は
専用の別スレへどうぞ。
過去スレ、関連スレ、関連リンクなどはこちら>>2-10
0002デフォルトの名無しさん
NGNG0003v(^・^)v
NGNG[Stroustrup]
禿 http://www.research.att.com/~bs/
C++に関するリンクの総本山でもあります。
[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/
[Object Management Group]
http://www.omg.org/
[Association of C & C++ Users]
http://www.accu.org/
[news]
news:comp.lang.c++
news:comp.lang.c++.moderated
[ML]
cppll(日本語) http://www.trickpalace.net/cppll/
メインページにC++に関する良質なC++日本語リンク集があります。
0004v(^・^)v
NGNGC++FAQ Lite http://www.parashift.com/c++-faq-lite/
C++FAQ(日本語) http://www.bohyoh.com/CandCPP/FAQ/
Cとその仕様を比較しながらの解説なので分かりやすい。
*** 質問の前に必ずこの二つに目を通してください ***
[STL]
http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
Standard Template Library プログラミング on the Web
リファレンス的内容。http://www.wakhok.ac.jp/~sumi/stl/
STL Programmer's Guide http://www.sgi.com/tech/stl/
[boost]
これに関しては公式のドキュメント、又はソースを読むのが一番です。
ただし日本語でいくつか有益な情報が読めます。
Let's boost http://www.kmonos.net/alang/boost/
shinichiroさん http://user.ecc.u-tokyo.ac.jp/~s31552/wp/boost/
news news:gmare.comp.lib.boost.devel
0005v(^・^)v
NGNGamazon.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/
0006v(^・^)v
NGNG[GCC]
http://gcc.gnu.org/
(Windows上でのPOSIX環境構築 http://www.cygwin.com)
[Borland C++ Compiler]
http://www.borland.co.jp/cppbuilder/freecompiler/
[.NET Framework SDK]
1.0 http://www.microsoft.com/japan/msdn/netframework/downloads/sdk.asp
1.1 http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp
[MSVC] コンパイラ以外のツール、ドキュメントです。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
(一括ダウンロードの時は上のURLに続けてこちらを入力してください
default.htm?p=/msdownload/platformsdk/sdkupdate/psdk-full.htm)
なお上記三者を組み合わせたプログラミングにおいてはこちらが分かりやすいです。
http://www.geocities.com/Tokyo/Ginza/5432/documents/winprog/index.html
[DigitalMars]
http://www.digitalmars.com/
[OpenWatcom]
http://www.openwatcom.org/
[Comeau]
http://www.comeaucomputing.com/
[intel C++ Compiler]
http://www.intel.com/software/products/compilers/
[metrowerks]
http://www.metrowerks.com/mw/default.htm
0007v(^・^)v
NGNGBoost http://www.boost.org/
STLport http://www.stlport.org/
Loki http://www.moderncppdesign.com/
LokiPort
MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
MSVC6.0 SP5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
ACE/TAO http://www.cs.wustl.edu/~schmidt/
Network、Thread、ORBなどのポータブルなライブラリ
Blitz++ http://www.oonumerics.org/blitz/
数値計算ライブラリとして人気がある、らしい
antlr http://www.antlr.org/
flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
パーサジェネレータ
他ライブラリリンク集
http://www.trumphurst.com/cpplibs/cpplibs.phtml
0008v(^・^)v
NGNGPart2 http://pc.2ch.net/tech/kako/996/996640937.html
Part3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
Part4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
Part5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
Part6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
Part7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
Part8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
Part9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
Part10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
Part11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
part12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
part13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
part14 http://pc2.2ch.net/tech/kako/1041/10413/1041328679.html
part15 http://pc2.2ch.net/tech/kako/1043/10436/1043605481.html
part16 http://pc2.2ch.net/tech/kako/1045/10457/1045746245.html
part17 http://pc2.2ch.net/tech/kako/1047/10475/1047560042.html
part18 http://pc2.2ch.net/tech/kako/1050/10501/1050177746.html
part19 http://pc2.2ch.net/test/read.cgi/tech/1052625846/
part20 http://pc2.2ch.net/test/read.cgi/tech/1055162298/
0009v(^・^)v
NGNG【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
0010v(^・^)v
NGNG[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
0011v(^・^)v
NGNGpart1 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
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG乙。
0014デフォルトの名無しさん
NGNGtemplate<typename T> void func() { hoge };
void (*ptr)();
ptr = func<A>; // error: void(void) から void (__cdecl*)(void) に変換できません。
ptr = &func<A>; // 同上
どのように書けばよいでしょう?
VC++6.0 SP5 です。
0015デフォルトの名無しさん
NGNGfunc<A>とかfunc<B>とかは全部オーバーロードされた関数として
扱われるので、明示的にキャストなどが要るはず。
ptr = (void(*)()) &func<A>;
0016デフォルトの名無しさん
NGNGしかし、駄目でした。
error: '' から 'void (__cdecl *)(void)' に変換することはできません。
空欄の型とはいったい。コンパイラのせいなのかな。
駄目そうだったらおとなしく仮想関数を使います。
0017デフォルトの名無しさん
NGNGこれは
typedef void pf();
pf p= fn<int>;
p();
0019デフォルトの名無しさん
NGNGふざけんな!
0020デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGvoid (*pf)();
pf=func<int>;
これはコンパイルできないけど
void (*pf)()=func<int>;
これはコンパイルできる。なんで?
0023デフォルトの名無しさん
NGNG> また前スレの1さんでつか?
0024デフォルトの名無しさん
NGNG駄目でした。
最初のエラーと同じ 'void(void)' から 'void(__cdecl *)(void)' に変換できません。
特殊化を定義しておくと通ったりしてちょっと謎。
template<> func<A>() { hage }
ptr = func<A>; // OK
コンパイラのせいかな?
0026デフォルトの名無しさん
NGNGネタだけどな。
つーかなんでそう思ったん?
名前欄か?
0027デフォルトの名無しさん
NGNG確実にコンパイルできる方法
template <class T> struct foo{ static void bar(){/*hoge*/} };
void (*pf)();
pf=foo<int>::bar;
002826
NGNGv(^・^)vさんをコテハンだと思いますたTT
いつもこのスレには本当にお世話になり、頼りに
しています。(自分は会社勤務ではないため
聞く人がいないのです。といってMLは恥ずかしくて聞けないTT)
これからもよろしくです。。。
0029デフォルトの名無しさん
NGNG0030名無し@沢山
NGNG0031デフォルトの名無しさん
NGNGとかc(+・+)cじゃないの?
0032デフォルトの名無しさん
NGNG無事通りました。この方法でいってみたいと思います。
ありがとうございました。
0033c(^p^)p
NGNG0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
0037デフォルトの名無しさん
NGNGすげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG恒例のやりとりですね。
0040デフォルトの名無しさん
NGNGboostはどうすんだよ。
0041デフォルトの名無しさん
NGNGドタドタする
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGああ。なんか前にもあったな。
0044デフォルトの名無しさん
NGNGすげえ。VC7.1にしといてwarning C4244が大量に出てきたとかいってるよ。この人。
0045デフォルトの名無しさん
NGNGそんな事言われても出たもんは出たんだよヽ(`Д´)ノ ウワァァァン
まぁあんまりその辺気にせずにVC6を使ってた漏れが悪いが…
0046デフォルトの名無しさん
NGNG一応C++
0047名無し@沢林
NGNG0048名無し@沢森
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG_____(-∀- )__
_│_│_│_│_│
│_│_│_│_│_ ポイント♪
_│_│_│_│_│
│_│_│_│_│_ (・∀・ )⌒ヽ⌒ヽ⌒ヽ
_____Σ(-∀・ )_
_│_│_│_│_│
│_│_│_│_│_ ポイントカード オモチデスカ?
_│_│_│_│_│
│_│_│_│_│_ (・∀・ )⌒ヽ⌒ヽ⌒ヽ
_____Σ(;・Д・)_
_│_│_│_│_│
│_│_│_│_│_
_│_│_│_│_│ ・・・ポイント10バイ!
│_│_│_│_│_ □⊂(・∀・ )
0052デフォルトの名無しさん
NGNG質問カモ〜ン
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0<x<2などの複数回比較を可能にするクラスmulticomparisonと
そのヘルパ関数mcompを作成しろ。これによって次の例が可能になる
0<mcomp(x)<3、mcomp(x)==y==z
0056デフォルトの名無しさん
NGNGhttp://www.trickpalace.net/cxx/dagger/tips.h
0057デフォルトの名無しさん
NGNGhttp://akipon.free-city.net/page003.html
http://endou.kir.jp/betu/linkvp/linkvp.html
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNGスレタイを10000回復唱汁。
0060デフォルトの名無しさん
NGNG基本クラスAとその派生クラスBがあったとします。
A* p = new B;
delete p;
という風に書きたい場合はAのデストラクタを仮想関数にするのでいいのでしょうか?
0061デフォルトの名無しさん
NGNGYes
0062デフォルトの名無しさん
NGNGその通り。
というか、特殊な事情がない限り
デストラクタは仮想関数にしておいた方が無難。
特殊な事情ってのは、
派生クラスを作る予定が全くない、
よほどパフォーマンスやデータサイズが気になる、
とか。
0064デフォルトの名無しさん
NGNGそうしないと未定義
0065デフォルトの名無しさん
NGNGAのサイズでヒープを開放しようとするのでヒープ領域が破壊される
ヨカーン。
0066デフォルトの名無しさん
NGNGえーやだなー
0067デフォルトの名無しさん
NGNGあるデータに関するクラスAがあり、
そのクラスのオブジェクトを集約リストとして持っているクラスBが別にあります。
クラスAのオブジェクトは、全てそのリストで管理されています。
クラスBは他に妥当なクラスがないという消極的な理由から、クラスAのリストを保持してます。
そこでお尋ねしたいのですが、このリストに対する操作(ソートや全検索など)を
実装する場合、それをクラスBのメンバ関数とするのと、クラスAの静的メンバ関数に
するの、どちらが妥当でしょうか?
0068デフォルトの名無しさん
NGNGたいなのでこのスレに投げます。
SYOTI_F( char * ) test_time SYORI_P(( const time_t *tp, char *buf ));
とGCCで書いてあるヘッダをC++Builderでコンパイルすると
[C++ エラー] test.h(38): E2293 ) が必要
となるのですがこれはSYOTI_F( char * ) を返り値とした関数
の宣言と考えて良いでしょうか?
0069デフォルトの名無しさん
NGNGそのリストがどこに所属しているかによる。
クラスAの設計の一部として(クラスAが成り立つために必須)存在しているのならクラスAのメンバにすべき。
それとも、クラスAは単独で存在できるけど、たまたま今回のプログラムではそれをリスト上で管理しているのならクラスBのようなコレクションクラスのメンバにすべき。
0070デフォルトの名無しさん
NGNGおそらくSYOTI_FとSYORI_Pはマクロだと思うが、それが定義されていないためのエラーってことはない?
0071デフォルトの名無しさん
NGNG× SYOTI_F
○ SYORI_F
のタイプミスが原因に 1000 ガバス。
007267
NGNGレスありがとうございます。なるほど、
リストというデータの帰属を問えば良いのですね。
今回の私のケースは、69さんの二行目に反するようです。
(二行目の様にリストの内包が必須なクラスを、今ちょっと想像出来なくて、少しだけ不安ですが)
ですのでBのメンバにしようと思います。御陰で吹っ切れました。重ね重ね感謝です。
0073デフォルトの名無しさん
NGNG定義って#define以外に?
0074デフォルトの名無しさん
NGNGこっちにも書いとく。
>えっと別スレで聞いたのですが説明なしで自己満足で終わられたみ
>たいなのでこのスレに投げます。
回答してくれる人をなんだと思ってるんだ?
おまえの質問に答えてやるためだけに常駐してるとでも思ってるの?
0075デフォルトの名無しさん
NGNG意味の通らないことを散々書いておいて、突然はたと居なくなるのが
自己満足以外のなんだというんですか?w
質問者に礼儀が必要なのはもちろんですが、回答者にだって必要かと..ww
0076デフォルトの名無しさん
NGNG以下のような関数を自作できないこともないとは思いますが。
if((fi=fopen(source,"rb"))!=NULL)
if((fo=fopen(target,"wb"))!=NULL){
printf("Start conversion\n");
fputc(255,fo);
fputc(254,fo);
while((c = fgetc(fi))!=EOF){
後略
0077デフォルトの名無しさん
NGNG分かっている事ばかり答えてもらってもしかたなか(-.-)
分かっている事ばかり答えてもらってもしかたなか(-.-)
0078デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNGあのね質問に全部答えても解答がでてないの〜^^;
0081デフォルトの名無しさん
NGNG>>79
被害の拡大を防いでくれてありがとう
0082デフォルトの名無しさん
NGNG>突然はたと居なくなるのが
あたりまえ。おまえみたいに暇な人ばかりじゃない。
0083デフォルトの名無しさん
NGNGみすだ
0084デフォルトの名無しさん
NGNG答える事ができないのに偉そうなのがむかつく
0085デフォルトの名無しさん
NGNG分からないのに偉そうにあれを調べろこれを調べろ
って時間の無駄〜他の人にしないで下さいね
0086デフォルトの名無しさん
NGNG標準C++には無いよ
ライブラリかOSの機能をつかうべし
0087デフォルトの名無しさん
NGNG行いたい機能から関数を逆にたどるのがむずかしいのですが、
Borland C++ Compiler 5.5のライブラリの中にはSHIFT-JISをUnicodeに変換する関数などはないのでしょうか?
0088デフォルトの名無しさん
NGNGmbstowcs 関数というのがある。
ヘッダファイルは cstdlib 。
ただし、Shift-JIS を使っている OS に限る。
0089デフォルトの名無しさん
NGNGwchar_tがうにコードとは限らな(略
0090デフォルトの名無しさん
NGNGmbstowcs()とwcstombs()がありました。ありがとうございました。
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNG昔、私がTemplateすれに貼り付けたもの。
C++ でワイド文字をマルチバイト文字列に変換
std::localeloc( "japanese" );
std::locale::global( loc );
std::wstring source( L"(・∀・)" );
std::string result( source.size()*2, char() );
const std::ctype< wchar_t >& ct = std::use_facet< std::ctype<wchar_t> >( loc );
ct.narrow( &*source.begin(),&*source.end(),'?',&result[0]);
std::wcout << L"wide : " << source << std::endl;
std::cout << "narrow : " << result << std::endl;
結果
wide : (・∀・)
narrow : (・∀・)
マルチバイト文字列からワイド文字列へは、
std::string source( "(・∀・)" );
std::wstring result( source.size(), wchar_t() );
const std::ctype< wchar_t >& ct = std::use_facet< std::ctype<wchar_t> >( loc );
ct.widen( &*source.begin(),&*source.end(),&result[0]);
VCで確認済みだが、他の環境(UNIXとか)では知らん
009392
NGNG×std::localeloc("japanese");
○std::locale loc("japanese");
他にもミスあるかも…
0094デフォルトの名無しさん
NGNGVC++7.0 では期待通り動くけど、
VC++7.1 じゃ表示がおかしくなるね。
なんか違うのかな?
0095デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1055162298/944
亀レスだけど
typedef Typelist<class1,Typelist<class2,Typelist<class3,NullType> > > ClassList;
class Base{
public:
virtual int GetID()=0;
virtual ~Base(){}
};
template <typename classname>
class BaseImpl:Base{
int GetID(){
return IndexOf<classname>::value;
}
};
class class1:public BaseImpl<class1>{
};
0096デフォルトの名無しさん
NGNGclass AbortType{
public:
AbortType(){abort();}
};
class Factory{
public:
Base * Create(int ID){
switch(ID){
case 0:return new TypeAtNonStrict<ClassList,0,AbortType>::Result;
case 1:return new TypeAtNonStrict<ClassList,1,AbortType>::Result;
case 2:return new TypeAtNonStrict<ClassList,2,AbortType>::Result;
//...
}
//static Base * (*Funcptr[ClassList])()={TypeAtNonStrict<ClassList,0,AbortType>::Result::operator new(),
//TypeAtNonStrict<ClassList,1,AbortType>::Result::operator new()};
abort();
};
};
Factoryはperlとか使って出力しておく。
templateスレへ行けとか言われそうな気もするけど思いついたので。
typelistとかTypeAtとかも書くと長くなりそうなので省略
0097デフォルトの名無しさん
NGNGそう考えてよい。以上。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNGそういうときこそpreprosessor-metaprogrammingだ
0101デフォルトの名無しさん
NGNGあつかっている文字が始めから最後までUTF8なら
通常の読み書きの関数をそのまま使えば済む話だけど、
具体的にどういうことがしたいの?
0102デフォルトの名無しさん
NGNG何故でしょうか?static をはずすか、又はコンストラクタ内で static メンバ
にアクセスしないようにすると問題無くコンパイルが通ります。
% g++ a.cpp
/tmp/ccC2TuDO.o: In function `Hoge::Hoge(void)':
/tmp/ccC2TuDO.o(.Hoge::gnu.linkonce.t.(void)+0x5): undefined reference to `Hoge::x'
collect2: ld returned 1 exit status
0103102続き
NGNGclass Hoge {
static int x;
public:
Hoge() { x = 0; }
void SetHoge(int a) { x = a; }
int GetHoge() { return x; }
};
class Hoge2 {
Hoge hoge;
int y;
public:
Hoge2() { y = 0; }
Hoge2(int b) { y = b; }
void SetHoge2(int a) { y = a; }
int GetHoge2() { return y; }
};
main()
{
Hoge2 hoge2;
printf("%d\n", hoge2.GetHoge2());
}
0104デフォルトの名無しさん
NGNG0105104
NGNG0106104
NGNGHoge() { Hoge::x = 0; }
void SetHoge(int a) { Hoge::x = a; }
int GetHoge() { return Hoge::x; }
こうすればOK
0107デフォルトの名無しさん
NGNGもちつけ(;´Д`)とりあえずニラ茶でも飲んでだな・・・
>>103
Hoge クラスを宣言し終わった後らへんに
int Hoge::x = 0;
としてやるべし。静的メンバは,クラスの外のどこかで
実体とでも言うべきモノを定義してやる必要がある。
0109102
NGNG>>104さん
そのようにやってみた所、やはり同様のエラーがでてしまいますた。(;;)
>>107さん
確かに外側で初期化したら通りました!ありがとうございました。
しかし何故外で再?定義してやらないといけないのか今一分かりません。
>>108
正確でなく、すみません。リンカーの方ですた。
0111デフォルトの名無しさん
NGNGクラス定義の中に書いてるのは変数の定義じゃなくてただの宣言。
これがもし定義だったらどうなるか考えてみれ。
軒並みシンボルの重複でリンクエラーになるぞ。
0112デフォルトの名無しさん
NGNGVC++ .NETでDirectX 9.0 SDKについていたサンプルプログラムをビルドしようとしているのですが
DirectPlayを使用するプログラムはビルドすることが出来ません。
その際表示されるエラーメッセージが
「ChatPeer fatal error LNK1181: 入力ファイル 'dplay.lib' を開けません。」
というようなものです。
VC++ .NETの方ではインクルードファイル、ライブラリファイルともパスは通してあります。
ただパスを通したディレクトリに 'dplay.lib' ファイルはやはり無いんですよね。
'dplayx.lib' とは全く別物のようですし。
どなたか分かる方がいましたらよろしくお願いします。
0113デフォルトの名無しさん
NGNGハァ?
0114デフォルトの名無しさん
NGNG0115112
NGNGしかし実際エラーが出てしまいます。
IDEのバージョンを一応記載しておきます。
VC++ .NET Standard 2003です。
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGIDE起動後、
ファイル→
開く→
プロジェクト→
(例えばaddressoverride.vcprojを選択後)開く
その後
ビルド→
ソリューションのビルド
ここでコンパイルエラーになります。
>>116
もう少し詳しく言ってくださるとありがたいです。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG鬱だ氏のう DirectX (Part 9)
http://pc2.2ch.net/test/read.cgi/tech/1054553472/
0122デフォルトの名無しさん
NGNG葉夏至区同意。
0123デフォルトの名無しさん
NGNG#define MAX_FACTORY_SIZE 100
#define MACRO01(dummy,i,arg2) case i:return new TypeAtNonStrict<ClassList,i,AbortType>::Result;
//template <int i>struct int2int{
// enum{value=i};
//};
class Factory{
public:
Base * Create(int ID){
switch(ID){
BOOST_PP_REPEAT(MAX_FACTORY_SIZE,MACRO01,arg2_dummy)
//BOOST_PP_REPEAT(int2int<100>::value,MACRO01,arg2_dummy)
}
abort();
};
};
さらに手を加えればより使いやすくなるだろうけど
ただ、Factoryのサイズをdefineで定義しないといけないけど。
0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNGマスターすることは不可能。
でも使うことはできる。
0127デフォルトの名無しさん
NGNGC++でプログラムを組むことは可能ということですね?
ありがとうございました。
がんばります。
0128デフォルトの名無しさん
NGNGCとC"++"だけあって、C++の勉強が、そのままCの勉強ことであったりするだろうし。
個人的には、Cをある程度かじってからのほうが近道のように感じる。
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNGから良いって見方もあったりもするわけで。
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNG知らないのか?
納豆にネギを刻むと美味いんだ。
0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG今年は7/25が土用丑か
0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG平賀源内の思惑に乗っちゃだめだ!
0139デフォルトの名無しさん
NGNGint *p;
int a=100;
p=&a;
func(p);
return 0;
}
void func( int &aaa ) {
cout << aaa << endl;
}
error C2664: 'func' : 1 番目の引数を 'int *' から 'int &' に変換できません。
参照にポインタを渡す方法はありますか?
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGあ、うまくいきましたー。
あれー?
さっき同じ事やった時はコンパイラとおらなかったんだが
勘違いだったかな
ありがとうございました
0142デフォルトの名無しさん
NGNGpublic:
//...
Test & operator=(int arg){
//...
return *this;
}
};
まあこれも同じことで。
0143バッファ
NGNGstruct Request {
int v;
char *n;
char *a;
} req = {1,"sample","sample"};
という構造体を送信データバッファとして
send(s, (char*)&req,sizeof(Request), 0);
と書いて送信するのは正しいでしょうか?
0144デフォルトの名無しさん
NGNGポインタを送信しても意味が無いと思われ。
0145デフォルトの名無しさん
NGNGスレッド間通信に使ってるのかもしれないじゃん(和良
0146デフォルトの名無しさん
NGNGないのかな? 実際には(警告はでるけど)たいていのコンパイラで使える
みたいだけど。これを使って、
// 文字列コンバータのファンクタ
template<int C> struct Converter {
string operator()( const char* s );
};
// ソースがEUCで書かれている場合
template<> struct Converter<0xa4a2> { // 0xa4a2 == EUC('あ')
string operator()( const char* s );
};
// このソースの文字コード用のコンバータ
typedef Converter<(unsigned short)'あ'> ConverterT;
int main()
{
string s = ConverterT()( "あいうえお" );
}
みたいなことをやりたいんだけど…
0147デフォルトの名無しさん
NGNGL'あ' (wchar_t型)だべ
0148デフォルトの名無しさん
NGNGC++の例外指定に対応した?
0149デフォルトの名無しさん
NGNGISO C++ 規格はなにが違うの?
0150デフォルトの名無しさん
NGNGどういうこと?
例外指定ってexception-specificaation?
void hoge() throw(std::runtime_error) {...}とかこういうやつ?
記述はVC6の頃から通ったと思うが。
記述されていない例外を投げるとunexpected()が呼ばれる動作とか
してなかったんだっけ?
0151デフォルトの名無しさん
NGNG実質 VS .net 2003に付属する
コンパイラってことになっちまった?
0152デフォルトの名無しさん
NGNGexportは無いけど、総合的にはそうなってしまったようだ
0153デフォルトの名無しさん
NGNGいや、warningだよ。
文法的に解釈はしてくれてるようだけど、
実装はされていないよ。
0154デフォルトの名無しさん
NGNGThe function can throw an exception of type type. However, in Visual C++ .NET, this is equivalent to throw(...).
まだ対応してない模様
0155デフォルトの名無しさん
NGNGFunction exception specifiers other than throw() are parsed but not used. For example:
void f() throw(int); // parsed but not used
void g() throw(); // parsed and used
For more information on exception specifications, see Exception Specifications.
ほんとだ。
0156デフォルトの名無しさん
NGNGthanx
0157デフォルトの名無しさん
NGNG昔は ANSI(アメリカ国内) だけでやってたのを ISO(国際) で標準化するようになったってだけ。
ISO/ANSI C++ とかいう言い方することもあるし。
0158146
NGNG> L'あ'
g++ 3.2.2 だと warning: character constant too long とかいわれますね。
それに、L をつけると元の EUCなりSJISなりではなくなってしまう気が。
0159デフォルトの名無しさん
NGNGg++で比較すんな!
0160デフォルトの名無しさん
NGNG明日からちょっとづつ読むことにします。
0161デフォルトの名無しさん
NGNG「Cのエキスパート」感があって、安心できる。
俺も奴の本で勉強した。
0162デフォルトの名無しさん
NGNG「望洋さん」と「奴」の組み合わせにワラタ
0163デフォルトの名無しさん
NGNG{
public:
virtual ~A();
int x;
};
A a[2];
↑という定義がある( A はPODではない)とき、↓の式の結果は定まりますか?
reinterpret_cast<int*>(reinterpret_cast<char*>(&a[0].x) + sizeof(A)) == &a[1].x
0164デフォルトの名無しさん
NGNG定まる。
パディングとか考慮しても
sizeof (A) は a[0] と a[1] の距離と等しくなることが
確か保証されてた筈だから、
その要素間の距離も sizeof (A) で OK 。
int* → char* の変換でアドレスが変わるような特殊な環境でも
char* → int* の変換でちゃんと元に戻される...と思うので大丈夫。
こんな変な環境を使ってる人が今いるのかどうか知らんが。
0165163
NGNG"An object of POD type shall occupy contiguous bytes of storage."
って書いてあるので、保証されてるのはPODだけだったりしませんか?
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG0168166
NGNGでした。つまりソース表記上では同じアドレスでもint*とchar*とで内部表現が異なる環境で
reinterpret_castしても問題は起こり得ないのでしょうか?
0169デフォルトの名無しさん
NGNGやっぱり意味がわからん。
0170デフォルトの名無しさん
NGNG>>166は「内部表現が異なる」の具体例を明示して説明すること。
0171デフォルトの名無しさん
NGNG0172166
NGNG0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGchar *pc = hogehoge;
int *pi = reinterpret_cast<int *>(pc);
if ( sizeof(char *)!=sizeof(int *) && memcmp( &pc, &pi, sizeof(char *) ) )
{
piとpcは同じアドレスをさすが内部表現は違う
}
0175174
NGNG&& -> ||
0176デフォルトの名無しさん
NGNG0177166
NGNGmemcmp(&pc,&pi,sizeof(char*))は常に0を返すと考えて良いのでしょうか。
0178166
NGNG0179166
NGNG失礼。
0180デフォルトの名無しさん
NGNGこれは、例えば int の 4 バイト(の環境として)が
連続する 4 つのバイトに確保される、ということでは?
○ xxxxooooxxxxxxxx
× xxxxooxxoxxxoxxx
で、規格見つけた。
5.3.3 -2- より抜粋
When applied to a class, the results is the number of bytes
in an object of that class including any padding
required for placing objects of that type in an array.
クラスに(sizeof を)適用した場合の結果は、
配列として配置した場合に要求されるあらゆるパディングを含めた、
そのクラスのオブジェクトのバイト数になる。
0181山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0182デフォルトの名無しさん
NGNGtest.method();
と書いても
CTest pTest;
pTest = new CTest();
pTest->method();
delete pTest;
と書いても
結果おんなじですよね。
newする必要性を教えて下さい。
0183デフォルトの名無しさん
NGNGその場合は new する必要性は無い。
>>177
http://www.catnet.ne.jp/kouno/c_faq/c5.html#6
> データの型が異なるとポインターの内部表現が異なるマシンがある
ので、常に 0 を返すとは限らない。
0184182
NGNGやっぱり、単純な奴は必要ないのですね。
newの
必要性があるのは、
どんな時でしょうか?
内部パラメータが大きい時とかですか?
結局確保するんだから、さいしょから CTest test;でも、
いいような気がするんですが。
0185デフォルトの名無しさん
NGNGそのオブジェクトを作る必要がそのときどきで異なるとき
0186デフォルトの名無しさん
NGNG> 内部パラメータが大きい時とかですか?
CTest test; とすると(普通は)スタックに確保され、
new CTest; とすると(普通は)ヒープに確保される。
(普通は)スタックは小さく、ヒープは潤沢なので、
確かに巨大なものを確保する時には new を使う。
0187デフォルトの名無しさん
NGNG律儀にフリーストアって言葉使ってる人いるけ?
char filename[] = "\C\Hello.txt";
std::ifstream f(filnename,std::in);
char* buf = new char[?];
int readsize = f.readsome(buf,?);
buf[?] = \0;
というのを考えたんですけどサイズ(?)はどうやって知るの?
Win32APIにファイルサイズ知るのがあるらしいけどファイルハンドルとか要求してきてよくわかりません。
なんか良い方法ありませんか?
0189デフォルトの名無しさん
NGNG最後に seekg して tellg 。
0190デフォルトの名無しさん
NGNGstd::stringとか使えば?
#include <iostream>
#include <fstream>
#include <string>
#include <boost/lexical_cast.hpp>
main(){
std::ifstream ifs("Hello.txt");
std::string s=boost::lexical_cast<std::string>(ifs.rdbuf());
std::cout << s;
}
0191デフォルトの名無しさん
NGNGファイルのサイズじゃなくて、バッファのサイズ?
ヘッダに書かれていると思う。
0192188
NGNGみなさん、どうも有り難うございます。
>>189
なるほど、そうやればいいんですね。感謝。
>>190
すいません。boostライブラリはまだ自分にはちょっと無理なようです。
>>191
ファイルの内容を全部読み込みたいんです。
テキストファイルの場合は\nが2文字から1文字になる?とかあるとか読んだので
確かにファイルサイズじゃなくて全部読み込めるだけのバッファのサイズのほうが無駄がないのかな?
でもちょっとだけ大きくてもいいのでファイルサイズでもいいけど。
あとヘッダてファイルのヘッダという意味?ただのテキストファイルにもあるの?
それとも違うヘッダのことかな。
0193デフォルトの名無しさん
NGNG指します。よって、「バッファのサイズ」とは、「緩衝用途に幾らメモリが割り当て
られているか」であり、「(iostreamの)バッファサイズ」なら、iostreamヘッダを
調べれば判る、という話でしょう。
0194デフォルトの名無しさん
NGNGstd::ifstream ifs("Hello.txt");
std::ostringstream ost << ifs.rdbuf());
std::string s=ost.str()
std::cout << s;
0196デフォルトの名無しさん
NGNG#include <iterator>
#include <fstream>
int main(int,char **av)
{
ifstream in(av[1]);
string s((istreambuf_iterator<char>(in)),
istreambuf_iterator<char>() );
cout<<s;
}
すいませんでした。自分の言葉遣いがおかしかったですね。
特にC++の場合はバッファといえばストリームクラスが使ってるバッファのクラスになりますよね。
readやreadsomeの第2引数で指定する、ファイルのデータを読み込んで書き込む領域のこととして誤って使ってました。
>>194 >>196
charの配列に読み込むよりこっちの方がC++らしいですね。
参考にさせていただきます。ありがとうございました。
0199デフォルトの名無しさん
NGNG想像を絶する遅さってどのくらいよ。
そんな低スペックな処理系でC++でプログラム組むんじゃねーよ。
それに、そんなBIGなファイルを一気に読みこもーなんて、ふつう、しないよ。
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGistream_iteratorじゃなくてistreambuf_iteratorだぞ。
0202スタパ風
NGNG最近はそーでもない。
と思ったが C/C++ ですか…。
俺は C++ で飯食ってますが、 C/C++ なんて言語の事は知らないしな。
とりあえず C++ は「ここは可読性低くていいからとにかく速く」と
「ここはメンテしやすくいこうっと」の使い分けが大事な言語だと思った。
逆にいえばその使い分けができる言語だと思った。
そして求人広告によく載っている C/C++ ってどんな言語なんだろうと思った。
0203163
NGNG> 配列として配置した場合に要求される
こういう限定があるってことは、
非PODオブジェクトのメンバが、配列として配置したバイト列内に
存在する保証はないということになりませんか?
0204デフォルトの名無しさん
NGNGfreadでのsetvbufに相当するのはistreambuf_iteratorではどうやればいいの?
0205デフォルトの名無しさん
NGNGstreambufのpubsetbufでする。
0206デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNGんー。言ってる意味がよく分からん。
例えば
struct AB {
int a;
short b;
};
とした時、単独では別に b の後のパディングは必要ないかもしれない。
AB ab;
short c;
としたときに、ab.b と c がくっついてても問題なさそうに見える。
でも、配列にしたとき int, short, int, short となるから、
5.3.3 -2- の仕様から AB::b の後にはパディングが入る
(パディングの入れ方は環境依存だけど、こうなることが多い)。
sizeof (AB) が 8(の環境とする)になるわけだから、
単独で確保してもやっぱり 8 バイトじゃなくちゃまずいということになる。
だから、AB ab; short c; でもパディングは入るし、
そのパディングのサイズは AB のサイズの中に織り込み済みである。
と、そういうことを表した仕様だと思われ。
0209163
NGNGメモリレイアウトについての規格が軒並みPOD型についてに限定してあったりするので、
非POD型については、メンバごとに全然違うメモリ領域に配置するような実装を
許そうとしているような気配を感じたのです。
(そのような実装が有利になるような環境は、現状では存在しないとは思います。)
0210名無し@沢山
NGNG実際にプログラムを書いてみたよ。Windows専用ですまんよ。
適当なfileという名前のファイルを用意してくれよ。
//前半
#include <windows.h>
#pragma comment(lib,"winmm.lib")
class Timer{
public:
Timer(){ start(); }
void start(){ prev_time_=timeGetTime(); }
unsigned long get() const{ return timeGetTime()-prev_time_; }
private:
unsigned long prev_time_;
};
0211名無し@沢山
NGNG#include <iterator>
#include <fstream>
#include <iostream>
using namespace std;
int main(){
{
Timer t;
ifstream in("file",ios_base::binary);
char buf[10000];
string s;
while(in){
in.read(buf,10000);
s.append(buf,buf+in.gcount());
}
cout<<t.get()<<endl;
}
{
Timer t;
ifstream in("c",ios_base::binary);
string s(istreambuf_iterator<char>(in),istreambuf_iterator<char>() );
cout<<t.get()<<endl;
}
}
0212名無し@沢山
NGNG"c"から"file"に替えてくれよ
0213デフォルトの名無しさん
NGNG確か POD 型のメモリレイアウトは宣言順+パディング可だったはずです。
他にも仮想関数テーブルやら継承した場合やら色々仕様はあると思いますが、
基本的にはそんなもんかと。
1.8 -5- で POD 型を含めていないのは POD 型はパディング可だということを
言いたいのだと思います。
でも、パディング込みで考えれば連続領域(別の変数が割り込まない)で、
そのサイズは sizeof で得られる、
というようなことは、多分仕様に書いてあると思います(まだ調べてませんが)。
0214213
NGNGたまにしか使わない用語なので。
0215名無し@沢山
NGNGおれバージョンだと108ミリ秒
>>196バージョンだと23694ミリ秒かかるよ
300kbをBigなファイルだといったり
230倍の差を気にしないとかいうならもうプログラマやめたほうがよいよ。
0216名無し@沢山
NGNG0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGうん、うん、沢山だもんね
もう、君のネタは、沢山だよ
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG沢山の話し方は煽りが入っていて気に入らないが、同意せざるを得ないな。
0221デフォルトの名無しさん
NGNGvc6 stlport使用
リリース mt
沢山バージョンだと46ミリ秒
>>196バージョンだと110ミリ秒かかるよ
デバッグ mt
沢山バージョンだと203ミリ秒
>>196バージョンだと27820ミリ秒かかるよ
12MBだと
リリース mt
沢山バージョンだと203ミリ秒
>>196バージョンだと453秒かかるよ
0223デフォルトの名無しさん
NGNG確保して一気に読み込みがほぼそれに近い時間で終わる。
以下、ループ実行回数に比例して実行時間が長くなり、1byteのバッファでの
読み込みとistreambuf_iteratorがほぼ同等。
0224名無し@沢山
NGNG正直すまんかったよ。
0225名無し@沢山
NGNG0226名無し@沢山
NGNGおれバージョンは110ミリ秒
>>196バージョンは23655ミリ秒
なんでだよ?VC7に標準で付いてるSTLは死ぬほど遅いのかよ?
0227デフォルトの名無しさん
NGNGとりあえずC#相談室よりは上にいてほしいので
age
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG> http://pc2.2ch.net/test/read.cgi/tech/1057580107/227
> > とりあえずC#相談室よりは上にいてほしいので
> > age
>
> 必死に対抗するか見てみよう
> age
マジで反応してやがる。にゃははは。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG釣れた!(w
0234ゼーレ01
NGNG誰か助けてください!!お願いします
0235デフォルトの名無しさん
NGNG諦めれ(w
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGここにも顔つければいいんだよ。
c(+_+)とか。
0239デフォルトの名無しさん
NGNG何のために釣っているんだよ。
なにも内容が無い釣りは
何かに反応したとしか思えないぞ(w
0240デフォルトの名無しさん
NGNGそれ採用!
具体的な顔募集します。
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0247名無し
NGNG0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNGboost::tokenizerがいいと思う。
#include <boost/tokenizer.hpp>だけで使えるし
0253デフォルトの名無しさん
NGNGsplit みたいなのは知らんなぁ。
文字列の切り出しは substr くらいかな?
あとはここでも読んでちょ。
http://www.wakhok.ac.jp/~sumi/stl/index.html
0254デフォルトの名無しさん
NGNG> #include <boost/tokenizer.hpp>だけで使えるし
だと良いね
0255デフォルトの名無しさん
NGNG>だと良いね
良いよぉ。まさかお前C++を使っていてboostを
構築はともかくインストールしていない訳じゃああるまい
0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNGコンパイラがしょぼいのも無理ぽ。
0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG「boostにはこんなのあるよ」の一言を忘れただけなんだから次回から気をつければいいだけだろ・・・
0263デフォルトの名無しさん
NGNGなんだお前は英語が読めないのか?
>「boostにはこんなのあるよ」
そう言う内容なのは明らかだろ。お前は読解力ゼロ
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNGお前は今後一切使うな
0267デフォルトの名無しさん
NGNG読解力無いのはオメーだろ。
内容が明らかなのとboostがインストール済みかどうかはまったく別問題だ。
boostにケチはつけんが、boostスレじゃない場所でboostがインストール済みであることを前提に話す奴は逝ってよい。
相手は初心者かもしれん。
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGワロタ
0272デフォルトの名無しさん
NGNGregex使ったら、使ったこと書いてね!!
以外になんか不満あるようなもんあるんでしょうか?
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNGclear()を呼んでも残っているみたいなんですが。
0276デフォルトの名無しさん
NGNGたぶんそれは、basic_ios::clear()を呼んでいる。
中身をクリアするってのはないけど、
str(string const&)で文字列を割り当てることができるので、
空の文字列を割り当てればよい。つまり
str(string());
0277デフォルトの名無しさん
NGNGeraseしろ!!
>>273
boostスレではライセンスに(商用でも)問題ない(らしい)という結果だったはず。
でも、問題があるよといわれれば、どこが問題なのかやはり気になるもんでね。
0278デフォルトの名無しさん
NGNG0279277
NGNG大変ありがたいのだが、すでにそのページは拝見しております。
私が気になるのは、問題があるという人は何をもってしてそう判断したのか?ということです。
新しい発見(?)したとか。何かの特許に抵触したとか・・・。
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNGA.cppというファイルからB.hとC.hをIncludeして使おうと思っています。
C.hではクラスの宣言をしています。
そして、A.cppではそのインスタンスを作成しています。
しかし、B.hで作成したインスタンスのメンバーを読み込もうとすると、
コンパイル時に、そのインスタンスが『未定義』とされエラーがでてしまいます。
その後、A.cppでインスタンスを作成する場所でも『再定義』というエラーがでるので、
きっと、宣言の順番の問題なんだろうと思うのですが、何かよい解決策はないでしょうか。
わかりにくい文章ですみませんが、よろしくおねがいします。
0282281
NGNG最初にこのスレを見つけられずに、他のスレッドに書き込もうとしていたので、
その時書いた文章の残骸が残ってしまいました。
スレ違い云々は気にしないでください。
申し訳ありませんでした。
0283デフォルトの名無しさん
NGNG質問したいならageろ!
よろしくお願いしたいならageろ!
あほか。なにがメール欄に「sage」だよ。
きどってんじゃねーよ。
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNGスレ違いの事を書き込むならsageろ!
晒し上げじゃないならsageろ!
あほか。なにがメール欄に「nuge」だよ。
荒らしてんじゃねーよ。
0288デフォルトの名無しさん
NGNGしかもアドバイスしてさ。
親切じゃない。
0289デフォルトの名無しさん
NGNG漏れなら、アドバイスだけして、本人に揚げさせる
0290デフォルトの名無しさん
NGNGちゃんとしたレスを埋もれさせるのが一番不本意なので、
ちゃんとしたレスにアンカーを貼っておこう。
質問 >>281
レス >>284
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNGクラス外で::なしで使うにはどうすればよいですか?
class A
{
public:
typedef int type;
static const size_t SIZE;
};
みたいなときに
A::type i; size_t n = A::SIZE;
とかではなく
type i; n = SIZE;
とか書く方法はないでしょうか。
using A::type;
とかはだめみたいです。
0293デフォルトの名無しさん
NGNG0294292
NGNGごめんなさい。よくわかりません。
0295デフォルトの名無しさん
NGNG出来るが、そんなことして欲しくないので教えない。
0296デフォルトの名無しさん
NGNGtypedef A::type type;
const int SIZE=A::SIZE;
と事前に書いとく
0297292
NGNGいじわるしないでぇ
そんなことして欲しくない理由と共に教えてください。
ちっちゃな翻訳単位ローカルに使うんだったら
そんなに悪くないとおもうんですが。
0298デフォルトの名無しさん
NGNG0299292
NGNGなるほど。っていうかそんなことも思いつかん褐炭か>俺
ありがとうございます。
0300デフォルトの名無しさん
NGNGいや、別にいいけどさぁ・・
0301292
NGNG冷たくしないでぇ
0302デフォルトの名無しさん
NGNG0304281
NGNG>>284
わかりにくくてすみません。
B.hでは別のクラスが宣言されています。
簡単に書くと、こんな感じです。
[B.h]
class CHuman
{
int Speed;
void SetSpeed(void) { Speed = Ball.Spin; } ●1
};
-------------------
[C.h]
class CBall
{
int Spin;
};
-------------------
[A.cpp]
#include "B.h"
#include "C.h"
CHuman tanaka;
CBall Ball; ●2
main()
{ tanaka.SetSpeed(); }
●1が、未定義のエラーが出るところ、●2が再定義のエラーが出るところで、
それぞれの変数はpublicで宣言されていて、コンストラクタで数値が代入されていると考えてください。
たびたびの長文すみませんが、よろしくおねがいします。
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNGポインタで宣言してコンストラクタで new すれば?
0307デフォルトの名無しさん
NGNGB.hで
#include "C.h"
extern CBall Ball;
とするか、SetSpeed の実装をcppに分ける。
0308デフォルトの名無しさん
NGNG#include "C.h"
#include "B.h"
CBall Ball; はいらない。
と思う漏れは実はC++なんてよく知らないのだが(w
0309デフォルトの名無しさん
NGNGCParentと、それを継承したCInheritedがあります。
CInheritedのコンストラクタで、
1.
CInherited::CInherited():CParent(){
}
2.
CInherited::CInherited(){
CParent::CParent();
}
は何が違うのでしょうか。
0310デフォルトの名無しさん
NGNG#include "C.h"
CBall Ball;
#include "B.h"
CHuman tanaka;
こんなかんじにしたら
0311デフォルトの名無しさん
NGNG初期化の優先順位が違う。
こんな感じ
0312デフォルトの名無しさん
NGNGもしやとは思うが、
ヘッダを
#ifndef HOGE
#define HOGE
//ここに本文
#endif
でくくる方法は知ってるよな?
0313デフォルトの名無しさん
NGNG0314281
NGNGすみません、知りませんでした。
調べてみる事にします。
結局>>307のやり方でやってみたら、なんとかできました。
こたえてくださったみなさん、ありがとうございました。
0315デフォルトの名無しさん
NGNGstruct A{
A(){
std::cout<<this<<" A"<<std::endl;
}
};
struct B : public A{
B():A(){
std::cout<<this<<" B"<<std::endl;
}
};
/*
struct B : public A{
B(){
A::A();
std::cout<<this<<" B"<<std::endl;
}
};*/
Bの定義を入れ替えて実行結果を見てみろ。
>>311はアホ
0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNGCParent::CParent()などとして呼ぶことはできない
0318デフォルトの名無しさん
NGNGreturn hoge[0];
とかやったら、intにコンストラクタはないから返り値は未定ですよね。
int型とかにコンストラクタをつけたい場合は新しくクラスを作るしかないですか?
0319デフォルトの名無しさん
NGNGintはデフォルト初期化で0になるので返値は0です。
0320デフォルトの名無しさん
NGNGclass Value_iter : public Iter
{
public:
Value_iter(const Iter &it): Iter(it){}
typedef typename Iter::value_type::second_type value_type;
value_type operator*()
{
return Iter::operator*().second;
}
value_type operator->()
{
return Iter::operator->().second;
}
};
こういう感じで、一部の関数を上書きするために公開継承を使っても問題はないでしょうか。
std::map<A,B>::iterator 辺りを渡されることを期待するテンプレートです。
0321320
NGNG0322デフォルトの名無しさん
NGNGint n = int(); // デフォルトコンストラクタ
// 0で初期化
assert(n == 0);
0323デフォルトの名無しさん
NGNGほとんどの場合、問題「ある」。例えばその例なら、
Value_iter<map<key,val>::iterator> i;
val x = *i++; // error
0324デフォルトの名無しさん
NGNGああ、なるほど。理解しました。有難うございました。
0325デフォルトの名無しさん
NGNGclass CMoe {
const void (*pFunc)();
public:
CMoe(void (*func)()):
pFunc(func) // だめぽ
{
}
};
0326デフォルトの名無しさん
NGNGだろ
0327デフォルトの名無しさん
NGNG0328デフォルトの名無しさん
NGNG何ゆえ *i++ ←(increment operator)関数どこ?
>>320
意味ない。何のためのiteratorがあるのかわかる?
>>327
const void はそのままじゃんか。何か?
0329デフォルトの名無しさん
NGNGキミ、会話の意味がわかってないなら黙ってた方がいいと思うよ。
0330Error 改行が多すぎます
NGNG#include <iostream>
using namespace std;
const void test(){
cout << "test" << endl;
}
class CMoe{
protected:
const void (*pFunc)();
public:
CMoe(const void (*func)());
void Do();
};
CMoe::CMoe(const void (*func)()){
pFunc = func;
}
void CMoe::Do(){
(*pFunc)();
}
int main(){
CMoe moe(test);
moe.Do();
return 0;
}
0331325
NGNGなーる。サンクス!
スマソ、も1つ。
class CHoe {
// うにょにょ〜(operator=なし)
};
int main() {
CHoe hoe;
vector<CHoe> Moe;
Moe[0] = hoe; // CHoeにoperator=が定義されてない。
return 0;
}
ちゃんと定義しないとダメ?
0332325
NGNGそう、まさにそれがやりたかった。ありがと。
0333デフォルトの名無しさん
NGNG0334328
NGNG意味わかんないかな?
こんなのは使わんけど。
#include <iostream>
#include <map>
#include <string>
template<class T,class U>
struct TorU : std::map<T,U>::iterator
{
typedef typename std::map<T,U>::iterator base;
TorU(std::map<T,U>& m) : base(m.begin()){}
operator T(){ return base::operator ->()->first; }
operator U(){ return base::operator ->()->second; }
};
int main()
{
using namespace std;
map<int,string> cs;
cs.insert(pair<int,string>(0,"ring 0")) ;
cs.insert(pair<int,string>(1,"ring 1")) ;
TorU<int,string> tu(cs);
while(tu != cs.end()){
cout<<(int)tu<<' '<<(string)tu<<'\n';//castめんどくせー
++tu;//ここがポイントなのよ
}
}
0335デフォルトの名無しさん
NGNG0336const void???
NGNG0337328
NGNG0338328
NGNGこれで納得いかないか?
#include <iostream>
template<class T> struct Imitation;
template<>
struct Imitation<void>
{ static void fun(){ std::cout<<"Variant"<<std::endl; } };
template<>
struct Imitation<const void>
{ static void fun(){ std::cout<<"Constant"<<std::endl; } };
int main()
{
Imitation<const void>::fun();
Imitation<void>::fun();
}
0340デフォルトの名無しさん
NGNG0341331
NGNG単にCHoeのメンバがconstだったり参照だったりしてただけだった。
代入演算子が生成されないんだね。
0342_
NGNG0343デフォルトの名無しさん
NGNGtemplate <class T> struct bar{};
template <class T> void foo(bar<T>){}
int main(){
bar<int> b;
foo(b);
}
以上のプログラムがコンパイル通りません。
そこで以下のようにしたら無事とおりました。下のプログラムはC++的に正しいですか?
template <class T> void foo(T){}
template <class T> struct bar{
friend void foo(bar<T>){}
};
int main(){
bar<int> b;
foo(b);
}
0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNGそれぞれの派生クラスのインスタンスを作った場合、
ベースクラスから継承した一つの static 変数をそれらで共有することになりますか?
厨でスマソ。
0346デフォルトの名無しさん
NGNGなる
0347デフォルトの名無しさん
NGNG上の通るなあ。bcc32
0350デフォルトの名無しさん
NGNGISOのドキュメントによると関数テンプレートのオーバーロードに相当して
より特殊化したものが選ばれる。事になっていて問題ないようだけど…
より詳しい人よろしく
0351デフォルトの名無しさん
NGNG関数があいまいてVC7(VC6も?)はエラーがでるから
おしえてあげればいいのでは?
foo<int>(b);
しってたらごめん。
0353デフォルトの名無しさん
NGNGグローバル変数に渡したいのですが、どのようにすればよいのでしょうか?
(ローカル変数のスコープをグローバルに変換したい)
自分がやってみたのは以下のとおりです。
おかしな点があったらご指摘頂けないでしょうか。
// グローバル
classHoge* global_ptr_cHoge;
//
void func()
{
classHoge cHoge; // オブジェクト作成
global_ptr_cHoge = &cHoge; // オブジェクトのアドレスをグローバルに格納
test(global_ptr_cHoge); // テスト用関数
}
void test(classHoge* ptr_cHoge)
{
ptr_cHoge->Method();
...
}
0354デフォルトの名無しさん
NGNGVC7.1では上ので通る
0355デフォルトの名無しさん
NGNGfuncを抜けてからアクセスしなければ大丈夫
0356デフォルトの名無しさん
NGNG> ローカル変数のスコープをグローバルに変換したい
ここがおかしい。
0357デフォルトの名無しさん
NGNG諦めてグローバルにインスタンス置いと毛
0358353
NGNGfunc外からも使いたかったんですが、
funcを抜けるとやっぱりまずいですよね・・・
>>356
う、確かに・・・
>>357
はい、そうしときます。
変な質問してしまいすみませんでした。
0359デフォルトの名無しさん
NGNG>>353
func を抜けたら func の auto 変数の cHoge は destruct されるから
それ以降に触るのは危険。
というか cHoge を func 内の static にしておけばいいんだけど
それだとやりたい事と意味があっているかどうかはわからん。
0360デフォルトの名無しさん
NGNGかわいそうも何も明らかに普通でない質問だろう。
「変な質問」と自覚していて、それでもやりたいというならば、
それこそその理由を述べるべきだ。
0361sage
NGNGvoid func()
{
global_ptr_cHoge = new classHoge; // オブジェクトのアドレスをグローバルに格納
test(global_ptr_cHoge); // テスト用関数
}
0362デフォルトの名無しさん
NGNGclassと指定してるとvc6だと組み込み型の宣言ができない。
組み込み型も宣言したいときはtypenameで指定すればよかったと思われ。
template < typename T> struct bar;
もう解決してるかね?
0364デフォルトの名無しさん
NGNGとネームスペースを一括?指定するのはよくないことなの?
0365デフォルトの名無しさん
NGNG俺は .cpp でやるんなら別にいいと思うが、
.h でやるのはお行儀悪いと思う派。
0366デフォルトの名無しさん
NGNGモミモミ
0367364
NGNGそれはなぜなんでしょう?
0368デフォルトの名無しさん
NGNG名前のバッティングを防ぐためにわざわざnamespaceに入れたのに、それをあえて同じ名前空間にインポートして無意味にしてしまうusingを、複数のソースファイルで共有されうるヘッダーファイルで使うのは問題だろ?
0369デフォルトの名無しさん
NGNG(複数のソースファイルから共有されるという点は別だけど)
0370デフォルトの名無しさん
NGNG>複数のソースファイルから共有されるという点は別だけど
これは重要な違いだと思うがね。
まぁ、それでも using が嫌いという人がいるのも分かるし、
usign 使わないのを止(と)めようとは思わんが。
0371デフォルトの名無しさん
NGNG> (複数のソースファイルから共有されるという点は別だけど)
大きなポイントじゃないすか? 衝突の可能性を広い範囲に作っちゃうのは
やっぱ怖いというか、安心できないですよ。
自分(cppファイル)の中だけで「曖昧だ」とかコンパイラに怒られるだけなら
屁でもないですから。
些細なことかもしれないけど、この程度のことで未来に何かを課したくはないです、俺は。
0372デフォルトの名無しさん
NGNGヘッダファイルは公共の場所、
実装ファイルは家の中などのプライベートな場所、
っていう雰囲気があると思う。
家の中で素っ裸になるのは個人の自由だけど、
表でやったらタイーホの予感。
実装で using を使って怠けるのは自由だけど
ヘッダで using を使うのは(明日の自分も含めた)他人への迷惑をかえりみない行為。
0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGつまりそれは std と boost だけはヘッダで using してもいいという事ですか?
0375デフォルトの名無しさん
NGNGネタです
0376デフォルトの名無しさん
NGNGいや、「わたしかわいいおにゃにょこだからだいじょうぶね♪」といって
ネカマデブ、ババア、破壊的ブスどもが裸で街を跳梁跋扈する闇の時代がくるという予言です。
0377デフォルトの名無しさん
NGNGワラタ
0378デフォルトの名無しさん
NGNGあほ。全然違うだろ。
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG久しぶりだな、半角?くんを半角?くんと呼ぶお前。
つーか半角で?を打つ奴が一人しか居ないと考え
決め付けるお前の浅はかさには閉口してしまうよ?
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNG0385>>378
NGNG0386デフォルトの名無しさん
NGNGスコープ内でusing使ってください。
あと名前のバッティングなんて別に怖いもんでないような?
エラーが出たら一括に名前付けて置換すりゃーいいんだし。
0387デフォルトの名無しさん
NGNG>>369読んで出直して来い。
>>384
ありがと。
そんな2週間も前のやつにレスしてたのか。
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNGシグネチャがほとんど同じだどエラーが出なくて通ってしまい、
挙動のおかしさ悩むこともある
0390デフォルトの名無しさん
NGNGC++で作った関数をC言語プログラムに組み込む方法はないでしょうか?
0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNG#if cplusuplus
extern "C"
{
#endif
void MyCPlusPlusFunc(void);
#if cplusuplus
}
#endif
どぞー
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNG__cplusplus をデフォルトでサポートしてくれているコンパイラが殆どなので、
__cplusplus と書いておいた方が楽っぽ。
あと、#ifdef な。
0395デフォルトの名無しさん
NGNG__cplusplusは規格で必要とされている。
0396デフォルトの名無しさん
NGNGあ、ホンマや。
昔は規格外だったと思ったけど。
199711L で定義されてるってことは、
1997 年 11 月の規格で導入されたんだろうな。
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNGC で
#define __cplusplus (0)
と定義されたらやヴぁくない?
0399デフォルトの名無しさん
NGNG#define __cplusplus (1)
と定義され(ry
0400デフォルトの名無しさん
NGNGエラー
0401390
NGNG#endif
でできました。ありがとうございます。
0402デフォルトの名無しさん
NGNG例えばデストラクタの使用で、
...
Test::~Test(){
printf("%d",0);
}
...
Test *t;
t = new Test();
for(int i=0;i<100;i++) delete(t);
これで0が100回出力されてしまうのが謎です。
tが指しているオブジェクトは1回deleteを行った時点で
破棄されているはずじゃないのでしょうか?
どうして100回デストラクタが働くのでしょう?
0403_
NGNG0404デフォルトの名無しさん
NGNG自分で責任を持たないといけない。以上
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG例外対策にはほぼ確実に必要だし。
0408402
NGNGえーと、つまり
こんなふうにdelete100回書いちゃっても問題ないのでしょうか?
それともこの場合たまたま0が100回出力されただけで
2回目以降は偶然って考えのほうがよいでしょうか?
うーん、Javaよりむずい。
0409デフォルトの名無しさん
NGNG> こんなふうにdelete100回書いちゃっても問題ないのでしょうか?
大問題。
0410デフォルトの名無しさん
NGNGそれがいやならdelete後に0でも代入しておくという手もないではないが、
複数回deleteが呼ばれうるという時点で設計が間違ってる。
メンバ変数に触らない非仮想のメンバ関数はthisの値がどうなっていてもエラー
にならないことが多いから動いているように見えただけ。
0411デフォルトの名無しさん
NGNGメモリ解放処理がなぜエラーにならないか無気味だな。
0412デフォルトの名無しさん
NGNGinline void safe_delete(T*& ptr ){
delete ptr;
ptr = 0;
}
0413デフォルトの名無しさん
NGNG↓
デストラクタも無くなった
↓
無くなってるはずのデストラクタが呼ばれる
↓
なんで???
って疑問なんじゃないの?
0414デフォルトの名無しさん
NGNGデストラクタなんぞ、
メンバ変数(仮想関数テーブル含む)使わん限り
普通の関数と大して変わらんじゃんかよ。
0415402
NGNGそういうことです。
>>414
なるほどと思って
別の関数を作ってdeleteした後に呼んでみた、すなわち
for(int a=0;a<10;a++)
delete(t3);
printf("%d\n",t3->test2());
これでもエラー起きないんだね。
deleteってのは振る舞いを未定義にするだけで
解放するって認識はやめたほうがいいのかな・・・
0416デフォルトの名無しさん
NGNG違う
一度削除されたオブジェクトへのアクセスは未定義だから、
プログラムがクラッシュすることもあれば、
突然ディスプレイが火を噴くこともある。
アドレス帳の全メアドに添付ファイルつきメールを送りつけることもある。
もちろん一見うまく行っているように見えることもある。
0417デフォルトの名無しさん
NGNG資源の解放という認識でいいと思うけど。
0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNG動作を確認してみようという姿勢は悪くは無いが。
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNGこういう奴は「NULLをdeleteしても問題ないから」と考えるかもしれない。
0424デフォルトの名無しさん
NGNG残骸のアドレスは空き領域で、再度開放は単にこっそり失敗してるだけだろうな。
デストラクタ自体は単なる関数だからオブジェクトがいなくなっても消えないが。
...もしデストラクタが仮想関数だと少し事情が違うかもしれないが
これも呼び出し時点で対象オブジェクトのクラスが明らかな場合は
最適化で直接呼び出しになってるかもしれんか。
0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNG2回目以降は例外投げてくれるのとどっちがいい?
前者の方が楽だけど、後者の方が鬱陶しい代わりに
バグの温床を早めに発見できるので。
0428デフォルトの名無しさん
NGNGどっちも使わないのが良い。
ポインタなんて複数箇所から同じオブジェクトを指すんだから、一箇所だけ0クリアしたって焼け石に水。
でもそれをわかった上で使うなら前者がいいと思う。
複数回deleteするかもしれないからこそわざわざsafe_delete使うんだし、それがダメなら自分でチェックすれば良い。
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGなるほど参考になります。
そうすると下手に自作するより、Boost等のスマートポインタが
うまくやってくれるのに任せるのも安全&&楽ちんで良いですね。
0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNGdelete p;
.
ヒープを扱う処理
.
delete p;
みたいに、間をおいて実行すると、すごいことになる予感。
0433デフォルトの名無しさん
NGNG機能に不満があったら自作することもできるし。
選択肢が多いのはいいことだと思う。
0434デフォルトの名無しさん
NGNG勉強用としてはね。
実用としては悪いことになりえる。
0435デフォルトの名無しさん
NGNG馬鹿じゃねぇのか?
お前はBASICでも使ってろ。選択肢少ないぞ
0436デフォルトの名無しさん
NGNG基礎の部分で多いのは困るぜ。
たとえばライブラリごとに使ってるスマートポインタが違かったりする。
コンテナにしてもSTLがあるにもかかわらずATLやMFCは独自のコンテナを持ってる。
0437デフォルトの名無しさん
NGNGクソと言われてもしかたないよ。
0438デフォルトの名無しさん
NGNGATLは言語に依存しないCOMのため。
MFCはSTLがVC++にまともに搭載される前からのもの。
0439デフォルトの名無しさん
NGNG少ない方がいいとはいわんが
必要ないものはいらん。
0440デフォルトの名無しさん
NGNGどこが?
0441デフォルトの名無しさん
NGNGいつもの荒らしだろ
放置しろよ。
0442デフォルトの名無しさん
NGNG例えば文字列ですかね>応用
C由来 : char*, wchar_t*
C++由来 : std::string, std::wstring
SourcePro由来 : RWCString, RWWString
Xerces由来 : DOMString, XMLString
Xalan由来 : XalanDOMString
ICU由来 : UnicodeString
SGI由来 : std::rope
MFC由来 : CString
0443デフォルトの名無しさん
NGNGVCの不満はマイクロソフトに言え
C++に文句言うのはお門違いだ
0444hoge
NGNG(*hoge)->hoge_f
って()で囲んで*つけると普通の構造体参照とどう異なるの?
0445デフォルトの名無しさん
NGNGhogeはstruct tag **hoge
ここまで言えば分かるでしょ。
0446デフォルトの名無しさん
NGNGの間違いじゃないのか
0447hoge
NGNGポインタのポインタを指す場合は()で囲んで*をつけるのですね@@;
ありがと
0448デフォルトの名無しさん
NGNGそれならhoge->hoge_fとかくだろ
0449_
NGNG0450教えてください
NGNG波形の高い部分を見つけ、それをテキストに変換し保存するプログラムが分かりません。
どなたか、教えてくれませんでしょうか?
参考URLなどご存知でしたらお願いします。
せめて、WAVEデータをテキスト変換するプログラムを教えてください。
お願いします。
0451デフォルトの名無しさん
NGNG0452教えてください
NGNG0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNGテキストに変換、の意味がわからん
音声認識じゃないだろうし
0455教えてください
NGNG音声認識です。
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG{
printf(str, ...);
}
可変個数で受け取った引数を、さらに別の関数の可変個数の引数として
渡すことってできますか? ↑のような感じに。
0459デフォルトの名無しさん
NGNGvoid myprintf( const char* str, va_list args ) { ... }
void printf2(const char *str, ...)
{
va_list args;
va_start( args, str );
myprintf(str, args);
va_end( args );
}
とかなんとか。標準(だったけ?)ライブラリにvprintf関数
ってのがあるから、そのソース見るとかすればわかると思う。
0460459
NGNGそっちに va_list を渡せばいい。そういうのが用意されてないと、無理。
0461デフォルトの名無しさん
NGNG__declspec(naked)
void printf2(const char* str, ...)
{
__asm {
jmp printf
}
}
0462163
NGNGoffsetof@cstddef が引数として受け取る型は、
POD structure か、 POD union だと規格に書かれていました。(18.1 -5-)
やっぱりC++の規格は、非POD型オブジェクトについて何か想像を絶するメモリレイアウトを受け入れる余地を
意図的に残しているのだろうか?誰か知らないですか?
0463hoge
NGNGの&ってどういう処理?
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNGビットAND
0466デフォルトの名無しさん
NGNGC では () が付くと関数というルールがあると思うけど、上のはどう解釈すれば良いのかな?
0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNGコンストラクタが「インスタンス名()」って変なの。
0469hoge
NGNGありがと^^
ちなみに sig = (num < 0)
はnumが0未満だったらsigに代入するって事?
0470hoge
NGNGハイビットセット処理って何?
0472デフォルトの名無しさん
NGNGえ??
std::string型のspacesを定義してコンストラクタには(10,' ')を渡すんだと思っていたけど違うの??
0473デフォルトの名無しさん
NGNG下のコードの sharp(10, '#'); の部分ってどう理解したら良いのやら検討が付きません。
sharp は変数名なのに引き数を取っている?
#include <iostream>
#include <string>
int main()
std::string sharp(10, '#');
std::cout << sharp << std::endl;
return 0;
}
0474デフォルトの名無しさん
NGNG0475デフォルトの名無しさん
NGNGそういう仕様だからしかたないんだよね・・・・
どうしても気になるならstd::string sharp=std::string(10, '#');と書きなよ。
std::string sharp(10, '#'); は上記の省略形。
0476デフォルトの名無しさん
NGNGコンストラクタはその型のインスタンスが構築される際に働く関数で、
変数の定義時に変数名の右に引数を書いて渡すのは、まぁ、そういう決まりってこと。
ちなみにintとかの組み込み型でも
int hoge(100);
っていう書き方ができるよ。この場合はint型の変数hogeを100で初期化してる。
0477476
NGNG0478デフォルトの名無しさん
NGNGレスありがとうございます。
今まで色々な言語を見てきましたが、難解ですね。ある変数を初期化、代入するのには型、変数名、
初期値があれば良いと言うのは分かりますが、「型 変数名(初期値)」という構文は脳が異次元に
ワープしそうです。
0479デフォルトの名無しさん
NGNGそれのどこが難解なんだよ。本当に色々な言語を見てきたのか?
つーか難解さで言えば関数ポインタ型の変数の方がもっと上だろ。
0480デフォルトの名無しさん
NGNG× 型名 変数名(初期値);
○ 型名 変数名(コンストラクタへ渡す引数のリスト);
だ。あと、std::string(10, '#') なんかも
型名(コンストラクタへ渡す引数のリスト)
とそのまんまに解釈すべき文であって
コンストラクタ関数(コンストラクタへ渡す引数のリスト)
という意味ではないので誤解せん方がよい。
() が関数呼び出し、という固定観念から離れた方がいいと思うが、
まあ、関数と紛らわしいってのはその通りで、
string s( istream_iterator<char>(cin), istream_iterator<char>() );
と書いて変数定義をしたつもりが関数の宣言とみなされて困ったりはするのだが。
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNG具合に引数つきコンストラクタで初期化したクラスで値を返すとします。
このとき、Class1の実体が保持されているタイミングはどこまでなのでしょうか。
0483デフォルトの名無しさん
NGNG関数内まで。
というか、エラーも警告もなしにコンパイル通る?
0484デフォルトの名無しさん
NGNG警告を出してくれないコンパイラも困りものだが、
これでエラーがでたらそれはコンパイラのバグ。
0485デフォルトの名無しさん
NGNG非 const の場合、g++ だとエラーになったよ。
0486デフォルトの名無しさん
NGNG確かにこの場合、非 const だとエラーにはなるだろうが、
それは右辺値・左辺値の問題なのでオブジェクトの寿命の問題とはまた別。
0487デフォルトの名無しさん
NGNG複数あるクラスのデータを、基本クラスのtypeプロパティを読み込んで
switchで派生クラスのデータをそれぞれ書いてるんだけど、
なんか、あまり綺麗じゃないんです。
ちなみに、基本クラスから派生しているクラスは5種類くらいあって
中身がそれぞれ違うんで、switchみたいなの使わないといけないんですが
なんか他にいい方法ないですかね?
0488_
NGNG0489デフォルトの名無しさん
NGNG元クラスを弄れないと仮定して、MixJなら楽勝なんだが…Visitorかな?
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNGとりあえず、Visitorで検索したけど、
これで、いいんですかね?
http://member.nifty.ne.jp/yamazaki/doc/cpp_design_pattern.html#Visitor
>>490
それ、書き込んだ後に思いつきました。
とりあえずやってみます。
0492デフォルトの名無しさん
NGNGいや、だから寿命の話じゃなくて
エラーがでないってことはないよってことで...。
0493hoge
NGNG構造体を格納してその後にprintfで内容を出力、
実行するとprintfの所で
Segmentation fault (core dumped)
gdbでデバッグしてみると
#0 0x610ba041 in strlen () from /usr/bin/cygwin1.dll
で落ちている...
strlenで落ちる(しかもprintf)のはどうしてでしょうか?
0494デフォルトの名無しさん
NGNG訳が分からんが、普通strlen()で落ちるのは'\0'がないからでは?
0495hoge
NGNG返答ありがとう^^
調べたのですが多分\0がないからと思います。
なぜならcharに数値を代入しているみたいです(こんな事ありえますか?)
0496デフォルトの名無しさん
NGNG一体どんな状況なんだ?
0497hoge
NGNGcharで定義されたs_ptに数値が代入されている恐怖の構造体みたいっす
最初は構造体の宣言に沿ってprintfの書式を決定していたのですが...w
0498デフォルトの名無しさん
NGNGまぁ、その場合は普通 singed か unsigned か付けるけど、
0 〜 127 しか扱わんなら問題になることはまれだと思う。
それにこれは C じゃないのか?
0499hoge
NGNGゴメ C言語なら俺に聞け! Part 62 が適当でしたね^^;;
charの謎が解けました^^;ありがと
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNG下のコードで、メモリは正常に解放されるのでしょうか?
int* np;
np = new int;
void* vp = np;
delete vp;
0502デフォルトの名無しさん
NGNGそのコードがうまくいったとして、
void*をdeleteすんのはまずいだろ
0503デフォルトの名無しさん
NGNGメモリは正常に解放されることが多いと思うが、未定義かな。
あと、デストラクタがある場合はデストラクタが呼ばれなくなってしまう。
delete をオーバーライドしてた時も、それが正常に呼ばれなくなってしまう。
ってところか。
まぁ、兎に角そんなことはすんな、と。
何をしたいのか分からんが、
テンプレートを使ったら良さそうなことを
したがってるような気がする。
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNGレスありがとうございます。
動的に確保したいろいろな型のメモリアドレスを
リストかなんかで 持って置いて、あとで全ていっぺんに
解放できるかどうかためしていました。
void*で デストラクタが呼ばれないんじゃ使いもんにならないですね。
0506デフォルトの名無しさん
NGNGPOD 型だけなら大丈夫なのか?
デストラクタないし。
規格じゃどうなってる?
0507デフォルトの名無しさん
NGNG素直にスマートポインタを使ったほうがいいかと
0508デフォルトの名無しさん
NGNGこれってどういう意味?
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNGstruct X
{
X (int i = 0) : m_i(i) { }
int get() const { return m_i; }
int m_i;
};
で、どういう意味?
0511デフォルトの名無しさん
NGNG引数を指定しなかった場合iは0になります。
0512デフォルトの名無しさん
NGNG510じゃないが、そういう意味なのか。わかりにくいな・・・
X (int i = 0){m_i=i } これじゃだめなのか
0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNG初期化リスト( コロンから { まで )で書かれたものは初期化になるが
コンストラクタの関数ブロック内( { から } まで )に書かれたものは
普通のコードとして処理され、代入文は初期化ではなく代入になる。
int相手なら違いは無いが、メンバ変数がクラスインスタンスならこの違いが
いろいろ問題になることがある
0515512
NGNGintと書いてあったからintでしか考えていなかった。
0516デフォルトの名無しさん
NGNGあと、m_i が const だとこの構文が必須。
0517デフォルトの名無しさん
NGNG当方、solaris環境でプログラムを作っております。
すると作ったプログラムが、動かすマシンによって動作が異なるのです。
具体的には、Blade100なら問題なく動きますが、Ultra2だとたまーに
Bus Errorにてあぼーんです。
OSはSolaris8ですが、両マシンともリビジョンは同じ。環境も同じ。
違うのはOBPのバージョンくらいでしょうか。
プログラムはマルチスレッドとDBアクセスを実装してます。
なにか、ここが怪しいみたいなことありませんか?
0518デフォルトの名無しさん
NGNGcore拾ってデバッグしなはれ
0519517
NGNGcore吐かないのでしゅ
0520デフォルトの名無しさん
NGNGおまいのプログラム
0521デフォルトの名無しさん
NGNGulimitみたいなのはないのか?
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNG意外だろ?w
0525デフォルトの名無しさん
NGNGhttp://www3.free-city.net/home/akipon/page001.html
0526デフォルトの名無しさん
NGNGstructとして宣言してるのに、クラスとして扱えるんですか?
構造体ってメンバ関数なんて搭載できたっけ?
0527デフォルトの名無しさん
NGNGclassとstructの違いはデフォルトのアクセス指定子だけ。
(class=private, struct=public)
0528デフォルトの名無しさん
NGNG細かい事言うと、
template<class A> ...
はできるけど
template<struct A> ...
はできないという違いもある。
0529デフォルトの名無しさん
NGNGclass 〜 と typename 〜 両方を使えるようにしたのはどういう意図があるのかな?
教えて偉い人。
0530デフォルトの名無しさん
NGNGclass じゃないものにも class を使うのもなんだってんで
後から typedef を仕様に加えた、ってんだったと思う。
細かい事言うと、
テンプレート引数にクラステンプレートを使う場合には
class しか使えない。
例)
template<template<typename T> class C> .... // OK!
template<template<typename T> typename C> ... // Illegal!
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG> class しか使えない。
こっちは、classじゃないものは型テンプレートにできないからそのまんま、
ってことなんだろうなあ。……と思ったけど、もし将来的にtypedefテンプレートが
規格に入ったら、typenameも使えるようになったりするのだろうかね。
template<typename T> typedef T size255array[255];
template<template<class> class> TCls {};
TCls<size255array> ...;
0533デフォルトの名無しさん
NGNGcstdioヘッダはstdio.hをstd名前空間に移したもの。っていう認識でいいんですかね?
標準 C++ ライブラリには、Cの標準ライブラリも含まれるんですか?
それで、C++ソースでcstdioを(っていうかCの関数ライブラリを)利用することは
なんの格好悪さも無い。という認識でいいんですかね?
0534デフォルトの名無しさん
NGNGとは言えんけど別にいいんじゃないかな。
0535デフォルトの名無しさん
NGNG字も違うよ!!!
0536デフォルトの名無しさん
NGNGクラスのメンバとしてこの様に宣言したら、警告がでたんですけど。
何がいけないんでしょうか?
0537デフォルトの名無しさん
NGNGコレだけの情報じゃ和歌欄
0538536
NGNGd:\program files\microsoft visual studio\vc98\include\vector(39) : warning C4786:
'std::vector<std::vector<CEnmMissile *,std::allocator<CEnmMissile *> >,std::allocator<std::vector<CEnmMissile *,std::allocator<CEnmMissile *> > > >::vector<std::vector
<CEnmMissile *,std::allocator<CEnmMissile *> >,std::allocator<std::vector<CEnmMissile *,std::allocator<CEnmMissile *> > > >' :
デバッグ情報で識別子が 255 文字に切り捨てられました。
d:\program files\microsoft visual studio\vc98\include\vector(60) : warning C4786:
'std::vector<std::vector<CEnmMissile *,std::allocator<CEnmMissile *> >,std::allocator<std::vector<CEnmMissile *,std::allocator<CEnmMissile *> > > >::~vector<std::vecto
r<CEnmMissile *,std::allocator<CEnmMissile *> >,std::allocator<std::vector<CEnmMissile *,std::allocator<CEnmMissile *> > > >' :
デバッグ情報で識別子が 255 文字に切り捨てられました。
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNGお前プログラマ向いてないよ。今すぐそのソース消してやめちまえ。
普通warning C4786でドキュメント見るか検索するだろ。
0542デフォルトの名無しさん
NGNG>なんの格好悪さも無い
格好悪いけどどうしようもない時はある。
(プログラムの終了処理をメッセージ出力しながらデバッグしている時は
std::cout などがもうデストラクトされてて printf 系を使うしかなかったりする)
あくまで補助、あくまで利便と互換性の為。
0543デフォルトの名無しさん
NGNG「push_backに一時変数を使っている」というような警告が出ます。
しかし、これは警告の方がおかしいのではないでしょうか?
仮想関数を持たないクラスなら、こんな警告はでません。
それとも、なんか勘違いしてるでしょうか。どなたかお願いします。
#include <iostream>
#include <vector>
using namespace std;
class Hoge{
public:
virtual void func() const = 0;
};
class SubHoge : public Hoge{
void func() const{};
};
int main(){
vector<Hoge*> v;
v.push_back(new SubHoge());
}
0544デフォルトの名無しさん
NGNGテンポラリオブジェクトを渡すことは規格では可能
(例えば const int& に 4 とかを渡して構わない)。
この規格がいつ追加されたか分からないけど、
BC++ がこの規格に対応してないってことだけは確かみたいだね。
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNGBC++ 5.5 は古いからなぁ。
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNG暗黙に一時変数が作られてるっていう警告だよ。確か。
0549デフォルトの名無しさん
NGNG>暗黙に一時変数が作られてるっていう警告だよ。確か。
よくわからんのだが、それは悪いことなの?
0550デフォルトの名無しさん
NGNG関数の値返しでは普通の方法。
通常bcc32でその警告は非const参照で一時変数を
参照する(標準規格外の利用)時に出るんだが
なぜそのプログラムでも出るのか不明
0551デフォルトの名無しさん
NGNGこれに警告を出すというのがちょいと気になるところではあるけど...
多分対応してくれてると思う。
0552デフォルトの名無しさん
NGNGcl(VC7)もそう。gcc2.95はコピーを作らなかった。
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG不思議でつ。
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNGビンゴ!
あんたは偉い!
しかし、文法的には、それでも間違いではないよねえ。
なんで警告出すんだろ。
0557デフォルトの名無しさん
NGNG今、近くに環境がないんだけど、clでやるとうじゃうじゃ警告が出るのに、
IDEでやるとうそのように警告0になるってことない?
俺はSTLがらみでよく経験したような気がするんだが。
0558デフォルトの名無しさん
NGNGふーん。そうなんだ。キャストじゃなくてポインタの一時オブジェクトなのか。・・・うーん。
0559デフォルトの名無しさん
NGNGコンパイラが古いからじゃね?
0560デフォルトの名無しさん
NGNG> 一時変数を参照していることを意味する警告です。 ←BCBのヘルプ
おまいが渡したと思った変数の参照は、実は渡されて無いぞ!ってことかな。
仮に受け取った関数側でconst外してNULLとか代入しても(そんなことしないだろうけど)、
それはコピーだからコピー元は変更されてないぞと。
0561デフォルトの名無しさん
NGNGそれで問題ないんだけどね。
0562デフォルトの名無しさん
NGNGが、年の離れた兄貴のいる加戸は
「ヤッターマンコーヒーライター」
などという言葉を知っているいわば勇者的存在であった。
で、穴があることを知った俺たちだが、どうしてもそれが信じられない。
で、むしろ逆にガキであることを利用して調べようと思った。
ターゲットは音楽の教師である。美人だった。今にして思えば
20歳くらいだったのではないだろうか。短大出てすぐだったように思う。
実行はいたって単純。ガキ特有のカンチョーというあれである。
あれを前に突き刺すというのだ。
ガキなら許されるであろうという勝手な発想だが、
たしかにマンコすら知らない奴がほとんどだったからナイスな判断だったろう。
で、実行は加戸だった。
加戸はなんの躊躇もなくやった。
思い切り。
思い切ってやっちゃいかんだろ、と思った。なぜにおまえはフルパワーなのだ、と。
音楽教師は泣いた。20歳前後という年齢を考えればギャグでもきつい。
ガキからすれば大人だったのだが、今思うと娘だ。
むしろ、処女だった可能性すらある。すまん先生。
が、加戸も泣いていた。
両手人差し指骨折だった。第2関節より下で折れていた。
もろに刺さったんだと感心した。やはり勇者だ。
しかも、救急隊員に、マンコに指が刺さって折れましたと泣きながら事情を説明していた。
あの姿も相当かっこよかった
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGv.push_back(a);
としても、aの参照じゃなくて、aのコピーの参照が渡されるって話。
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNGコピーされるわ。
0571デフォルトの名無しさん
NGNGなぜその警告が出るのかが分からない
0572デフォルトの名無しさん
NGNG俺も
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGrvalueをconst参照する時は一時変数が作られることになっている
0575デフォルトの名無しさん
NGNG>>565
>aの参照じゃなくて、aのコピーの参照が渡されるって話。
は、少し変だと思う。
SubHoge*であるaが直接、参照Hoge*&が渡されるか、
Hoge*にキャストされたものが渡されるんだよね。
(正直よくわからんのだが。)
キャストで内部的にコピーを作ることがあるのかもしれないが、
絶対コピーされるということはないんでは?
0576575
NGNG○参照Hoge*&に
鬱。
0577デフォルトの名無しさん
NGNGコンパイラ依存の挙動をここで語るべきではないと。
a = b;
のような代入ですらコンパイラによっては最適化で消滅してしまうのだから何も言えなくなってしまう。
0578デフォルトの名無しさん
NGNGそうなんだ。ごめん。ちゅうことは、処理系依存じゃなくて規格で決まってるのか。
それじゃ確かに警告はおかしいね。
0579575
NGNGまあ、つまり、俺も
>コンパイラ依存の挙動をここで語るべきではないと。
と言いたかったんだが。
それで、「コピーされる」は規格にはないのでは?と。
(これは>>578と同じ趣旨かな?)
なんか難しくなりすぎたな。
>>543はどっか逝っちゃったか?
0580543
NGNGでも、びびってちびりそうです。
>>543で書いた「仮想関数を持たないクラスなら」って大嘘でした。
継承関係がある場合、同じ症状がでるようです。すみません。
それと、VC7(コマンドではなく)でやったら、警告は出ないという
話を友人から聞きました。未確認ですが。
もうROMになります。
0581デフォルトの名無しさん
NGNGさしあたって、Embedded C++ です。泣けます。
0582デフォルトの名無しさん
NGNG>泣けます。
しみじみ。
ということで、誰か助けてやってくれ。
0583581
NGNGありがとう。
Embedded C++ って、破綻してるような気がしてきた。
コンストラクタの失敗を伝える唯一の手段を削っておいて、
代替手段はどうするつもりなんだろう。
0584デフォルトの名無しさん
NGNG...
public:
static PossiblyFail* Create() {
PossiblyFail* p = new PossiblyFail;
if( FAILED == p->Init() ) { delete p; return 0; }
return p;
}
};
か、あるいは
class ShippaiSurukamo {
...
public:
ShippaiSurukamo() {
...
m_bSuccessFully_Constructed = 異常なし?true:false;
}
operator bool() const {
return m_bSuccessFully_Constructed;
}
}
として if( ShippaiSurukamo obj ) { ... } else { /*エラー処理*/ } か、
じゃないか?よくある手としては。
0585デフォルトの名無しさん
NGNGC++のテンプレはよくは知らんので勘違いだったらすまんが、
引数渡しの方法がどうこうとか、push_back(arg)が引数の更に
コピーを登録しているとかなんて問題じゃなくて、543のコードは
実際不味いだろ。
v.push_back(new Hoge());
の v.push_back()の引数にオブジェクトそのものじゃなくて、newで
生成したオブジェクトへのポインタを渡しているが、メイン側では
そのポインタをどの変数でも受けてないだろ。
コンパイラはポインタを渡している関数の素性や、その先でちゃ
んとpop、delete しているか迄は関知しないから、プログラム的に
は、参照が残るがどうか分からない行方不明候補のオブジェクト
が生成された事になる。
(要は、 new Hoge(); ってのを単体でやっているのと同じ状態)
だから、「本当にいいんかい、ワレ? テメェ、この関数はちゃんと
先で責任取っているんだろうな?」ってワーニング出しているんだよ。
ワーニング吐く吐かないは、単なるワーニングレベルオプションの
設定の違いかと思われ。
0586デフォルトの名無しさん
NGNGその理屈だと new Hoge(); と書いたら同じ警告が出ることになるのかね?
0587デフォルトの名無しさん
NGNG> ポインタをどの変数でも受けてないだろ。
vが受け取ってるだろ
0588デフォルトの名無しさん
NGNG0589デフォルトの名無しさん
NGNG申し訳ないが、でたらめかと。
0590デフォルトの名無しさん
NGNGん?これでたらめじゃない?
0591デフォルトの名無しさん
NGNGおっとこいつぁでたらめだ。
0592hina ◆IqUyIbTXck
NGNG__int64型の数字を%dで二つ入力すると二つ目の数が0になります。
char buf[32];
__int64 iTest1 = 30000, iTest2 = 20000;
sprintf(buf, "%d\t%d\t\n", iTest1, iTest2);
ちなみに環境はVC++.NET
0593hina ◆IqUyIbTXck
NGNG0594デフォルトの名無しさん
NGNGintが4バイトなら当然かと。
一番目の%dでiTest1の4バイト分をintとして表示し、二番目の%dで残りの4バイト分をintとして表示するんだから。
0595デフォルトの名無しさん
NGNGsprintf(buf, "%I64d, %I64d", iTest1, iTest2);
0596594
NGNG0597hina
NGNG釣りではないんですが、intの他にdoubleぐらいしか指定できなかったもので・・。
この場合はdoubleを指定すればいいんでしょうか
0598デフォルトの名無しさん
NGNG自分でミスっといてコンパイラやライブラリのせいにする奴。
0599デフォルトの名無しさん
NGNGはぁ?変換指定子のことか?
それなら595が%I64dと書いているだろ。__int64も含め移植性は低いが。
0601デフォルトの名無しさん
NGNGバージョンは?
VS.NETのヘルプには書いてあります。
0602hina
NGNG↑ここみてました
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/ja/vclib/html/_crt_format_specification_fields_.2d_.printf_and_wprintf_functions.asp?frame=true
0605デフォルトの名無しさん
NGNGAのグローバルなインスタンスのコンストラクタよりも先に呼ばれることは
保証されているんでしょうか?↓こんな感じです。
class A{
static int m_val;
public:
A(){/*m_valを参照するようなコンストラクタ。m_valが初期化されている必要あり。*/}
};
int A::m_val = 0;//スタティックメンバの初期化
A a;//グローバルインスタンス
int main()
{
//処理
}
一応、上のコードでテストしたらうまくいっているようなのですが、本当にいつでもうまく行くか
よく分かりません。
教えてくださいスゴイ人!
0606デフォルトの名無しさん
NGNG#define STRICT
#include <windows.h>
#include <vector>
class nurupo : public IUnknown
{
public:
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, void **);
ULONG STDMETHODCALLTYPE AddRef();
ULONG STDMETHODCALLTYPE Release();
};
std::vector<IUnknown*> mona;
HRESULT fucktory()
{
mona.push_back(new nurupo);
return S_OK; // ( ´_ゝ`)< ふーん
}
0607デフォルトの名無しさん
NGNGグローバル変数&関数外のスタティック変数は忘れれ。
仕様としてあるだけでどっちも使い物にならん。
スタティック関数を使ってシングルトンにしな。
0608デフォルトの名無しさん
NGNG結局どうするのが正しい(安全)んだろ?
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNGインスタンス生成でちゃんとロックしとけばええんでないの?
0611581
NGNGありがとう。
コンストラクタの失敗に関する問題を中心に話し合った結果、
Embedded C++ しか使えないのであれば、むしろ C のほうがマシという結論に至りました。
ぐぐって見つけた↓のような個人的な見解は的を得ていると思う。
「彼らは『実装するのが難しい』という判断に基づいて勝手な制限を提唱している」
(ttp://gcc.gnu.org/ml/gcc/1998-12/msg00984.htmlより、意訳)
仕様を決めたのは誰だろうと見てみれば、これ、日本の企業が主導してたんだな・・・
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNG環境に依存するのでココで聞いても無駄
0614デフォルトの名無しさん
NGNG○的を射る
○当を得る
0615デフォルトの名無しさん
NGNGEmbedded C++ とやらがどんなもんかはよー分からんが、
C でできることは C++ でできるんだから
わざわざ C にすることはないんじゃないの?
0616デフォルトの名無しさん
NGNG> 文例
> この作品に対する彼の批評は的を得たものとはとうてい言いがたい.
> I really must say that his criticism of this work is wide of the mark.
> New College Japanese-English Dictionary, 4th edition (C) Kenkyusha Ltd. 1933,1995,1998
時代の流れです
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNGその辞書だけだろ。
0619581
NGNGあぃ、すんません。
>>615
基本的には、C++のフル仕様から以下のものを削除したものになります。
mutable・例外・実行時型情報・template・namespace・
多重継承・仮想継承・C++スタイルキャスト・
wchat_t・long double・ファイル操作・ロケール
C++プログラムとして相当中途半端なソースにならざるを得ないのです。
特に痛いのは、例外・templateですね。
これが有るのと無いのとでは根本的なソースの書き方が違ってしまいます。
うーん、それでも、たしかにC++のほうがいい場合も十分多くありますねぇ。
0620デフォルトの名無しさん
NGNGなんだか悲惨そうな話ですね。
組み込み系ってよく知らないんですが、
普通のC++を使うという選択もあるんですか?
>>611を見ただけで、EC++嫌って気がしてきたので。
0621デフォルトの名無しさん
NGNGC から削られた機能がないなら EC++ でいいんじゃない?
C++ として中途半端だろうが、C より組みにくいってことはないやろ。
参照、inline 関数、クラス、bool 。
これがあれば EC++ にも十分アドバンテージあるんじゃない?
例外は昔ながらの goto + bool でいい。
どうしようもなく面倒になる場合は exit してしまったんでいいし。
template はマクロを駆使するか、使わないでなんとかするか、
どうしようもない場合は自前でソースをコンバートするか。
昔は「template は将来のために予約されています」とかヘルプに書いてあったもんじゃー。
Turbo C++ 1.0 ...懐かしい。
0623デフォルトの名無しさん
NGNG0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNG涙目ですね。
でもそれだけ悔しい思いをすればもう間違いませんよね?
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNGストレス発散場になりましたか?
0628デフォルトの名無しさん
NGNG「的を射る」は就職試験とかでも頻出してるのに。
0629デフォルトの名無しさん
NGNGSDKやMFCじゃなくて初心者本で良くあるdos窓のプログラムです。
0630デフォルトの名無しさん
NGNGTCPLの初版で。
0631デフォルトの名無しさん
NGNGオマエラこのスレ的にゼンゼン的を得ない発言だな
言葉として知っていても意味を知らない馬鹿ドモハケーン
>>629
基礎がいったいドコまでを指すのかわかんね
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNGというのも、的を得るからは的を射るとは異なったニュアンスを受けるからだ。
的を射るは要点をずばり突いているという感じだが、的を得るは要点を正しく把握したうえで発言しているという印象を受ける。
つまり誤用ではなく、異なった意味を持つ造語だ。
この場合の「得る」は要領を得るの「得る」と共通するものがあると思う。
0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNG「景品をならべておき、それを鉄砲で撃ち、当たったら景品をお持ち帰り」
の、テキ屋からきている。
この、「鉄砲のタマを当てようとする景品」は「的」に他ならず、
「景品にタマが当たったら、お持ち帰り」なのだから、それは
「的を得る」と表すより他にない。
意味としては、「UFOキャッチャーで品物を巧くGetできて
うれしいね」という状態を表す。
0640デフォルトの名無しさん
NGNG的を射ると同じ意味で使ってるのはおかしいと言ってるんだYO!!
つーかそろそろスレ違いだからやめようぜ。言葉は進化する厨が出てくるし。
0641デフォルトの名無しさん
NGNGUFOキャッチャーに的は有りません。
0642デフォルトの名無しさん
NGNG同じ意味で使っているとどうして分かる?
>641
あるわけねーだろが。比喩なんだからよ。
0643デフォルトの名無しさん
NGNGならラッキーショットだ。
0644デフォルトの名無しさん
NGNG>つーかそろそろスレ違いだからやめようぜ。言葉は進化する厨が出てくるし。
そろそろじゃねーよ馬鹿、てめー自分が再燃さしといて何抜かしてやがる、死ねキチガイ
0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNG0648581
NGNGたしかに言語機能の面だけで比較すればC++に移行するほうがいいです。
でも、現在の環境に特有のデメリット・導入コスト(ここらへんは詳しく説明するつもりはありません)
をあわせて天秤にかけた結果、Cのままでいくことになったわけです。
そして、みなさま、ごめんなさいでした。
0649デフォルトの名無しさん
NGNG0650デフォルトの名無しさん
NGNGまぁ、そういうことならしゃーないわな。
0651デフォルトの名無しさん
NGNG同意。もしtemplateが無かったら俺はC++を支持してない。
JavaやC#の方を支持してるだろうな。
ただ、Cよりかは遥かにマシ。
0652デフォルトの名無しさん
NGNGネイティブコンパイラがメインか否かという大きな違いがあるので、
一概に比べることはできんと思うが、
純粋な言語仕様的にというなら分かる気もする。
C# は魅力的なところも多いけど、
template(generic)が無かったのには落胆した。
generic を追加するという話は聞いたことあるけど、どうなることやら...。
0653スカトロ初心者
NGNG今ひとつポインタについて理解することができません。
そこで、動的オブジェクトの割り当てとその開放について質問させてください。
int *t;
t = new int;*t=1;
t = new int;*t=2;
t = new int;*t=3;
上記のようにして動的オブジェクトを3回割り当てた場合、
ポインタtは一番最後のアドレス(値3が格納されたメモリ)のみ記憶しています。
この状態で、
質問1:
値1や値2の格納されたメモリエリアに簡単にアクセスする方法はありますか?
(言い換えれば、値1や値2のポインタを取得する方法はありますか?)
質問2:
delete t;では値3の格納されたエリアしか開放できません。
値1や値2の格納されたメモリを開放する簡単な方法はありますか?
質問3:
ポインタを使ったポピュラーなデータ構造として「リンクリスト」がありますが、
このデータ構造は上記のプログラムと本質的に同じ部分があると思われます。
つまり、リストの各要素を格納しているメモリエリアに固有の識別名が与えられていません。
(例えば、配列なら、a[0],a[1],a[2]・・・のように、それぞれのメモリエリアの識別ができます)
リストのn番目の要素のポインタや値を簡単に取得する方法はありますか?
また、リスト全体を簡単にdeleteする方法はありますか?
これらの質問の真意は、
確保したメモリについてプログラマはどこまで責任を持たなければならないのか?ということです。
質問2が不可能だとすると、このようなプログラムは「書いても文法上エラーにはならない」が、
やがてはメモリ不足でエラーを起こす「書いてはいけない」プログラムだということになりますよね?
よろしくお願いします。m(__)m
0654デフォルトの名無しさん
NGNGメモリリークという言葉を知っている?
0655デフォルトの名無しさん
NGNG回答2:ない
回答3:ない
0656デフォルトの名無しさん
NGNGstd::vectorを使いなさい
0657スカトロ初心者
NGNGえぇ、意味は知っています。
要するに、これはメモリリークを起こすプログラム例だということですね?
こういうプログラムは書いちゃいけない、と。
>>655
ひゃっほう。
ってことは、リンクリストを削除する場合、
ここの要素をひとつずつたどりながらdeleteしていくしかないわけですか・・・かっふん。
0658スカトロ初心者
NGNG現在はまだ初心者なのでその言葉の意味がわかりませんが、
頭の隅にとどめておきます。ありがとうございました。m(__)m
0659デフォルトの名無しさん
NGNG名前が...まぁいいけど。
回答1:
ない。1 や 2 の格納されたアドレスを保持していた変数 t は
新しいアドレスで書き換えられてしまったので、
1 や 2 の格納されたアドレスにアクセスする手段は失われてしまった。
アクセスしたいなら、そのアドレスを保持するポインタ変数を作るべし。
回答2:
ない。従って、1 や 2 の格納されたメモリエリアはプログラム終了まで永遠に開放されない。
これをメモリリークといって、厄介なバグのうちの1つである。
少量なら気づかないが、ずっとプログラムを実行しておくと溜まり溜まって
メモリを圧迫してしまうなんてこともある。
バグがあることに気づきにくいってところが厄介なわけね。
回答3:
n 番目の要素を得るには、順番に n 回辿っていかなくてはならない。
リスト全体を delete するには、普通に巡回して delete していけばいい。
回答4:(最後の話に対して)
プログラマはきちんとメモリを管理しなくてはならない。
それが面倒な場合、スマートポインタというのを使うことができる。
標準では auto_ptr 、別のライブラリには boost::shared_ptr とかある。
これでも使用法に注意する必要があって、
完全に気にしなくて良いという状態にはならない。
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNG0662デフォルトの名無しさん
NGNG簡単かどうかは、ま、何ともいえないけどサ、、
0663スカトロ初心者
NGNG詳細にありがとうございます。
BASICから入ったせいでしょうか、
そもそも値の保持されている領域になんの名前もついていないことが
今ひとつしっくりこなくて・・・。
回答4に関してはまだ理解できませんが、覚えておきます。
深夜にどうもありがとうございました。
>>660
はい、これも記憶しておきます。
ありがとうございました。
0664デフォルトの名無しさん
NGNGよく見ろ。
> この状態で、
0665デフォルトの名無しさん
NGNGstd::list 双方向リスト
std::deque .双方向キュー。配列とリストを融合したようなもの(要素の追加が楽な配列のようなもの)
std::queue キュー(std::priority_queue というのもある)
std::stack .スタック
std::set 高速探索可能なコンテナ(std::multiset というのもある)
std::map .連想配列(std::multimap というのもある)
std::hash_set ハッシュ表+set
std::hash_map .ハッシュ表+map
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNGよく見ろ。
> 簡単な方法
0668デフォルトの名無しさん
NGNGうむ
0669デフォルトの名無しさん
NGNGenum col{red, black, white};
int a[3];
a[red] = 0;
a[black] = 0;
a[while] = 0;
これはまちがってないのでしょうか。
それならどういう意味なのでしょうか。
0670デフォルトの名無しさん
NGNGa[1] = 0;
a[2] = 0;
0671デフォルトの名無しさん
NGNG教科書でenumの定義を見ました。
確かにそんな感じですが、ほんとうにいいんでしょうか?
なんかenumと整数は違うとも書いてあるんです。
0672デフォルトの名無しさん
NGNGenum col{red=0, black=1, white=2};
とすればいい
0673デフォルトの名無しさん
NGNGenum の普通の使い方だけど。
enum col{ red, black, white, col_size };
int a[col_size];
a[red] = 0;
a[black] = 0;
a[white] = 0;
のように、サイズを enum で定義するテクニックもある。
まぁ、列挙子としては不正な値を1つ増やしてしまうというデメリットもあるけど。
0674669 == 671
NGNGなんとなく、なっとくいきました。
ありがとうございます。
0675デフォルトの名無しさん
NGNGその調子でガンガレ。
0676デフォルトの名無しさん
NGNGenum col{red=0, black, white};
0677デフォルトの名無しさん
NGNG兄貴と呼ばせてください。
0678デフォルトの名無しさん
NGNGstruct IntList{
int i;
IntList * prev;
IntList * next;
};
IntList * pstart=new IntList;
pstart->i=0;
pstart->next=NULL
pstart->prev=NULL;
pstart->next=new IntList;
pstart->next->prev=pstart;
pstart->next->next=NULL;
pstart->i=1;
pstart->next->next=new IntList;
pstart->next->next->prev=pstart->next;
pstart->next->next->next=NULL;
pstart->next->next->i=2;
for(IntList p=pstart;p!=NULL;p=p->next){
std::cout << p->i << std::endl;
}{
IntList p;
for(p=pstart;p!=NULL;p=p->next){
delete p->prev;
}
delete p;
}
手抜きだがこんな感じでポインタ使わないと簡単には実現できないようなものを作ってみるとポインタの理解が深まるかもね
使うだけならstd::listを使うけど
追記:bad_allocとかの例外を考えると素直にスマートポインター使いましょう。
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG固定長か vector ならね...。
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG渡せる配列のサイズが固定という意味で言ったのだが...。
0684デフォルトの名無しさん
NGNG存在するが、配列長が実行時に決まる場合、可変な型が存在しない以上
これをポインタ以外で受け取る方法はない。
結局、サイズが固定でない配列はない。
0685デフォルトの名無しさん
NGNG限って動的型を許すのは出来ないのかね。
int (&a)[n]=new int[n];//動的配列への参照
int *a=new int[n];//標準変換によって合法
それで配列でないnewも参照を返す方がエレガントだ。
int &i=new int;
int *p=&new int;
0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNG#include <iostream>
template <int size>
void func(int (&buf)[size]){
for(int i=0;i<size;i++){
std::cout << buf[i] << std::endl;
}
}
int main(){
int buf[]={0,1,2,3,4,5,6,7,8,9};
func(buf);
return 0;
}
templateスレだと既出っぽ
0688デフォルトの名無しさん
NGNGvoid func (int buf, int size) {
for (int i = 0; i < size; ++i) {
std::cout << buf[i] << std::endl;
}
}
template <int size>
void func(int (&buf)[size]){
func(buf, size);
}
0689デフォルトの名無しさん
NGNGどうせなら template のほうには inline の指定をしとけ。
0690デフォルトの名無しさん
NGNGやさしいC++という本にはインクルードしなければいけないと書いてありました。
環境はVC.NET2003です。
0691デフォルトの名無しさん
NGNGCとしてコンパイルしているだろう?
0692デフォルトの名無しさん
NGNGそういう話をしているんじゃないだろ。
0693デフォルトの名無しさん
NGNGだから「どうせなら」からレスが始まってるんだろ。
0694690
NGNGCとしてコンパイルとはどういうことでしょうか?
0695デフォルトの名無しさん
NGNG>>688等はinlineぐらい知ってるだろ。
今回の話に関係ないから敢えて言及していないんだろうが。
それを何が偉そうに「しとけ」だ。
ようやく自分の知識が生かせると思って意気揚揚とレスしたのか。おめでてーな。
0696デフォルトの名無しさん
NGNGC++としてコンパイルしてても、別のヘッダ経由で間接的にインクルードしてるかも
0697デフォルトの名無しさん
NGNGcstringかstring.hをインクルードしているから
0698デフォルトの名無しさん
NGNGなにこの人キレてんの?
0699690=694
NGNG空のコンソロールプロジェクトを作成した時に自動で作られたファイルだけです。
*.hのファイルはありません。
インクルードしているのはiostreamだけです。
#include <iostream>
using namespace std;
でこの後にmain()関数を書いています。
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNGendl は改行+フラッシュ。
0702デフォルトの名無しさん
NGNGじゃあiostreamが中でインクルードしてるんだろ
0703デフォルトの名無しさん
NGNGこの場合
A::A()
:name( 0 )
{
}
で良いのでしょうか?
0704デフォルトの名無しさん
NGNG1byteってのが謎だ
0705デフォルトの名無しさん
NGNG失礼しましたNullをセットするときになんとなく
口癖でNULL1Byte(=(Null、1Byte))と言ってしまうので。
0706デフォルトの名無しさん
NGNGやっぱり意味わからんが。
NULLポインタは1バイトということはないはずだが。
null文字1バイトを指すポインタということなら 0 ではなく "" と書かねばいかんが
まさかそういう話?
0707デフォルトの名無しさん
NGNGなりますた。
一応突っ込んどくが…
ポインタは1バイトじゃないぞ。
ついでに1バイトのNULLは '\x00'。
0708デフォルトの名無しさん
NGNGNULLと大文字で書いた場合はポインタ。
'\0'はヌル文字であって、ポインタではないわけだが
0709デフォルトの名無しさん
NGNG707の言うNULL(ラテン語)と708の言うNULL(識別子)がかみ合ってないだけと思う。
0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGNULLも\0も0だろ
0712( ● ´ ー ` ● )
NGNG0713デフォルトの名無しさん
NGNGそうなの?
0714デフォルトの名無しさん
NGNGスレが荒れることを狙ったネタレスです。放置してください。
0715デフォルトの名無しさん
NGNG例えば
Hoge::Hoge(int a, int b)
{
aa = a;
bb = b;
}
これを、
Hoge::Hoge(int a, int b)
:aa(a), bb(b)
{}
この様に書けると聞いたんですけど、
Hoge::Hoge(int a, int b)
{
rect.ra = a;
rect.rb = b;
}
この様に構造体を初期化したいときはどうすれば良いんでしょうか?
0716デフォルトの名無しさん
NGNG0717715
NGNGレスありがとうございます。
そのやり方でやってみたんですけど、(構造体のメンバの数が4個なので、引数を4個渡しました)
こんなエラーがでてしまいました。
error C2661: 'tagRECT::tagRECT' : 4 個の引数を持つオーバーロードされた関数はありません。
何でだろう?
0718デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNG脳内語を他人に強制するなよ
0720デフォルトの名無しさん
NGNGtagRECT構造体に4 個の引数を持つオーバーロードされたコンストラクタがないからだろ。
もしVC++でRECT構造体使ってるならCRectクラスに変更すれ。
0721デフォルトの名無しさん
NGNGNUL SOH STX ETX EOT ENQ ACK BEL BS HT NL VT FF CR SO SI
DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
NULは使わなくてもBS,CR,LF,ESCなら使ったことあるだろ。
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNGhttp://www.atmarkit.co.jp/icd/root/67/130299067.html
>また、文字コード場合はNULと表記される
0724デフォルトの名無しさん
NGNGまったく不毛だからその辺でやめとけ
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNG小文字のnullは一般名詞。
0728デフォルトの名無しさん
NGNG普通に NULL と呼んでいないと思うぞ。
terminating null character というときの null は NULL じゃない。
0729デフォルトの名無しさん
NGNGよくみろ。NULLじゃなくてNULL文字だ。
0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGいやまじで聞いているんだが。
1バイトなんて環境は滅多にないだろうが、規格でもそう決まっているのかと。
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNGNULL文字は文字だ。
さてなぜNULLはポインタであると断言できよう。
0734デフォルトの名無しさん
NGNGガッ
0735デフォルトの名無しさん
NGNGNULLポインタはポインタ(当たり前だが)
0736デフォルトの名無しさん
NGNG#define NULL (void*)0
だったから、Cの文脈では明らかにポインタだった。
C++では
#define NULL 0
となったが、
char *p = (void*)0;
がエラーになるから (void*)0 を 0 にしただけで、
気持ちの上ではCのNULLとなんら変わるところはない。
CのNULLがポインタである以上C++のNULLもポインタである。
0737デフォルトの名無しさん
NGNG固定長の関数を関数テンプレートでいくつも作ってるだけじゃん。
inline ならともかく、inline じゃなかったら無駄に関数が大量に作られる可能性があるぜ。
>>695
ということを言いたいんだと思われ。
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNGウワァァァン
0741デフォルトの名無しさん
NGNGvoid foo(int);
void foo(char);
foo(NULL);
NULLはint
0742デフォルトの名無しさん
NGNGJIS X3010 5.2.4.2.1
および
JIS X3010 6.3.4
を参照されたし
規格票を所有すべきであると進言する
0743デフォルトの名無しさん
NGNGstr[end] = NULL;
とするのも、意味論的に間違いではないと思う。
俺はしないけどさ。
ってゆーか
>>741それ悲惨すぎるw
0744742
NGNGだった
逝ってきます
0745デフォルトの名無しさん
NGNGJISか。CみたいにPDFを落とせるかもしれないから探してみよう。
0746745
NGNG0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNGガッ
0749デフォルトの名無しさん
NGNGガッガッガッ
0750714
NGNG0751山崎 渉
NGNG0752デフォルトの名無しさん
NGNGヘルプから探すの苦手なんです(ノД`)
0753デフォルトの名無しさん
NGNGC++第3版
0754デフォルトの名無しさん
NGNG>>753に同意
ど初心者でなくなったら所有しろ
真面目に読むかどうかは別だが
辞書としてイチオシ
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG索引がおかしいせいで、調べたい情報がなかなか出てこない。
0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNGce.sharif.edu/~bateni/download/else/cpp3rd.zip
0759デフォルトの名無しさん
NGNGやっぱりコード(テキスト)領域?
0760デフォルトの名無しさん
NGNGクラス自体にはこれといった場所は無い。
コードはコード領域だし、インスタンスはそれぞれのために割り当てたメモリだし・・
クラス固有なのはtypeinfo, vTableぐらい? これは定数領域かも。
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGデータメンバならデータ(定数)領域
メンバ関数なら実行コード領域という感じですか?
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG和川塚井が鳩口羽_子_が_駒大楽田がつ田池本布金輪反越原の_足川谷嶽が鳥__浜_鳥守空田田
美口安宿谷が元岩_神_原_込前園橋谷谷町山木十高台田銀中台_池台大山原町__蒲_居稲橋空西
園_行__谷郷淵茂谷子_込_______王一番輪__座延_原__塚___上田田谷_荷_港タミ
●――――――●――――――――●●●●●――――●―――――――――――●―――――●●空特
●――――――●――――●―――●――●―――――●――●――――――――●―――――●●特快
●●――●――●――●―●――●●●●●●●―●―●――●―――●――――●●―――●●●快速
●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●各停
←――――――→←――――――――――――――→←→←――――――――――→・←――――→
. ↑ ↑ ↑ ↑ ↑ ↑
. 埼 営 営 東 京 京
. 玉 団 団 急 急 急
. 高 南 池 池 蒲 空
. 速 北 上 上 田 港
. 線 線 線 線 線 線
0765デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/prog/1059814696/
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG母数が大きいと756のようなアンチの数も比例するが
TCPL3は辞書としての使い勝手は悪くない
現に漏れがそういう使い方をしている
別な話バイブルや規格票は良し悪しに関係なく用意すべき
TCPLが\7Kくらい、ISO/IEC14882は\30Kくらいするが
完全に遊びならともかく「ちゃんと」取り組むなら
やむを得ない出費と割り切るべし
0768752
NGNGとは本の名前でしょうか?検索しても書籍名として出てきませんでした。
0769デフォルトの名無しさん
NGNG使い分けあるんですか?
0770デフォルトの名無しさん
NGNGhttp://www.jsa.or.jp
0771デフォルトの名無しさん
NGNGwww.rgai.hu/~beszedes/munka/ISO+IEC+14882-1998.pdf
0772デフォルトの名無しさん
NGNG0773デフォルトの名無しさん
NGNG{
T a[N];
public:
T* get(); // a の中のある要素を指すポインタを返す
bool contains( T const* p ) const; // p が a の中の要素を指しているかどうか判定
};
bool storage::contains( T const* p ) const
{
return ( p != 0 ) && ( &a[0] <= p ) && ( p <= &a[N] );
}
↑この storage::contains のような判定は有効ですか?
「同じ配列内のポインタ以外の比較は無効」という話を見かけたので心配になりました。
0774773
NGNG修正です。
bool storage::contains( T const* p ) const
{
return ( p != 0 ) && ( &a[0] <= p ) && ( p < &a[N] );
}
0775デフォルトの名無しさん
NGNG細かいことは色々あるがポインタの比較で==,!=以外は
(同じ配列であっても)不定と思っていいようだ。
同じ配列である時に限ってマイナス演算子は
期待通り働くがそうでなければ未定義だから使わないほうがいい
かも知れない。
だからそれは標準C++で組みたければ一つ一つ==で
比較するということになるだろう
0776773
NGNGbool storage::contains( T const* p ) const
{
#if defined( USING_RELATIONAL_OPERATORS_OF_POINTERS )
return ( p != 0 ) && ( &a[0] <= p ) && ( p < &a[N] );
#else
if( p != 0 )
for( T const* q = &a[0] ; q != &a[N] ; ++q )
if( p == q )
return true;
return false;
#endif
}
あと、5.9 -2- を読む限り、同じ配列内の要素ならちゃんと定義されてるっぽいですよ。
0777デフォルトの名無しさん
NGNG<= とか < でなく、std::less と std::less_equal を使えば
任意のポインタについて比較ができることが保証されてる。(20.3.3.8)
ただ
std::less_equal()(&a[0],p) && std::less()(p,&a[N]);
は、pが配列内を指すならtrueなのは確かだが、外の時必ず
falseになる、と定められているかどうかはわからん。。。
0778773
NGNGおぉ、有益な情報をどうもありがとう。
しかし、ほんとに微妙ですね。
boost::pool::is_from に同様のコードを発見しました。
が、結局は、単純な結果を返すことはできないようで、戻り値の仕様は微妙です。
0779773
NGNG全要素比較以外の方法は標準では不定ってことですかね?
0780デフォルトの名無しさん
NGNGp - a
0781デフォルトの名無しさん
NGNG0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGreturn (p && (unsigned)(p - a) < N);
どの環境でも問題なさそうなのは
return (p && (unsigned)((char*)p - (char*)a) < N*sizeof(T));
0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNG>任意のポインタについて比較ができることが保証されてる。(20.3.3.8)
マジで?またヘンチクリンな事しよって…
勘弁してくれ
0787デフォルトの名無しさん
NGNGvTableへのポインタならインスタンス中だが、先頭かどうかはわからん。
多重継承のときには複数並ぶしな。
vTable自体はインスタンスとは別に同一のクラスのすべてのインスタンスから
共有されるようにどっか別のところに配置されるだろ。
0788デフォルトの名無しさん
NGNGC/C++では「移植性のある」コードを書けると期待してはいけない。
今回のケースがまさにそうだ。潔癖症な奴はこの場合、
#define is_array_ptr(〜)
でも定義しておき、環境毎に適切な処理に置き換える。
この置き換えが効く事が、「移植性が良い」といわれる所以。
>>776みたいなコードを見ると泣けてくる・・・
0789初心者
NGNG0790デフォルトの名無しさん
NGNG正しくビルドできないことが多々あるから泣けてくる。
>>776の試みには賛同する
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNG> おまえら完全に誤解してる様だが、
> C/C++では「移植性のある」コードを書けると期待してはいけない。
いやここまでのところ、誰もそんなことは期待してないと思うぞ。
どの部分が「移植性があっ」て、どの部分が環境毎に
書かねばならんのか、切り分けようとしているだけで。
>>786
set<T*> やら map<T*,U> を作れるように…って苦肉の策だろうね。
0793デフォルトの名無しさん
NGNG実際、誰かは気を付けても、他の誰かは守らない。
延々これの繰り返しだ。
ということだよ。>>792
絶望するか、鈍感になるか、潔癖になるか、業界から去るか・・
0794777
NGNG> は、pが配列内を指すならtrueなのは確かだが、外の時必ず
> falseになる、と定められているかどうかはわからん。。。
よく考えたら配列は contiguously allocated なので (3.3.4/1)、
&a[0] と &a[N] の間に配列の要素でないものを指すアドレスは
存在しない。ゆえに boost::pool::is_from の方法でOk、だ。
0795デフォルトの名無しさん
NGNGstd::less の定義が std::set< T* > を有効にするためのものだとすれば、
#include <functional>
bool storage::contains( T const* p ) const
{
std::less< T const* > lt;
return !lt( p , &a[0] ) && lt( p , &a[N] );
}
これで十分ということになりますね。ちょっとキモいけど。
Cの場合は>>776のようなアプローチが最善策である、と。
そうなると、boost::pool::is_from の仕様がやたら複雑に記述してあるのは
どういうわけなんでしょうか?
0796初心者
NGNG英文が全然駄目で。
0797デフォルトの名無しさん
NGNG0798初心者
NGNGC++なんて糞!!
0799デフォルトの名無しさん
NGNGmy; //ルート
my.util;
my.math;
たとえば↑みたいなのは、
//util.h
namespace my {
namespace util {
//class ...
}
};
//math.h
namespace my {
namespace math {
//class ...
}
};
ってやらないとだめなのでしょうか・・・。
0800768
NGNGアマゾンでC++第3版注文することにしました。
0801デフォルトの名無しさん
NGNG俺はこの繰り返し。
0803デフォルトの名無しさん
NGNG標準にアクセスする方法知らないの
致命的じゃねえかよ
0804デフォルトの名無しさん
NGNG参照をベースに多態を書こうと思ったら思わぬ縛りがわんさか
0805デフォルトの名無しさん
NGNGconstを激しく誤解している
未だにコストが0だと強弁している
以上は、ただ恥ずかしいだけ
配列が作れないのはイヤだけど
0806デフォルトの名無しさん
NGNGint a;
;
class B : public A{
int b;
};
A *p = new B;
?????
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNG0809807
NGNGアホがいます
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNG自他共に認める馬鹿。そしてアホ。
0812デフォルトの名無しさん
NGNGそこまでわかってて何が聞きたい?
0814デフォルトの名無しさん
NGNG自信から確信にしたいので・・・
0815デフォルトの名無しさん
NGNGnew し delete することと、デストラクタの要不要はまったく無関係だ。
0816デフォルトの名無しさん
NGNG0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG0820おまいらも折りませんか?
NGNGhttp://off.2ch.net/test/read.cgi/offmatrix/1059911297/l50
0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNGメリットってありますか?
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNGstruct test1{
int &x;
test1(int &i):x(i){}
};
struct test2{
const int &x;
test2(const int &i):x(i){}
};
int i;
//new int&(i);//(a)これはもちろん出来ない
new test1(i);//(b)これが出来る
new test2(1);//(c)これも出来てしまう
まず、(b)(c)はできるものなのか。出来るのならば
(a)が出来ないのに(b)が出来るのは不思議である。
というのも実際に参照を生成しているのと同等に見える。それはいいのだが
次に(c)が出来てしまうのはどう考えよう。この時int型の一時変数が
出来るとして、その寿命はどうなるのた?
0825デフォルトの名無しさん
NGNGint &r1 = i; // (b)
const int &r2 = 1; // (c)
単純化するとこういうことだよね。(b)も(c)も可能。
C++の参照ってのは別名と考えるといいんでない?
(b)の場合、r1はコンパイルの便宜上iにつけられた別名。
(c)のr2は、無名インスタンスにつけられた名前。
r1やr2という「参照型のインスタンス」が存在するわけではない。
0826824
NGNG>const int &r2 = 1; // (c)
上とtest2*p=new test2(1);が同じだとすると
このp->xの参照先の一時変数の寿命はどうなるのだろう?
縛っている*pと同じで長寿か、それともそのローカルのスコープで
一時変数だけ死んでしまうのか?それがわからない。
0827デフォルトの名無しさん
NGNG12.2 -5- より、引用。
"A temporary bound to a reference member in a constructor's ctor-initializer persists until the constructor exits."
コンストラクタを抜けるまで有効らしい。
0828825
NGNGtest2 *p = new test2(1);
というコンストラクタ呼び出しは、「p->xは1の別名である」と言っているにすぎない。
p->xが出てきたら、その都度リテラル1に置き換えられるだけ。
って、すげー勘違いしてる?
0829827
NGNGコンストラクタの呼び出しに一時オブジェクトへの参照を渡すんだから、
この場合はこっちか?(同じく 12.2 -5- より)
"A temporary bound to a reference parameter in a function call persists until the completion of the full expression containing the call."
0830827
NGNGそれはすげー勘違い。
0831824
NGNGそれだ!
という事はそういう事をするとメンバ自体が無意味になってしまうのか…
つまり結局参照をメンバに持つクラスはnewで生成する物ではなく
(同じくnewで生成された寿命を持つオブジェクトを参照するなら
ポインタでいいわけだし)
しかも一時変数は値を得るだけでメンバに参照させてはならないということか
言われてみれば当然だが、俺の中で参照の株が急落中
test2 t(1);程度はしていいものと思っていた。
const int i=1;同じ寿命の物を用意して
test2 t(i);としなければならないわけか。参照意味なし
0832デフォルトの名無しさん
NGNGvoid f(int& r);
void g(const int& r);
int i;
ここに、f(i), g(i), g(0)は可能だけど、f(0)は無理。
同様に、
void f(string& r);
void g(const string& r);
に対して、g("ABC")は可能だけどf("ABC")は不可能。
もちろん、関数呼び出しの間だけ有効なstring型の一時オブジェクトが作られる。
0833デフォルトの名無しさん
NGNGポインタもそうだけどエイリアスの問題だね。
大昔はconstでない参照にも勝手に一時変数が作られたから
参照の生存期間と一時変数の生存期間の違いによるバグも多かったんだろうな。
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNGこのクラスのオブジェクトXをaとbの値が0で初期化して作成します。
このXにint型の値3をたしてaとbの値を3にするには+演算子をオーバーロードしないといけないのですが、
クラスのメンバ関数として
X X::operator +(int n)
{
a+=n;
a+=n;
return *this;
}
というようにするかフレンド関数として
X operator+(X x,int n)
{
X tmp;
tmp.a = x.a + n;
tmp.b = x.b + n;
return tmp;
}
とするのはどちらがいいのでしょうか?
0837デフォルトの名無しさん
NGNGその上で、両方とも定義して可。
0838デフォルトの名無しさん
NGNG別に演算子オーバーロードにしなくてもいいです。
>X X::operator +(int n)
>{
> a+=n;
> a+=n;
operator + なのに += しちゃ意味違うだろ。しかも a に2回足してるし
(誤植だろうけど注意力30000過ぎー)
質問の本来の答えは、Effective C++ あたりを読んでくだちい
0839836
NGNG誤植すいません。
まだプログラム初めて一週間ぐらいなんでって言ってもいいわけですね。
0840デフォルトの名無しさん
NGNGプログラムはじめて1週間で演算子オーバーロードですかおめでてえな。
もっと先に覚えなきゃいけない事イパーイあるよ。
というか演算子オーバーロードは使い方難しいからもう少し後にしな。
0841デフォルトの名無しさん
NGNGプログラム初めて一週間なら、誤植は仕方ないな。
ンナワケネーダロ
0842デフォルトの名無しさん
NGNGあるアドレスが 動的確保されているかどうかチェックできるような
標準関数ってない?
0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNG一週間もたっていればそれくらい進んでいてもおかしくない。
…とマジレスしてみるテスト
0845839
NGNGwinアプリを作るときは入門書に書いてあることは
すべて必須なんでしょうか?
今使っている入門書はやさしいC++です。
0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNG今すぐ本を読むのを止めて以下のキーワードでググれ。
RegisterClassEx
CreateWindowEx
ShowWindow
UpdateWindow
GetMessage
TranslateMessage
DispatchMessage
0848デフォルトの名無しさん
NGNG…情けない
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNGgtkmmにしろって事だろ
0854デフォルトの名無しさん
NGNG>winアプリを作るときは
>>847でいいだろ。
ただ>>847は最後に誘導すべきだったと思う。
Win32API質問箱 Build13
http://pc2.2ch.net/test/read.cgi/tech/1059549320/
0855デフォルトの名無しさん
NGNG>>847
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGマジレス致しますと内容は無駄ですが頑張って学んだ事実は今後に生きてきますのでがんがれ!
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNGこの臆病も飲め!
0860デフォルトの名無しさん
NGNGoperator[](uint index)
operator[](uint index) const
という風に、constが付くか付かないか、と言う違いだけというのは、
問題ないですか?
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNG0863デフォルトの名無しさん
NGNGわかってるとは思うが、順番を間違えんようにな。
0864デフォルトの名無しさん
NGNG量がかなり多いと思うんですが。
0865デフォルトの名無しさん
NGNGstringは直感的に使えるからおぼえなくていい。
iostreamはおぼえないといけないかも。
「おぼえなくていい」というのは、わかんなくなったときだけリファレンス引けばいいってことな。
0866デフォルトの名無しさん
NGNG関数名にしろ引数の取り方にしろ、共通している部分が非常に多いから、
関わっていくうちにあまり多いとは思わなくなるし、片っ端から覚える必要を
感じなくなるよ。
基本がわかってれば、いつでもすぐ調べて使えるって感じ。
最初はアルゴリズムの数にちょっと圧倒されたけど、あれ結局数個しか使ってないし。
0867865
NGNG言い換えると、
おぼえないといけないことがライブラリの総量に比例しているわけではない
ってこと。
0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNG「こういう機能を持っているものがある」ということを知っているのとどっちですか?
0870デフォルトの名無しさん
NGNG0871デフォルトの名無しさん
NGNG順番てconstの位置と言うことですか?
それなら理解してると思います。
0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNG0875デフォルトの名無しさん
NGNG他の入門書はchar型の配列やポインタに代入しているが
0876GET! DVD
NGNG☆★☆★☆★ 新商品 ゾク・ゾク 入荷 ☆★☆★☆
★☆
☆★ 送料激安!! 送料激安!! 送料激安!!
★☆ http://www.get-dvd.com.tw
☆★ 激安アダルトDVDショップ
★☆ お買い得!! 1枚500円〜 急げ!
☆★ インターネット初!「きたぐに割引」
★☆ 北海道・東北の皆様は送料も激安!
☆★ http://www.get-dvd.com.tw
★☆ スピード発送!
☆★ http://www.get-dvd.com.tw
★☆ 商品が豊富!
☆★ http://www.get-dvd.com.tw
★☆
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNGなこたーない(AA省略)
0879デフォルトの名無しさん
NGNG適材適所と思われ。
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNGstd::wstring
0882デフォルトの名無しさん
NGNG独学なら興味あるところから始めれ
誰も引っ張ってくれないし客のプレッシャーもない
自分のやる気が全て
因みに漏れはoperatorから始めたyo
TCPLの初版とZortec C++ 1.06で
0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNGだって、おれ自身全然使わないもん!
0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNGgcc.exeやcl.exe等で、GUI実装したWIN32アプリケーションを
作ることはできますか?
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNGint array[2];
のような配列を宣言する時、
std::vectorを使いますか?
配列の操作としては、
swap( array[0], array[1] )
しかしません。
C++の本を読んだときに、
「ポインタはなるべく使うな。配列もまた体の良いポインタである。
C++では配列を使わずにvectorを使う。」(かなり適当かつ出典忘れました。)
見たいな事が書かれていたので、他の方はどうされているのか
気になっています。
0892デフォルトの名無しさん
NGNG> swap( array[0], array[1] )
> しかしません。
それなら配列は使わない。
int a,b;
0893デフォルトの名無しさん
NGNGという事はVC++買わなくても、
Win32SDKやMFCを入手してそのままコンパイラで使えるという事ですか?
そうだったら余計な出費が減りますね。
0894デフォルトの名無しさん
NGNG自分でデータ型を定義するかstd::pairやboost::tupleなどを
使うといい
>>893
統合環境がいらないならその通り
0895デフォルトの名無しさん
NGNGというよりGUIプログラム作成の可否とMFCは直接は関係ないような。
0896893
NGNGしかしGUIプログラムは総合環境無しでは難しそうですね。
やっぱり買いますか…
0897デフォルトの名無しさん
NGNG0899891
NGNGなんかC++以前の問題だったようですみません。
これを機にboostにも手を出してみようと思います。
0900デフォルトの名無しさん
NGNGMFCだろ
0901デフォルトの名無しさん
NGNGは読んでみたけどなかなかいいとおもいました。
0902_
NGNG0903デフォルトの名無しさん
NGNG良いのでしょうか?
#include<iomanip>
#include<cfloat>
#include<cstdio>
int main(){
float ffff = FLT_MIN*FLT_EPSILON;
printf("\n%.8f\n",ffff);//0.0000000
std::cout << std::setprecision(8) << ffff << std::endl;//1.4012985e-045
}
0905デフォルトの名無しさん
NGNGソースコードや落とせる場所や解説しているページがあればお願いします。
0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNGスレ違い
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNGすれ違い
0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNG0913デフォルトの名無しさん
NGNG0914デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNGtoday and we frequently are approached by customers who wish
to license C++ from us and we do charge for that. Those
arrangements are done on a case-by-case basis with each
customer and are not disclosed publicly. C++ licensing is
currently part of SCO's SCOsource licensing program.
http://mozillaquest.com/Linux03/ScoSource-02_Story03.html
C++もおしまいですね。
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNGSCOって基地外だな。
0921デフォルトの名無しさん
NGNG0922デフォルトの名無しさん
NGNG0923デフォルトの名無しさん
NGNGビジニュー水戸家
おまいの推測どおりあの法則だ
0924デフォルトの名無しさん
NGNG正当な主張なのだろう。
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNGCとC++どちらから勉強するのがベターですか?
0927デフォルトの名無しさん
NGNGWindowsが好きならC#、そうでなければJava。
C/C++は実務・教養どちらにもあまりお勧めできない。
0928デフォルトの名無しさん
NGNGCの基本的な内容を含むC++参考書で勉強するといいと思われ。
0929デフォルトの名無しさん
NGNGC++に特有な方法ってありますか?
0930デフォルトの名無しさん
NGNGMFCのCStringやVCLのAnsiStringをみれば分かるとおり
クラスで実装できるでしょ。
使いたいだけちゃうんかと小一時間
0931デフォルトの名無しさん
NGNG君頭いいね。
0932デフォルトの名無しさん
NGNGだとしたら本当に>>930は頭がいいのだろう。
0933デフォルトの名無しさん
NGNG0934デフォルトの名無しさん
NGNGすごいすごい。おまえ知能指数10000000はあるよ。
もうプログラミングやめろ。
0935デフォルトの名無しさん
NGNGディレクトリの扱いは C, C++ 標準規格には入ってない。OS 非依存、
例外安全にしたければ boost 使うのが良いと思うぞ。
0936デフォルトの名無しさん
NGNGstring が STL ですか。そうですか
0937デフォルトの名無しさん
NGNG「stringがSTL」とは言ってない。
0938デフォルトの名無しさん
NGNG2003/02号の記事のlist4を、cygwinのgcc version 3.2 20020927 (prerelease)でコンパイルすると、
binder1st< less<int> > b1st( less<int>(), 3 );
という部分で「type specifier omitted for parameter」というエラーが出ます。
これはgccが悪いのでしょうか?
ちなみに、
binder1st< less<int> > b1st = binder1st< less<int> >( less<int>(), 3 );
とやると上手くいきますが、これはあまり美しくないですよね?
0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNGありがと、boostにあるのしらなかたよ
0941デフォルトの名無しさん
NGNGなんかお遊びツールにしか思えないんだが。
0942デフォルトの名無しさん
NGNG何を以って実績と言うかが問題だ。
std::copyを使ったからといってSTLの実績とはいえないからな。
0943実績とはこういうことさ
NGNGSTL: 100%
boost: 0%
loki: 0%
0944デフォルトの名無しさん
NGNGコンパイラを用意しないとな。
0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNG0947デフォルトの名無しさん
NGNG多分 gcc のバグだと思う。
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNGhttp://www.boost-consulting.com/about.html
http://www.google.co.jp/search?hl=ja&ie=UTF-8&oe=UTF-8&q=boost+c%2B%2B+site%3Asourceforge.net+build
てゆーかうちの会社では普通に使ってるが、まともってどの程度よ?
↓次スレよろ
0950デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1033830935/862-868n
に似てる気がする。gccのバグじゃないかなぁ。
0951950
NGNGふが。わかった。ちょっと待ってて。
0953デフォルトの名無しさん
NGNG0954デフォルトの名無しさん
NGNGみなさんもこの問題をといて見てはいかが?
C言語の問題です。
http://jbbs.shitaraba.com/game/bbs/read.cgi?BBS=1314&KEY=1060147851&START=115&END=200&NOFIRST=TRUE
0955938
NGNG>>950
バグですか。
実は同じ号のlist7,8も上手くコンパイルが通らず、こっちは調べて
解決出来たのですが、938の件では自分・記事・コンパイラの
どれが悪いのか悩みました。
その後の号でも訂正記事は載ってないと思うのですが、やはり
Cマガを読んで勉強する人はあまりいないんですかね?
とりあえずバグということで納得して、次に進みたいと思います。
どうも有難うございました。
0956デフォルトの名無しさん
NGNGhttp://www.cmagazine.jp/bugs/index.html
ここにもないね。
0957デフォルトの名無しさん
NGNGレインボーブリッジが封鎖されてるよ!!
0958デフォルトの名無しさん
NGNGうそつけー。
0959デフォルトの名無しさん
NGNG0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG/\ /\ < 糞スレ
/ \ / \ | おめでとうございまーす
/ \_/ \ \_______
/ \
/ ヽ___ ___
/ / ヽ__/ \ / ゙Y" \
| │ / / \
| 丶/ / \
\ / ̄ ̄ ̄ ̄) * ( ̄ ̄ ̄ ̄)
ヽ_____| ─< |\ >─ (
| ) / (|ミ;\ ( )
ヽ  ̄ ̄) /(___人|,iミ'=;\ (  ̄ ̄ )
/" ̄ ̄ ̄ ̄ / 《v厂リiy\  ̄ ̄ ̄ ̄\
/ / ゙|,/'' v:,,、.¨)z,_ \
/ / ミ/ .-─ .゙》z、 \
/ / 〔」″ノ‐ 、u ¨\ )
( / ゙|, ..冫 .rー  ̄\_ |
| 〔 ミ./′ ..r-ー __,,ア┐ |
| | {. .,,,, .′ .´′ .¨\|
0962デフォルトの名無しさん
NGNG| / ミ. ,i' .゙\_
| / .{. ノ ,r¬″ .¨\
| / ゙|, | ノ ー''''''''''' .ーミz
| | ミ. .,、 ._,,,、、r ,,,,_____ ゙┐
_/" | .ミ. ./′ ´′  ̄⌒'h..¥
(______) {. } ._,,,、 ,ノ冖''^¨ ″〕
゙|, .,| ./` ,r'′ vvvv、 |
.ミ、.` | 二、 〔 、 ,|
.〔 | .、 〔 rーー | |.,}
.ミ .′ .| 〕 .} ─-「 y-リ
.\ |, ´v,,,]、、、v- ..,/′
゙\ .\、 . _/
¨'ーvu,,____''工レ-'″
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNG仮想関数テーブルはすべてのクラスのインスタンスにコピー
されていると聞いたのですがなぜですか?
1つのテーブルを共有すればいいと思うのですが。。。
0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNGインスタンスは、そいつへのポインタを持つのがふつう。
0967964
NGNGですよね。僕もそうだと思っていたのですが
最近読んだ書籍に、継承を多用するのは各インスタンスの
仮想関数テーブルを増大するから良くないみたいに書かれて
いたのです。
0968デフォルトの名無しさん
NGNG> 継承を多用するのは各インスタンスの仮想関数テーブルを増大するから良くない
その書籍は捨てた方がいいかもな。
0969デフォルトの名無しさん
NGNG0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNGその書籍の題名を。
0975デフォルトの名無しさん
NGNG多重継承する場合は、1 インスタンス中に vptr (vtbl を指してるポインタ)
が複数格納されるっつー話なら、正しいぞ。
0976デフォルトの名無しさん
NGNGそれは普通にサブオブジェクトとして格納された結果だろ。
vtblは関係ない。
0978964
NGNG同時刻書き込みで見忘れてますた。
結構メジャーな本なのですが。。。
0979964
NGNG定義されている関数foo()を派生クラスでオーバーライド
しているとき、両クラスはもちろん別のvtblを持つと思いますが
テーブル内のfoo()の場所は同一のオフセットと考えていいですよね。
0980デフォルトの名無しさん
NGNGそう考えてあながち間違いではないが、
その考えに基づいたプログラムを書いてはいけない。
0982デフォルトの名無しさん
NGNG処理系依存のプログラムになる。
このスレで聞くからには処理系依存は良しとされないだろう。
0984デフォルトの名無しさん
NGNG継承を多用するとそのクラスごとに仮想関数テーブルが作製される。
仮想関数の数が途方も無く多いと弊害がでる。
MFCってことはウインドウメッセージをそれぞれすべて仮想関数化すると?って感じの前フリがあったのでは?
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG「各インスタンスの仮想関数テーブルを増大」
つまり、クラスとインスタンスの区別の付かないくらい
著者が莫迦だといいたいんだね?
0989デフォルトの名無しさん
NGNGそれはまた別の話。インターフェース継承なら、ふつー多重継承する
ものだし。
>>985
たとえエントリが 1 万個あったとしても、32bit マシンだと 40KB
程度でしょう。誤差、誤差。
0990デフォルトの名無しさん
NGNGboost のスマートポインタ系や bind, compose, mem_fn, call_traits,
それに文字列処理に関して format, regex あたりは仕事で使ってるけど。
さすがに lambda, mpl なんかは、使ってる処理系のバージョンが古い
ためもあって使ってない。
0991デフォルトの名無しさん
NGNGどうやって実現しているのですか?
文字列で各インスタンスに埋め込んでいるのでしょうか?
0992次スレ案内
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1060361082/l50
0993991
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999GET!DVD
NGNG★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★ 送料激安! スピード発送! 商品豊富!
★☆ http://www.get-dvd.com
☆★ 激安DVDショップ 「GETDVDドットコム」
★☆ http://www.get-dvd.com
☆★ 今すぐアクセス Let’s Go! 急げ!
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。