C++相談室 part35
レス数が1000を超えています。これ以上書き込みはできません。
0001v(^・^)v
NGNGただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。
過去スレ、関連スレ、関連リンクなどは >>2-20 あたり
0002v(^・^)v
NGNG2 http://pc.2ch.net/tech/kako/996/996640937.html
3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
14 http://pc5.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc5.2ch.net/tech/kako/1043/10436/1043605481.html
0003v(^・^)v
NGNG17 http://pc5.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc5.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc5.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc5.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc5.2ch.net/tech/kako/1057/10575/1057580107.html
22 http://pc5.2ch.net/tech/kako/1060/10603/1060361082.html
23 http://pc5.2ch.net/tech/kako/1062/10626/1062690663.html
24 http://pc5.2ch.net/tech/kako/1066/10665/1066546387.html
25 http://pc5.2ch.net/tech/kako/1067/10679/1067949669.html
26 http://pc5.2ch.net/test/read.cgi/tech/1070164402/ (迷子)
27 http://pc5.2ch.net/test/read.cgi/tech/1074454641/ (迷子)
28 http://pc5.2ch.net/test/read.cgi/tech/1077985164/
29 http://pc5.2ch.net/test/read.cgi/tech/1082047479/
30 http://pc5.2ch.net/test/read.cgi/tech/1084030770/
31 http://pc5.2ch.net/test/read.cgi/tech/1086185282/
32 http://pc5.2ch.net/test/read.cgi/tech/1088236078/
33 http://pc5.2ch.net/test/read.cgi/tech/1090180012/
34 http://pc5.2ch.net/test/read.cgi/tech/1092018643/
0004v(^・^)v
NGNG[C++ FAQ]
http://www.parashift.com/c++-faq-lite/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[禿 Stroustrup]
http://www.research.att.com/~bs/
[C++ International Standard]
http://www.kuzbass.ru/docs/isocpp/
http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110&ICS1=35&ICS2=60&ICS3=
[JTC1/SC22/WG21 - C++]
http://std.dkuug.dk/jtc1/sc22/wg21/
[C/C++ Users Journal]
http://www.cuj.com/
[cppll (ML)]
http://www.trickpalace.net/cppll/ (日本語)
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[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
0007v(^・^)v
NGNG【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/
C/C++の宿題を片づけ作戦指令 30代目
http://pc5.2ch.net/test/read.cgi/tech/1091954342/
C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc5.2ch.net/test/read.cgi/tech/1049790146/
managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/
ATL 相談室
http://pc5.2ch.net/test/read.cgi/tech/1029029882/
COM の世界を斬る!
http://pc5.2ch.net/test/read.cgi/tech/981823340/
WTLお勉強スレッド
http://pc5.2ch.net/test/read.cgi/tech/1078150663/
0008デフォルトの名無しさん
NGNGタダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/(html化待ち)
GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/
タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/
OpenWatcom C++
http://pc5.2ch.net/test/read.cgi/tech/1033433728/
"Code of the Nerds" Digital Mars C/C++
http://pc5.2ch.net/test/read.cgi/tech/1044210976/
0009デフォルトの名無しさん
NGNG★初心者にVisual C++を教えるスレ★ Part13
http://pc5.2ch.net/test/read.cgi/tech/1089011118/
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
C++Builder相談室 Part10
http://pc5.2ch.net/test/read.cgi/tech/1089299158/
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/
↓以下、お決まりのアレどうぞ。
0010デフォルトの名無しさん
NGNG0011v(^・^)v
NGNG★初心者にVisual C++を教えるスレ★ Part14
http://pc5.2ch.net/test/read.cgi/tech/1093672937/
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
C++Builder相談室 Part10
http://pc5.2ch.net/test/read.cgi/tech/1089299158/
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/
0012v(^・^)v
NGNG00131,11
NGNG0014v(^・^)v
NGNG環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
0015v(^・^)v
NGNGすげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
0016デフォルトの名無しさん
NGNGカコログカラ ソノママ モッテキチャッタヨ…
0017v(^・^)v
NGNGとかいうエラーが出るんだけどこれってどうすればいいの?
0018v(^・^)v
NGNG#include <stdafx.h>
後死ね。
0019デフォルトの名無しさん
NGNG言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGつまり
∧∧ _ ドスッ
( ,,)┌─┴┴─┐
/ つ. 終 了 │
〜′ /´ └─┬┬─┘
∪ ∪ ││
゛゛'゛'゛
ということだな?
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG紹介していただけないでしょうか?
0024前スレより
NGNGnamespaceってウンコだよね。
ライブラリ作ってる香具師がバカだとglobal namespaceになんでも詰め込みやがるから、
こっちで
namespace UnkoLib
{
#include <library.h>
}
とかやってもうまく動かないし。
1000 名前: デフォルトの名無しさん [sage] 投稿日: 04/08/31 21:05
>>996
その場合ライブラリ作ってる香具師がウンコだよ。
0025デフォルトの名無しさん
NGNGこれも新しい地鎮祭の儀式?
0026名無しさん@ピンキー
NGNGboost::ublas
Blitz++
lapack
0027名無しさん@ピンキー
NGNG0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG名前重複する関数がヘッダーにソースごと貼ってあったら、
それをコピペして関数名変えて使ってしまうし。
名前空間が入り乱れた状態を経験した人って、
さぞや大きなプロジェクトに携わってるんだろうなぁ。
是非、そのエピソードを披露して頂きたいものだ。
0030デフォルトの名無しさん
NGNGたとえば、ストリームから整形しながら文字列を読むメソッドを作って、
文字列と読み込んだバイト数をpairでパックして返してるんですが、
mapの内部用クラスだから、直接使うべきじゃないとか言われたんですよ。
オブジェクトと付加情報を返したいときって、やっぱり汚くても引数で返すのがいいんでしょか?
0031デフォルトの名無しさん
NGNGそんな事ない。
本当に内部用クラスなら公開されてないし。
むしろ、std::pair使用時の一時オブジェクトのコピーコンストラクタの冗長性の有無を気にした方がいい。
0032デフォルトの名無しさん
NGNG普通に組むとこうなると思うんですが、
if( x <= -1.0f && x >= 1.0f &&
y <= -1.0f && y >= 1.0f &&
z <= -1.0f && z >= 1.0f)
bHit = true;
野生の勘ですが、もっと最適化出来るような気がしてなりません。
どうでしょうか?
003332
NGNG0034デフォルトの名無しさん
NGNG最適化じゃないけど、普通こう書くんじゃないかなぁ。
bHit |= ( x <= -1.0f && x >= 1.0f &&
y <= -1.0f && y >= 1.0f &&
z <= -1.0f && z >= 1.0f);
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGif (FABS(x) < 1.0f && FABS(y) < 1.0f && FABS(z) < 1.0f)
bHit = true;
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG最適化っつーんで、あえて最上位ビット反転を明示させるために書いてみただけ。
0040デフォルトの名無しさん
NGNGdouble x, y, z;
for(x=1.1, y=1.1, z=1.1;x<10000000.0; x+=0.01){
if( 条件式 ){
cout << "OK" << endl;
}
}
上記コードで、>>32,>>35,>>36を試した。>>36はcmathのfabs()を用いた。
使用環境はVC6.0。
【結果】
[単位=秒]
1回目 2回目
>>32 2.156 2.14
>>35 2.125 2.141
>>36 8.375 8.484
【評価】
>>35は条件の範囲が正負で違う場合に修正が面倒。
>>36のfabs()は論外。素直に>>32を使ってよいかと。
0041デフォルトの名無しさん
NGNGなんでfabs()使うの?
004240
NGNGご要望に答えて>>36のマクロでやってみた。但し、以下のようにintを使った。
#define FABS(x) ( *(int*)&x & ~(1<<31) )
【結果】
>>32 2.14
>>35 2.141
>>36(fabs) 8.5
>>36(FABS) 8.031
【評価】
>>36のFABS(x)はfabsより若干速い。
あいかわらず>>32最強かと。
0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNGCPUによっても違うんじゃないか?
P4系の浮動小数点ユニットはやたらとストールするからなぁ。
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNGしかなく同時に読み書きできないしFPUは貧弱だしで公平な比較ができん。
と言ってもデファクト・スタンダードがIntelというなら構わんけど。
0049デフォルトの名無しさん
NGNG少し変だよね
005040,42
NGNG当方の環境は、WinXP Pen4-3.0GHz HTオン。
VC6.0なので>>46の指摘が、気になるちゃぁ気になる。
VC++Toolkitあるけど、やる気なし。スマソ。
005132
NGNG>>32が最強なんて意外です。つーか超勉強になりました。
>>40
fabsは確か組み込み関数の最適化フラグがありましたよね、
また&&と&の違いも気になりますね。
0052デフォルトの名無しさん
NGNGx86系+VC6が条件なら変わらないだろ
0053デフォルトの名無しさん
NGNG俺もP4とAthlon系で随分と傾向が違うのを嫌ほど見てきた。
005440,42
NGNG感謝されてなんですが、>>47の指摘を受けて、ループを変えました。
for(x=1.1, y=1.1, z=1.1;x<10000000.0; x+=0.01){
↓
for(x=1.1, y=1.1, z=1.1;x<1000000.0; x+=0.01, y+=0.01, z+=0.01){
結果が激変したわけで・・・・。
>>32 0.89
>>35 0.828
>>36fabs 0.813
>>36FABS 0.812
なんか、FABSマクロの挙動が可笑しい(x,y,z=1.25)。調べる気ゼロ。
間違ってるとかない?
【結果】
>>32は最下位転落。残念。
0056デフォルトの名無しさん
NGNG君の環境で最下位だからといって(ry
0058デフォルトの名無しさん
NGNGdoubleのままあのマクロを使ってたりして
0059デフォルトの名無しさん
NGNG最初のx >= -1の条件でほとんどはじかれるようなら、>>32が最速だろうし
ほとんど最後の条件まで判定するようなら他のだろうし。
x, y, zがよっぽど偏ってない限り、小細工はいらないと思うけどね…。
006040,42
NGNGもちろん、doubleのまま。やっぱ駄目かね。薄々気付いてたけど。
sizeof(double)=8 sizeof(float)=4 sizeof(int)=4 だね、Win32。
んじゃ、doubleをfloatにして試してみるか・・・。ループ変更
for(x=1.1f, y=1.1f, z=1.1f;x<250000.0f; x+=0.01f, y+=0.01f, z+=0.01f){
でやってみた。
【結果】
0.218
0.188
0.172
0.187
【評価】
cmath のfabsが最強ですた。
FABSマクロも正常稼動。
もう勘弁して下さい。(涙
006140,42
NGNG>>59の指摘をうけて、ちゃんと条件領域を通過するようにした。
#define LIMITER2.0f
#define DELTA0.0000001f
#define LOOP()for(x=-LIMITER, y=-LIMITER, z=-LIMITER;x<LIMITER; x+=DELTA, y+=DELTA, z+=DELTA)
で、実際のコードは以下のような使い回し。
float x,y,z;
LOOP(){
if( 条件式 ){
// なんらかの処理(低負荷)
}
}
【結果】
0.391
0.312
0.297
0.141
【評価】
FABSマクロが最強。
自分のことさえ信じられない。もう勘弁。
0062デフォルトの名無しさん
NGNG006432
NGNG自分もやってみました!
【式】
timer.Start();
for( x=-10000.0 , y=-10000.0, z=-10000.0; x<=10000.0; x+=0.01, y+=0.01, z+=0.01)
{
if( なんらかの式)bHit = true;
}
timer.Stop();
stream << "なんらかの式 : " << timer.GetLatestSecond() << endl;
【結果】
x <= -1.0 && x >= 1.0 && y <= -1.0 && y >= 1.0 && z <= -1.0 && z >= 1.0 : 0.000994819
x <= -1.0 & x >= 1.0 & y <= -1.0 & y >= 1.0 & z <= -1.0 & z >= 1.0 : 0.00571274
x * x <= 1.0 && y * y <= 1.0 && z * z <= 1.0 : 0.00557529
fabs(x) < 1.0f && fabs(y) < 1.0f && fabs(z) < 1.0f : 0.00560937
FABS(x) < 1.0f && FABS(y) < 1.0f && FABS(z) < 1.0f : 0.00557557
x <= -1.0 && x >= 1.0 && y <= -1.0 && y >= 1.0 && z <= -1.0 && z >= 1.0 : 0.00567754
x <= -1.0 & x >= 1.0 & y <= -1.0 & y >= 1.0 & z <= -1.0 & z >= 1.0 : 0.00583258
x * x <= 1.0 && y * y <= 1.0 && z * z <= 1.0 : 0.00557613
fabs(x) < 1.0f && fabs(y) < 1.0f && fabs(z) < 1.0f : 0.00577951
FABS(x) < 1.0f && FABS(y) < 1.0f && FABS(z) < 1.0f : 0.00604825
【評価】
自分の結果だと>>32がダントツでトップになりました。残りは誤差程度の差に収まってしまいました。
&&と&ですが、これは&&の方が早いようです。理由は>>59さんの指摘によるものだと思います。
&& : 0.000994819
& : 0.00571274
0065あっちの住人
NGNG死ね
0066デフォルトの名無しさん
NGNG006840,42
NGNGこのアフォな労力は一体・・・。
>>65
漏れは、素直に>>62に謝りたい。関係ない人には不快だったかも。
>>66
漏れは、不等号をちゃんと修正してやってますた。
0069デフォルトの名無しさん
NGNGお前が氏ね
0070あっちの住人
NGNG0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG>>30
>mapの内部用クラスだから、直接使うべきじゃないとか言われたんですよ。
std::pairはちゃんと公開されています.対応するヘッダは<utility>になります.
0075デフォルトの名無しさん
NGNG質問前に自分で計時測定しましょう。論より証拠です。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG最低でもOSとハードウェア構成は暗黙の内に初めから書いて欲しい。
そうでないとベンチマークテストなんて何の意味がある?
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNG↓っじゃ次の質問どぞ。
0081デフォルトの名無しさん
NGNG普通に組むとこうなると思うんですが、
if(x<0)x=0;
else if(x>1)x=1;
野生の勘ですが、もっと最適化出来るような気がしてなりません。
どうでしょうか?
0082デフォルトの名無しさん
NGNGx<0になる頻度とx>0になる頻度のどちらが多いかで順番を決める…くらい?
0083デフォルトの名無しさん
NGNG君の野生の勘は、残念ながら大した事ないようだね。
終了
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNGアセンブラスレ向けのネタだな。
0086デフォルトの名無しさん
NGNG漏れはfloating使わないからその章は飛ばしちゃった。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG思いつきで次のように書いたのですが
newのところでコンパイラに弾かれてしまいます.
これもダメなのでしょうか?
HogeClass *myhoge;
myhoge = (HogeClass *)malloc(sizeof(HogeClass) * 10);
myhoge[0] = new HogeClass(hikisu);
myhoge[1] = new HogeClass(hikisu);
・・・
環境はBCB6.0です.
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNGmyhoge[0] = new HogeClass(hikisu);
myhoge[1] = new HogeClass(hikisu);
・・・
0092デフォルトの名無しさん
NGNGエラーメッセージ読め。
それでわかんなかったらエラーメッセージ貼れ。
0095デフォルトの名無しさん
NGNGまずコピペして試すからだろう。
↓これなら採用されたかもな。
#include <vector>
std::vector<HogeClass*> myhoge(10);
myhoge[0] = new HogeClass(hikisu);
0096デフォルトの名無しさん
NGNGソースは↓です。
#include <iostream>
void g(double &a, double b, double (&f)(double d) ) { a=f(b); }
double k(double p) { return 5.0*p; }
class C
{
public:
C(double y): x(y) {}
double m(double p) { return x*p; }
private:
double x;
};
int main()
{
C c(10.0);
double z;
g(z, 3.0, k); // (#1a)
cout << z << endl ; // (#1b)
// g(z, 3.0, c.m); // (#2a)
// cout << z << endl; // (#2b)
return 0;
}
009796
NGNG(#1b) では 30.0 という望みの出力が得られます。
これをクラス中の関数にも適用できるようにしたいのですが、
単純に (#2a) のようにやったのでは
not maches converting function 'm' to type 'double (&)(double)'
というエラーが出ます。
これをクラス内で定義された関数を引数としても動くようにする方法をご教授ください。
なお、コンパイラは g++ 2.95 です。
009896
NGNG(#2b) で得たい出力が 30.0 です。
すみません。
0099デフォルトの名無しさん
NGNGあなたのいう「クラスの中の関数」をC++ではメンバ関数と言う。
まず、メンバ関数への参照という型は存在しない。
でもメンバ関数へのポインタという型がある。
で、メンバ関数へのポインタは非メンバ関数へのポインタとはだいぶ扱いが違う。
ttp://www.google.co.jp/search?q=%E3%83%A1%E3%83%B3%E3%83%90%E9%96%A2%E6%95%B0+%E9%96%A2%E6%95%B0%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF
010096
NGNGメンバ関数版をテンプレートで作り、非メンバ関数版をオーバーロードしました。
template<typename T>
void g(double &a, double b, T t, double (T::*f)(double d) ) { a=(t.*f)(b); }
g(z, 3.0, c, C::m); // (#2a)
という感じです。
ひとまずこれで動くようになりました。
インスタンス c とメンバ関数 C::m を別々の引数で与える仕様にしましたが、
これを単一の引数で与えることは不可能でしょうか?
0101デフォルトの名無しさん
NGNGboost::functionを使うと,
typedef boost::function <double (double)> Functor;
void g(double &a, double b, Functor f ) { a=f(b); }
g(z, 3.0, Functor (k)); // (#1a)
g(z, 3.0, boost::bind (&C::m, &c, _1)); // (#2a)
Loki::Functorを使うと,
typedef Loki::Functor <double, TYPELIST_1 (double)> Functor;
void g(double &a, double b, Functor f ) { a=f(b); }
g(z, 3.0, Functor (k)); // (#1a)
g(z, 3.0, Functor (&c, &C::m)); // (#2a)
みたいには書けます.
あと100は
g(z, 3.0, c, &C::m); // (#2a)
じゃないんでしたっけ? g++ 2.95は通るとしても.
010296
NGNG御教授ありがとうございます。
結局のところ、 c と C::m bフ両方をどこかbノ書かなくてはb「けないという涛_では
似bスようなものでbキね。
ご指摘のように、& を付けた &C::m が適切です。
& が無いとコンパイラが文句を言います。
書き写すときに付け忘れました。
0103デフォルトの名無しさん
NGNGそこで質問なのですが
char hexcode[] = {0x00,0x06,0x10};
というデータが入っているときにコンソールに
0x00 0x06 0x10
と表示させたくて
for(int i = 0;i<3;i++) cout<<"0x"<<hex<<hexcode[i]<<" ";
としたのですがうまくいきません(空白が出力される)。16進コードをそのまま
出力させるにはどのようにすればいいのでしょうか?
0104デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGintだと0x80とかが0xffffff80みたいにされなかったっけ?
0107デフォルトの名無しさん
NGNGfor(int i = 0;i<3;i++) cout<<"0x"<<hex<<(hexcode[i]&0xFF)<<" ";
にしろってことだな。
0109デフォルトの名無しさん
NGNG自己定義のallocatorについて質問してもいい?
0110デフォルトの名無しさん
NGNG【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/
0111103
NGNG皆さん、有難う御座います。自分なりにそこそこ勉強したつもり
だったんですが基本的な部分の知識が欠落してました。出力
出力マニュピュレータにつて詳しく勉強してみます。
0112デフォルトの名無しさん
NGNG0113103
NGNG表示させる事が出来ました。当初の問題は解決したのですが、また
疑問が出来たので質問させて下さい。
char hexcode[] = {0x00,0x06,0x10};
というデータがある時
for(int i = 0;i<3;i++) cout<<"0x"<<hex<<(hexcode[i]&0xFF)<<" ";
だと正常に出力出来て
for(int i = 0;i<3;i++) cout<<"0x"<<hex<<hexcode[i]<<" ";
だとうまくいかないのはナゼでしょう?charは8ビットなので0xFFで
わざわざビットを取り出さなくても良い気がするのですが?
0114デフォルトの名無しさん
NGNGhexcode[i]&0xFF) <- これは int
0115デフォルトの名無しさん
NGNGfor(int i = 0;i<3;i++) cout<<"0x"<<hex<<static_cast <int> (hexcode[i])<<" ";
0116デフォルトの名無しさん
NGNGオブジェクト自体をファイルに保存することってできるんでしょうか?
0117デフォルトの名無しさん
NGNGバイナリイメージをそのまま保存するようなことは、普通はやらないね。
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNGそうだよ。
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG「シリアライズ」や「直列化」と呼ばれる処理だね。ググってみるヨロシ。
いろいろ工夫する部分 (しなきゃいけない部分) があって面白い分野だ。
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG>for(int i = 0;i<3;i++) cout<<"0x"<<hex<<(hexcode[i]&0xFF)<<" ";
>だと正常に出力出来て
整数の昇格とか汎整数拡張とか、インテグラルプロモーションとか
その辺をキーワードに調べてみると分かると思うんですが、要するに
式の中では int よりサイズの小さい型をもつ変数は、暗黙のうちに
int に変換されて、式の値も int になるんです。この性質を上手く
利用しているんでしょう。
そういうことなので、hexcode[i] & 0xFF という式の中では
hexcode[i] が char から int へ変換されますが、>>106氏が指摘
したように hexcode[i] == 0x80 のような場合だと int に拡張
されたとき 0xFFFFFF80 になってしまうんで、0xFF でマスクを
取る必要があるわけです。
>for(int i = 0;i<3;i++) cout<<"0x"<<hex<<hexcode[i]<<" ";
>だとうまくいかないのはナゼでしょう?
hexcode[i] が char のままなので文字出力用の operator<<() が
呼び出されてしまうからです。
0124
NGNGありがとうございました!!
勉強になりました
0125デフォルトの名無しさん
NGNGしかし構造体なので画素の加算などRGB別に3行コーディングしなければなりません。
そこでクラスにしてオペレーターを定義しました。
ところがこのクラス、リリース版でも遅いのです。約1.3倍ぐらい時間がかかります。
オペレーターの記述はごく普通のものです。開発環境は最新のVisualStudioですが、こんなに
はっきり遅くなるものなのでしょうか?
0126デフォルトの名無しさん
NGNGインライン関数にしてみたら?
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNG数字以外かどうかチェックすればいいと思います。
0129デフォルトの名無しさん
NGNG「入力できないい」の意味があいまいなので、誰も答えられないと思う。
少なくとも日本語(英語とかでもいいけど)で要求仕様を書けないようだと、
解決方法も得られない。
0130デフォルトの名無しさん
NGNG入力して欲しくないキーの上に画鋲を張っておくとか。
0131デフォルトの名無しさん
NGNGどういう状況で数字入力を禁止したいのか分かりませんが、
GUIなら特定のキー以外のイベントを無視するとか、
コンソールで対話的な動作なら、Enterキー入力後に再入力を求めるとか。
0132デフォルトの名無しさん
NGNGあ、そもそもC++の話題じゃないのかな?
0133デフォルトの名無しさん
NGNGそんなことされたら余計押したくなるだろ
0134デフォルトの名無しさん
NGNG入力して欲しくないキーを押したらハードディスクのフォーマットを開始すると
明示しておき、押されたら実際にフォーマットを開始すればよい。
0135デフォルトの名無しさん
NGNG式の値は常にintになるわけじゃないけどな。まあ、細かい話だが。
この例ではintになると考えていいだろう。
0136デフォルトの名無しさん
NGNGプロモートが行われてintになってしまったら困るわけだが。
そもそも<<でchar型の単文字を表示できなくなって困るじゃないか。
0137デフォルトの名無しさん
NGNG押されたくないキーを1兆回くらい押して壊しておく。
0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNGどっちみち回答者は同じだ罠。
0140デフォルトの名無しさん
NGNG場所を変えると流れも変わるのが不思議なところ
0141デフォルトの名無しさん
NGNGと表示されるようにしたいんですけど
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNGif文の使い方わかってれば出来るだろう
0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNGここでもお読みなさい。
http://www.kumei.ne.jp/c_lang/cpp/cpp_66.htm
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNGHogeClass *myhoge;
↓
HogeClass **myhoge;
0149デフォルトの名無しさん
NGNGインストールしたのですが、うまくコンパイルできません。
コマンドプロンプトで bcc32 hello.cpp(hello.cppはコンパイルしたいファイル名)
と入力すると、'bcc32'は、内部コマンドまたは〜〜として認識されていません。
というエラーがでます。
コンパイラをマイドキュメントにフォルダを作ってそこにインストールしたのですが
それがダメだったんでしょうか?
ソースファイルもマイドキュメントに別フォルダを作ってそこに入れています。
アドバイスお願いします。
0150デフォルトの名無しさん
NGNGタダで使えるBorland C++ Part4
http://pc5.2ch.net/test/read.cgi/tech/1091066805/
0151498
NGNG向こうで聞いてきますね。
失礼しました。
0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG勝手に決め付けないでください!
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNG└┘
∩∧∧
ヽ(゚Д゚ )
\⊂\
O-、 )〜
∪
0157デフォルトの名無しさん
NGNGclass A {
public:
A(int v) {};
private:
A(const A&) {
puts("コピーコンストラクタ禁止");
}
};
とやると
{
A a = A(1);
}
が"privateだから呼べない"コンパイルエラーになります。
ところが、privateをpublicにすると、コンパイルはとおりますが、
実行してもputs()が呼び出されるわけではありません。
どう解釈したらよいんでしょうか。
0158デフォルトの名無しさん
NGNGこれは意味論上はコピーコンストラクタを呼び出しているが、
コンパイラは呼び出しを省略しても良いことになっている。
このほかにこういうことが起こるのは「戻り値の最適化」と呼ばれる場合。
この二つ以外なら確実にコピーコンストラクタが呼ばれる。
0159デフォルトの名無しさん
NGNG意味があるんでしょうか?関数のプロトタイプ宣言なら、
型チェックの意味もあったりして便利だとは思うけど。
class CLASS;
0160デフォルトの名無しさん
NGNG意味はクラス型の宣言。それだけ。
コンパイル時のリソース〜はただそういう使い方ができるというだけ。
class CLASS; のあとに namespace CLASS とかできなくなる効果もあると言えるかもしれない。
0161デフォルトの名無しさん
NGNG前方宣言しないと、相互にポインタを持ち合うようなクラスが作れない。
struct B;
struct A { B* b; };
struct B { A* a; };
あとコンパイル速度は重要だと思うぞ。前方宣言せずにヘッダファイル中で
#include しまくると、すぐにヘッダファイルの依存関係が深くなる。一つの
ヘッダ書き換えただけで大量の再コンパイルが必要になって、生産性に
かなりの悪影響が出る。
0162デフォルトの名無しさん
NGNGなるほど、意味論上のチェックでもって弾かれるけど、
実際には呼び出されないということですね。
うーんややこしい。
ありがとうございました。
0163デフォルトの名無しさん
NGNGなるほど・・・
0164デフォルトの名無しさん
NGNGなるほど・・・
0165デフォルトの名無しさん
NGNG・・・ザ・ワールド
0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGこれは具体的にはどうのようなもんでっしょうか?
stringはたぶんSTLで、arrayって????
0169デフォルトの名無しさん
NGNG具体的にっていう質問は、具体的なコード出してから言うもんだ。
0170デフォルトの名無しさん
NGNG{
}
こんなかんじ
0171デフォルトの名無しさん
NGNG少なくとも標準ライブラリの範疇ではないので、ここで聞いても回答
得られんぞ。手元のコードからarray の定義を探してくれ。
0172デフォルトの名無しさん
NGNGそんなのコンパイル通るの?
#define array
だったら通るだろうけど。
ついでに
#define string int
だったらおもしろいのに。
0173デフォルトの名無しさん
NGNGテンプレートの具象化したモノのtypedefなんかは大域で
使えちゃうと気持ち悪いので名無しのnamespaceにぶち込むようにしている。
こんなnamespaceの使い方はアリなんだろうか。
まぁ関数だけならstatic宣言してもいいんだろうけど。
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNG俺も同じコトやってる。*.cpp ローカルにしか使わない構造体とかは、基本的に
無名名前空間行き。特定クラスに強く結びついてるモノは nested class にする
けど。
C++ だと非グローバルスコープの構造体・クラスはテンプレート引数に渡せないっつー
制約があるから、他のソースコードとの名前重複を無視したければ無名名前空間に
入れるのが安全だよね。
0176173
NGNGグローバルスコープを持つように見せかけつつ
名前重複を避けたい時に特に有効なのか。
ありがトン。
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG前スレ795-の話が少し気になる。
気にしてもしょうがないんだろうけど。
0179デフォルトの名無しさん
NGNG構造体やtypedefを無名名前空間に入れても意味無くないか?
これらは関数と違って名前が外部に出ないだろ?
0180デフォルトの名無しさん
NGNG{
int i = 0; // <----(a)
{
int i = 1;
// ここで(a)のiにアクセスしたい
}
}
内側のスコープで::iと書くとグローバルのiを探しに行ってしまいます。
上記のようなことは出来ないのでしょうか?
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG0186180
NGNGなんとなく言いたいことがわかりました。
変数名を変えればいいじゃん、ってことですかね?
そうではなく>>180のような状況でも何かアクセスする手段があるのかなと疑問に思ったのです。
0187デフォルトの名無しさん
NGNG0188デフォルトの名無しさん
NGNG基礎からやり直した方が速いよ。もうこのスレに来んな。
0189デフォルトの名無しさん
NGNG0190180
NGNG0191デフォルトの名無しさん
NGNGどこで聞いても同じだと思うが。
0193デフォルトの名無しさん
NGNG結論から言うと、180が求めてるような機能はC++にはないな。
0194デフォルトの名無しさん
NGNG>>180の内容を100回声に出して読んでみな。
0195デフォルトの名無しさん
NGNG君も勘違いしてる。
0196デフォルトの名無しさん
NGNGコンパイラの拡張機能でiにアクセスできるかもよ。
0197デフォルトの名無しさん
NGNG君も勘違いしてる。
0198デフォルトの名無しさん
NGNGまあ答えは一言、「残念ながらそんな機能はありません」で終わりなのは確かだが。
0200デフォルトの名無しさん
NGNGどう勘違いなの?
0201デフォルトの名無しさん
NGNG制御があるあいだだけ存続するというのは、仕様ですか?
0202デフォルトの名無しさん
NGNG仕様です。
0203デフォルトの名無しさん
NGNGはよ、教えれ。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNGどこに書いてあんの?
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNGどこって、もちろん仕様書に書いてあるはずと思うぞ。
0209デフォルトの名無しさん
NGNGこれ以上何がやりたいんだ?
180を非難したいのか?
0210デフォルトの名無しさん
NGNGだから、あれは仕様書じゃないってば。
0211デフォルトの名無しさん
NGNGいや、「あれ」って言われてもな・・・
なんやら話が良くわからんから退散するわ。あしからず。
0212デフォルトの名無しさん
NGNGグローバルならアクセス可能だよ
#include <stdio.h>
int i = 111; //これがグローバル
int main(){
int i = 333; //ローカル
{
int i = 777; //ローカル
printf( "%d, %d", ::i, i );
}
return 0;
}
//実行結果
//111, 777
0213212
NGNGそれじゃ煽ってる奴は、どこに突っかかってるんだ…
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGあーあネタばらしちゃった。まあいいや。
ところでローカル変数とグローバル変数を区別したければ、グローバル変数を
名前空間に入れておけばよい。
0216デフォルトの名無しさん
NGNG180>>>>>>つっかかってるやつ>215
0217デフォルトの名無しさん
NGNGもうええっちゅーのに。
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGローカル変数は同名の変数によって完全に隠蔽されてしまうから
それは無理。
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG/ \
/ ヽ
| (●) (●) |、
/ | ::::: \___/ ::: | \
(_/ヽ \/ /ヽ_)
\ /
-、、,,,,,__,,,,,、、-
( __) (__ _)
0225デフォルトの名無しさん
NGNG例えばこんな感じで
switch( null )
{
case p:
{
break;
}
case o:
{
break;
}
}
0226デフォルトの名無しさん
NGNG変数使うときだけ囲ってる。
switch( null )
{
case p:
{
char ga[] = "ガッ";
break;
}
case o:
break;
}
0227デフォルトの名無しさん
NGNGノセラレテじゃじゃじゃじゃ〜ん
void hoge()
{
struct{
int i;
}my;
my.i = 10;
{
int i=100;
cout<<i<<' '<<my.i<<endl;
}
}
0228デフォルトの名無しさん
NGNGABC
っていうのがあって
この型の変数を定義する場合
ABC gABC;
ABC new gABC;
とnewをつける場合とつけない場合って
どういう違いがあるのでしょうか?
0229デフォルトの名無しさん
NGNGコンパイル通らねえだろソレ
0230デフォルトの名無しさん
NGNGやっぱり g_ のプリフィクス?
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNG漏れはメンバ変数には prefix に _ を使っています。
グローバル変数は使ったことありません。
定数なら全部大文字にしてるけど。
それより、クラス変数 (っていうんだっけ?) には
何を使えばいいんですか?(static Class::xxx)
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNGm_*****
を使うのが普通では?
0235デフォルトの名無しさん
NGNGまあ、GoFがこれやっちゃってる悪しき例なんだが。
0236デフォルトの名無しさん
NGNGglobalは全部globalネームスペースに詰め込んで
global::
でアクセスします
0237デフォルトの名無しさん
NGNGusing namespace std;
int main() {
bool b1 = true , b2 = false , b3 = 0;
if (b1 && (b2 || ++b3)) cout << "Kitty on your lap";
cout << b1 << b2 << b3 << b1 && (b2 || ++b3) << endl;
return 0;
}
このコンテキストではオーバーロード'endl'が曖昧というエラーがでます。
<< endl を省くとコンパイルできるのですが
なぜ endl がダメなのか、わかりません。
コンパイラはBorland C++5.5.1です。
よろしくお願いします。
0238デフォルトの名無しさん
NGNG曖昧でないと言えるのか?
ごちゃごちゃ書いてあるけど、問題はこういうことだろ。
cout << b1 && b2 << endl;
0239デフォルトの名無しさん
NGNG何故C++はTLSをサポートしないのですか?
0240デフォルトの名無しさん
NGNG0241240
NGNGthreadはC++の範囲外だからサポートも糞もないのよ。
そんだけ。
0242デフォルトの名無しさん
NGNGそれでも範囲外ですか?
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGWindowsで動けば充分ですよね?
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGよろしくお願いします。
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNG>TLSって必須じゃないですか?
マルチスレッドのアプリいくつか作ったけど
TLS使ったことないよ
必須なの…?
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG隠れていて気が付かないだけでは?
0252デフォルトの名無しさん
NGNGこれは自前で並べ替えるのが常なんでしょうか?
read( void*, size, ios::big_endian )みたいなのはないのかな?
用意されているのに自分で作るのもなんあので
0253デフォルトの名無しさん
NGNG見えるのは気のせい?
0254デフォルトの名無しさん
NGNG253に同意だが、とりあえず答えてやる。
「ない」
0255デフォルトの名無しさん
NGNGどうしたらいいのだろうか。処理の意味的にビュークラスやアプリクラスには入れられない。
こういうものなのだろうか?
0256デフォルトの名無しさん
NGNG家のインテルマシンでリトルエンディアン仕様のファイルを読み込もうとしたのです。
上位桁から順番に並んでるデータを。
バイト列を読み込んでそのままキャストしたらだめなんですよね?
あれ?どういうふうに理解していないと思われたのでしょうか?
>「ない」
どうもです
0257デフォルトの名無しさん
NGNG0258252=256=257
NGNGios::endian_irekaete にしときます
0259デフォルトの名無しさん
NGNGint a;
short b;
char c;
stream.read(&a,sizeof(a),ios::big_endian);
stream.read(&b,sizeof(b),ios::big_endian);
stream.read(&c,sizeof(c),ios::big_endian);
みたいな使い方をするという意味?
ただ、そのインターフェースはいまいちな気がするなぁ。
(iostream自体がいまいちだという突っ込みは無しの方向で)
read( int & ret, ios::big_endian );
read( short & ret, ios::big_endian );
read( char & ret, ios::big_endian );
の方が自然かと。
いずれにしても無いけど。
0261デフォルトの名無しさん
NGNGchar型の変数を定義する場合
char* pszABC = new char[10];
char szDEF[10];
とnewをつける場合とつけない場合って
どういう違いがあるのでしょうか?
0262デフォルトの名無しさん
NGNG解放されるタイミングと型
0263デフォルトの名無しさん
NGNG下のサイズは常数のみ
0264デフォルトの名無しさん
NGNGそこらへん、もうちょっと詳しくお願いします。
char* pszABC = new char[10];
と宣言したpszABCは
delete pszABC;
しないとメモリーリークを起こしてしまいますよね?
char szDEF[10];
と宣言したszDEFは、特にメモリー解放しなくてもいいですよね。
なんで?
どちらも、メモリー上にchar型10桁分の領域は確保してはいるんですよね?
0265デフォルトの名無しさん
NGNGキーワード
スタック ヒープ
0266デフォルトの名無しさん
NGNG>235
>_をprefixにするのは良くないらしいよ。システムが予約してるんだそうな。
これは半分本当で半分間違い.予約されてる名前の規則は実はちょっと複雑.
>まあ、GoFがこれやっちゃってる悪しき例なんだが。
GoFの名前の付け方は規格には違反してないと思います.
0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNGですね.細かいことにこだわりすぎました.失礼.
0269デフォルトの名無しさん
NGNG炎ディ案が問題になるならバイナリで読み書きすることが間違い。
0270デフォルトの名無しさん
NGNGキーワードは規格に出てくる言葉にしたほうがいいかも。
自動変数 動的確保
0271デフォルトの名無しさん
NGNG先頭の_は、非グローバルでその次に大文字がこなければ使っても良い。
__と2連続で_が出てくる名前は使用不可。
0272デフォルトの名無しさん
NGNG既存のファイルフォーマットでエンディアン指定されたバイナリのフォーマットって沢山あるし・・・
そういうの読みたいときもあるじゃん。
0274デフォルトの名無しさん
NGNGなんと、その程度なんだ
使っていこうかなぁ…m_は好かないので
何も付けずにやってたけど、評判悪いし
0275デフォルトの名無しさん
NGNGchar* pszABC = new char[10];と宣言したpszABCはdelete pszABC;
とすると未定義の振る舞い。delete[] pszABC;とせねば何が起きるか
分からない。
0276デフォルトの名無しさん
NGNG前につけるのは混乱を呼ばないか?
0277デフォルトの名無しさん
NGNG禿に文句いえYO
0278デフォルトの名無しさん
NGNGint _value; // OK
int _Value; // NG
int other_value; // OK
int other__value; // NG
};
int _value; // NG
int _Value; // NG
こんな感じかな?
0279デフォルトの名無しさん
NGNGお勧めしない。
現にExceptional C++ではくそみそに非難されてた。
0280デフォルトの名無しさん
NGNGまあ、漏れも_のprefixには反対だが
0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNGプリプロセッサ用の予約名は大文字で始まるから問題ないんだよ。
0286デフォルトの名無しさん
NGNGExceptional C++に書いてある。
0287デフォルトの名無しさん
NGNG先頭がアンダースコアになっている名前は、実装や実行時の環境の特別な機能のために
予約されているので、アプリケーションプログラムではそのような名前を定義しないように
するべきである
0288デフォルトの名無しさん
NGNGうん、だからといってそれはC++でコードを書くときに使ってはいけない理由にならない。
標準以外のマクロや関数を提供してる処理系なんていくらでもあるんだし。
たとえば、VC++でmin/maxというマクロが設定されてるんだけど、
その名前を絶対に使うなってのは無茶ってものだ。
0289デフォルトの名無しさん
NGNGせめて ifdef __cplusplus で囲って欲しいのだが
0290デフォルトの名無しさん
NGNGmin/maxだって使わないのがいいだろうね。
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG[Each name that contains a double underscore (__)]
or
[begins with an underscore followed by an upper-case letter]
is reserved implementation for any use
[Each name that begins with an underscore]
is reserved to the implementation for use as a name in the
*global namespace.*
0293デフォルトの名無しさん
NGNGVCじゃmin/maxつかわないほーがいいだろうけど、他の処理系使うときにまでそんな事言わないだろ。
282みたいな実装の処理系があるからと言って、関係ないところでそれを制限するのは筋違いだ。
0294デフォルトの名無しさん
NGNGそこは標準*ライブラリ*のページだね。
C++のページには予約語の説明ないのかな?
0295デフォルトの名無しさん
NGNGでも移植性はなくなる。
筋違いとは思わない。
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNGboostの中身はundefの嵐さ
0299デフォルトの名無しさん
NGNG・アンダースコアで始まる名前はグローバルのみで予約されている
・プログラミング言語C++は間違い
・それにもかかわらず、#defineで使っている処理系がある
でいいの?
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG俺は止めないから。
0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNG実際に#defineで使っている処理系がある以上、移植性がなくなるし
面倒に巻き込まれる可能性が出て来るのであれば、避けるべき。
思考停止できるということは、聞こえは悪いが、この場合に限っては利点だよ。
0309デフォルトの名無しさん
NGNGやっぱお前バカだ。
正当とか関係なく避けたほうがいいことはある。
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNGどの処理系が#defineで使っているかまでは知らないけど、使わない方が
良いことは確かだね。
0312デフォルトの名無しさん
NGNGなんか魅力的なんだよな、_メンバ
魅力あるから話題になるんだろうし
0313デフォルトの名無しさん
NGNGtemplate<typename _Type> static inline void endian(_Type & val) {
std::reverse(reinterpret_cast<char *>(& val), reinterpret_cast<char *>(& val + 1));
}
って定義があって、構造体のメンバに対して例えば
struct Foo {
double bar;
int baz;
} foo;
endian(foo.bar);
endian(foo.baz);
ってな感じで使ってるコードがあるんですが、endian()の中で一体全体何が起きているのか
教えちゃあ貰えないでしょうかね。
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG>#defineで使っている処理系がある以上
そのシンボルだけ避ければ良い話じゃないか?
#defineで使われている可能性を論じるのなら
C++で認識可能なあらゆるシンボルが使えなくなってしまうし。
0316313
NGNGいやさ、そいつは判らない訳じゃあないんですが、どんな仕掛けになってるのかって処がよく判らないんでさ。
普通にCで書くならポインタとサイズを渡さないといけないわけで、それを巧いことやっつけてるってぇことは想像つくんですがね。
0317デフォルトの名無しさん
NGNG0318デフォルトの名無しさん
NGNGそうやっていちいち避けるのが面倒だから使わないようにするという話だろ。
実際問題、それ以外であまりに迷惑な#defineのされ方はしない。
>>316
val + 1でサイズ分移動するだろ。
0319313
NGNGつまりendian()の中身は
reverse((char *) &val, (char *) (&val + 1));
って感じだと。これで終了位置がわたるってぇことは、この場合のtemplateは<>で括らなくてもきちんと型情報が伝わってるってことですかい。
なにやら巧い仕組みですなぁ。
いやほんとにC++は面白いもんですな。てめぇで書くのはちょっとばっかし難儀しそうですがね。
>>314、>>317、>>318
いやぁ、忝い。
0320デフォルトの名無しさん
NGNGval+1でポインタのアドレスはサイズ分移動するだろ。
templateは<>でくくらなくてもってのは意味不明。
templateで型情報がコンパイル時に伝わってるというのは
ある意味正しいかもしれないが。
0321デフォルトの名無しさん
NGNGぶっちゃけ「揉め事を起こしたい」だけだな。
よっぽどの使用価値を提示できない限りは。
0322デフォルトの名無しさん
NGNG「名前_ 」としますか。
0323デフォルトの名無しさん
NGNG0324313
NGNGいやほら、vectorなんてぇのは<>で型を括るじゃあないですか。
なんとなくそんなイメージがあったんで、endian(foo.bar)だけで型が判るのかと思ったわけですよ。
0325デフォルトの名無しさん
NGNG関数名は?
そういやシンボル名といえば、昔 end ってシンボルを定義してハマったことがあるな。
その処理系だと、リンカが end ってシンボル予約してやがって、特定のタイミングで
メモリを壊すプログラムになってしまったという。(後で _end に変わってたけど)
0326デフォルトの名無しさん
NGNGクラステンプレートは型必須、関数テンプレートは引数から推測可能なら
型は省略できる。
0327デフォルトの名無しさん
NGNGまあそんな感じ。
コンパイラはendian(foo.bar)が使われているのを見ると、double用のendianが
使われているのがわかるから、double用のendianのコードを生成できる。
これ以上情報要らないだろ?
0328デフォルトの名無しさん
NGNGおっと合点承知の介。重ね重ね痛み入ります。
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG廃止する予定の変数・関数はいつまで経っても廃止されない。
0332デフォルトの名無しさん
NGNG0333デフォルトの名無しさん
NGNGconst HOGEP[10] = { Hoge::A, Hoge::B, ・・・};
というのを一気に
const void (Hoge::*HOGEP[10])() = { Hoge::A, Hoge::B, ・・・};
としたらvoidからconst voidに変換できないとコンパイラに言われました
で行き当たりばったりにいろいろ試してみると
void (Hoge::*const HOGEP[10])() = { Hoge::A, Hoge::B, ・・・};
でコンパイルが通ったのですが意味的におなじでしょうか?
0334デフォルトの名無しさん
NGNGおなじです。
(でもたぶん上のコードはコンパイルできない)
0335デフォルトの名無しさん
NGNG> const void (Hoge::*HOGEP[10])()
HOGEP は
Hoge クラスのメンバ関数へのポインタの配列で、
ポインタが指すメンバ関数の型は引数無し・戻り値 const void 型
(const は戻り値にかかってしまい HOGEP[0], HOGEP[1], ... は const ではない)
> void (Hoge::*const HOGEP[10])() = { Hoge::A, Hoge::B, ・・・};
Hoge クラスのメンバ関数への書き換え不可能なポインタの配列で
ポインタが指すメンバ関数の型は引数無し・戻り値 void 型
typedef で定義してるのと後者は同じ意味になる。前者は全然違う。
C/C++ の型定義は微妙に分かりづらいので、悩んだら素直に typedef
しとくのが吉だよ。
0336デフォルトの名無しさん
NGNG変数名を書き忘れていました
ただしくは
const HOGEP hogep[10] = { Hoge::A, Hoge::B, ・・・};
でした
レスありがとうございmす
0337デフォルトの名無しさん
NGNGさらに詳しくありがとうございます
0338デフォルトの名無しさん
NGNGご教授おねがいします
0339デフォルトの名無しさん
NGNG{
/* 環境依存なので好きなコードを */
}
int get_mouse_cursor_position(int* x, int* y);
{
/* 環境依存なのでお望みのコードを */
}
unsigned int status;
get_mouse_button_status(&status);
int x, y;
get_mouse_cursor_position(&x, &y);
0340デフォルトの名無しさん
NGNGoperator=も省略の対象になるんでしょうか?
自分は全てのクラスにコピーコンストラクタとoperator=を入れるようにしているので
コピーコンストラクタと違って省略されないようだとパフォーマンスに無駄が出ますよね。
0341デフォルトの名無しさん
NGNGA a;
a = 1;
素直に考えると、 a = 1 が a.operator=(A(1)) になるわけだけど、
このうちのどこが「省略」できる?無理じゃない?
0342340
NGNGoperator=の中身は普通に代入のみで
コピーコンストラクタと同様なのですが
コンパイラにそれはわかりませんよね。
やっぱり省略はされないんですね。
struct A
{
int a;
void A( const A& other) : a(other.a){}
A& operator=( const A& other){ a = other.a}
};
また、COMの関係上operator=が必要なクラスがあるのですが
その派生クラスにはoperator=のオーバーライドは必要になるのでしょうか?
struct B : public A
{
B& operator=( const B& other){ return A::operator=( other);} // 必要か?
};
0343デフォルトの名無しさん
NGNG> また、COMの関係上operator=が必要なクラスがあるのですが
> その派生クラスにはoperator=のオーバーライドは必要になるのでしょうか?
意味はわからないが、コードを見る限り要らない。
代入演算子の宣言が無く、基底クラスと各メンバの代入演算子が有効な場合は
それらを使ってデフォルトの代入演算子が定義される。
0345デフォルトの名無しさん
NGNG書籍に載っているコードで、正誤表を確かめたのですが正誤表には載っておらず困っています。
使用しているソフトはVC++6.0です。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_32/code.txt
0346デフォルトの名無しさん
NGNGclass Myrectangle1 : public Rectangle
{
public:
Myrectangle1();
} ←セミコロンが抜けてる。Myrectangle2も同様。
0347デフォルトの名無しさん
NGNGレスありがとうございます
VC++.netなんですがマウスポインターの座標と押されたマウスボタンを検出する
命令にはどんなのがあるんでしょうか?
0348デフォルトの名無しさん
NGNGクラスB内でそのポインタをdeleteしても大丈夫なんでしょうか。
0349デフォルトの名無しさん
NGNGう。。。よくみたら抜けてますね。。。お恥ずかしい。。
ありがとうございました(泣
0350デフォルトの名無しさん
NGNGその後のクラス A からの間接参照や delete 等がなけりゃだいじょうぶっちゃあだいじょうぶだが
オブジェクト指向の流儀に反するんで一般的にはやらないほうがいい。
A が builder とか B の補助クラスとかなら別だけど。
0351デフォルトの名無しさん
NGNGWin32API質問箱 Build22
http://pc5.2ch.net/test/read.cgi/tech/1092524669/
↑
こっちで訊いた方がいいよ。ちなみに当該 API は、
現在の状態なら GetCursorPos, GetAsyncKeyState、
現在処理中のウィンドウメッセージが発生した時点の状態なら GetMessagePos, GetKeyState
0352デフォルトの名無しさん
NGNGレスありがとうございます
GetCursorPos, GetAsyncKeyStateについて調べてみます
0353345
NGNG上のコードのメインのfor文でなぜか画面に文字が表示されず困っています。
コンパイルは通るもの、どこが間違っているのか教えていただけないでしょうか。
0354デフォルトの名無しさん
NGNGforの条件式をよく見ろ。
0356デフォルトの名無しさん
NGNG質問には関係ないことだけど、コメントの書き方が良くない。
インデントもおかしいし。const int& にする意図も良く分からない。
0357デフォルトの名無しさん
NGNGpointer = 32bit
環境でパフォーマンスの問題が出にくいようにするためだろう。
逆のケースの方が多いけど
0358新米C++グラマーの独り言
NGNG昨日は動的にメモリを確保しているクラスに
自前 operator= を定義していなかったせいで
プログラムが変なところで止まって6時間悩んだし、
今日は外部から渡されたインスタンスを
リファレンスで保持していたせいで
たまたま生成元のインスタンスが
自分より逝ってしまう状況になった途端
プログラムが止まっちゃって3時間悩みました。
明日は何事もなければいいなぁ。。。
そうだ、今ならまだ _ を prefix から suffix にできる
チャンスかも知れない。来週前半に置き換えよっと。
0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNG0361本日の藁
NGNG{
int a;
int* b;
int& c = *b;
b = &a;
a = 69;
std::cout << a << std::endl;
std::cout << *b << std::endl;
std::cout << c << std::endl;
}
しばらく考え込んでしまった・・・
0362マイク ◆yrBrqfF1Ew
NGNG0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNG0368デフォルトの名無しさん
NGNG使い方によるだろ。
俺は拡張子に .c を指定して、極力 class や template を使用しないようにしているが、
例えば inline を使っても使わない時と比べてもほとんど知力は変わらない。
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGこれは何か問題になることがありますか?
0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNGどうもありがとうございました。
0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNGローカル変数ならdelete出来ないと思いますが。
newした後ポインタを保持しないサンプルソースは見たことがあります。
当然delete thisしています。
0376デフォルトの名無しさん
NGNGstrdupという関数を使って、
char* a = strdup(name) nameは文字列
と、
char* a = new char[strlen(name) + 1]
strcpy(a, name)は、
同じ働きなんですか?
0377デフォルトの名無しさん
NGNG知ってるかもしらんけど、デストラクタをprotectedやprivateにすると吉かも。
>>376
非標準な関数だから一概には言えんけど、newじゃなくてmallocでなかろうか。
0378デフォルトの名無しさん
NGNGそうなんですか〜 mallocっていう関数はまだ使った事がないんですよね。
文字列のコピーは今までnewして、strcpyでやってたもので・・・。
たまたま、今勉強しているところで、strdupっていうのが出てきて、
今まで通りのやり方でも出来るんじゃないか??って疑問に思ったんですよ。
ありがとうございました!
0379デフォルトの名無しさん
NGNGなるほど、勉強になります。
0380デフォルトの名無しさん
NGNGふつうはstrcpyじゃなくてmemcpyを使う。
0381デフォルトの名無しさん
NGNGHDC hdc;
LPTSTR lptStr = TEXT("111");
hdc = GetDC(hWnd);
TextOut(hdc , 0 , 0 , lptStr , lstrlen(lptStr));
ReleaseDC(hWnd , hdc);
これだと111が表示されるのですが
変数Aの内容を表示させたい時はどうすればいいのでしょうか?
0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNGsprintfと言いたいが_stprintfかwsprintfの方がいいだろうか。
0384デフォルトの名無しさん
NGNGどうすればいいですか?
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNGint array[100];
//hogehoge
std::sort(array, array + 100, std::greater<int>());
0387デフォルトの名無しさん
NGNGこういうのってそのままやっちゃって良いんですかねぇ。
フラグメンテーションが気になる、元ゲーム系…。
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNGそう思うならプールしろよ。
0390デフォルトの名無しさん
NGNGうまく回避するにはどうすればいいですか? operator+()などでは自分自身を変えたくないので自動変数を使っています。
static A cNewA; みたいにすれば出来るには出来ましたが、再起処理の中で使うと収集つかなくなりそうです。
DWORD g_dwIndex=0;
class A{
public:
DWORD m_dwID;
char *m_pcBuff;
A(){ m_pcBuff=new char[1000]; m_dwID=g_dwIndex++; }
A(LPCTSTR pStr){ m_pcBuff=new char[1000]; strcpy(m_pcBuff, pStr); m_dwID=g_dwIndex++; }
void SetString(LPCTSTR pStr){ strcpy(m_pcBuff, pStr); }
~A(){ delete [] m_pcBuff; TRACE("*******(%u)のデストラクタ*******\n", m_dwID); }
void Add(LPCTSTR pStr){ strcat(m_pcBuff, pStr); }
A& operator=(A& cTarget){ //(2)ここで引数内のバッファが消滅されてる
strcpy(m_pcBuff, cTarget.m_pcBuff);
return *this;
}
A& operator+(A& cTarget){
A cNewA(m_pcBuff);
cNewA.Add(cTarget.m_pcBuff);
return cNewA; //(1)ここまでは正常"ABC"+"DEF"→"ABCDEF"@cNewA
}
void Disp(){ TRACE("%s\n", m_pcBuff); };
};
0391デフォルトの名無しさん
NGNGint main(){
A cA("ABC"), cB("DEF"), cC;
cA.Disp();
cB.Disp();
cC=cA+cB; //ここでエラー
cC.Disp();
}
0392デフォルトの名無しさん
NGNGDWORDとかLPCTSTRみたいなWin32な定数を全部C++標準で表現できる
基本型に直してから出直せ。
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGプッ
0395デフォルトの名無しさん
NGNG>(2)ここで引数内のバッファが消滅されてる
~~~~~~~~~
まともな日本語が話せるようになってからうpちまちょうね〜坊や( ´,_ゝ`)プッ
0396デフォルトの名無しさん
NGNG0397390
NGNG>>392
再度長々と書き込むのもあれなんでunsigned longとconst char *に読み替えてください
>>393
出来るのなら左辺側の参照かポインタでも得たいものですが、operator()でそういう手段ありました?
0398デフォルトの名無しさん
NGNGEffective C++ 23項
「オブジェクトを返さなければならないときに、リファレンスを返そうとがんばるのはやめよう」
A& operator+(A& cTarget)
↓
A operator+(A& cTarget)
この項には君が悩んでいる問題とほとんど同じ内容が書かれている。
0399デフォルトの名無しさん
NGNGEffective C++ 31項
「関数は、ローカルオブジェクトへのリファレンスや関数の中でnewで初期化したポインタの参照先
を返してはならない」
基本中の基本です。>>393さんが実はさらりと答えてくれてるけど。
0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNG>>399
>>400
A operator+(A& cTarget) もやってみて駄目だったのですが、何でだろうと
悩んでいたところひょっとして自分と同じ方の参照を引数としたコンストラクタが
必要なのでは!?と下の行を追加してみました。
//追加したコンストラクタ
A(A& cTarget){ m_pcBuff=new char[1000]; strcpy(m_pcBuff, cTarget.m_pcBuff); }
ビルドして実行してみたところ無事に実行できました。やっとこれで目的のクラスで演算子の
オーバーロードを搭載出来る目処が立ちました。どうもお世話になりました。
あとよくよく考えたらoperator=は戻り値必要ないですね
0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNGまさにそれですた orz
0405デフォルトの名無しさん
NGNG>あとよくよく考えたらoperator=は戻り値必要ないですね
cA = cB = cC; みたいな事をしないならばな。
0406デフォルトの名無しさん
NGNGそれだけではない。度々済まないが
Effective C++ 15項
「operator=を書くときは、*thisへのリファレンスを返そう」
(a = b) = c; のような、実用上意味がなさそうだが文法に違反していない文を
正しく実行できるようにするためだとか。
>>403
そうなんだが一度に言うと混乱しそうだったから。
0407390
NGNGconst ですが、ずいぶん前にconstをつけようとしていた時期がありましたが
メソッドを呼び出せなくなってそれ以来constを付けるのを控えていたのですが
宣言の末尾に付ければ呼び出せることを今更ながら知ったので、これからはconstを
付けていくことが出来そうです
0408デフォルトの名無しさん
NGNGじゃなくて〜。const付けたのと付けないのの両方が厳密に言えば必要なのよ。
でも今の質問の流れから行ってそこまで説明する必要はないと思ったわけよ。
それと mutable についてもついでに調べておいてね。
0409デフォルトの名無しさん
NGNG【C++】 const だけでメシが3杯食えちゃうスレ
http://pc5.2ch.net/test/read.cgi/tech/1078193971/
0410デフォルトの名無しさん
NGNGmutableは関係ない。
0411マイク ◆yrBrqfF1Ew
NGNGboundary-checkはどうした?
0412デフォルトの名無しさん
NGNG関係ないけど
#define UNICODE
されるとやばいんじゃないか
0414デフォルトの名無しさん
NGNGDOS画面って言うんだったかな?ビルドしたときの黒い画面なんですが、
漢字を使う事ができず、アルファベットだけしか使えません。
どうにかして使える方法はありませんか?
0415デフォルトの名無しさん
NGNG[Alt] + [半角/全角] でカナ漢字変換モードになると思うけど。
0416デフォルトの名無しさん
NGNGありがとうございました!
そんな方法があったんですね☆
それも簡単に!
0417新米C++グラマー今日の疑問
NGNGstatic Boolean fetchValue(
const HogeInstance & instance,
const String & key,
String & value);
};
とまあこんな関数があるとして、他のクラスからいちいち
HogeHogeClass::fetchValue(instance, key, value);
とクラス名を付けなくても呼び出せるようにするだけの目的で
そのクラスに HogeHogeClass を private 継承させるのは
DQN でしょうか? 他に何かうまい方法がありますか?
0418新米C++グラマー今日の疑問
NGNG0419デフォルトの名無しさん
NGNG0420新米C++グラマー今日の疑問
NGNGえー、普通の手法だと思ってたんですけど。
C++ではそういうことはしないんですか。。。
ほんじゃあクラスから出して代わりに
独自のnamespaceに入れるってのが
C++流の正しい解法なのでしょうか。
使いたいファイルでは using HogeHoge とすると。
0421デフォルトの名無しさん
NGNG間違いなくDQN。継承じゃなく包含を使え。
>>419
標準にもstaticしかメンバがないstd::numeric_limits<>という
classがあるわけだが。
0422デフォルトの名無しさん
NGNGたぶんstd::numeric_limits<>は引数としてやりとりできるようにclassになっているんだと思う。
0423デフォルトの名無しさん
NGNGchar_traits
0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNGテンプレートクラスがクラスでないと言うなら419の主張と符合するが・・・
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG0429新米C++グラマー今日の疑問
NGNG>>421
>間違いなくDQN。継承じゃなく包含を使え。
包含っていうのは今回の場合はどういうことを指すのか
よく分からないのですが、
UhiClass {
// コンストラクタ等省略
static fetchValue((
const HogeInstance & instance,
const String & key,
String & value)
{
HogeHogeClass::fetchValue(instance, key, value);
}
};
としろ、ということでしょうか? 勘違いしていたらごめんなさい。
0430デフォルトの名無しさん
NGNGinstance.fetchValue(key, val);
ってことじゃね?
0431デフォルトの名無しさん
NGNG分からないことがあるのでお教えください
int *i,*j;
i=new int[100];
j=i;
delete [] j;
↑この場合はi=new int[100]
で確保したメモリは解放されるのでしょうか?
0432デフォルトの名無しさん
NGNG0433431
NGNGどうもありがとうございます。
もうひとつよろしいでしょうか。
jは確保したメモリの先頭のアドレスだけ指しているのに、
100個連続して確保しているという情報はどこにあるのですか?
0434デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG使ってる好例ってないでしょうか?
今の自分の知識では「触らぬ神に祟りなし」という感じがして使えていないので。
0437デフォルトの名無しさん
NGNGおいおい…
0439デフォルトの名無しさん
NGNG14882:2003(1998でも良いが)のどこにそんな事が書いてある?
0440433=431
NGNG0441デフォルトの名無しさん
NGNGあれは、テンプレートコンテナ開発者のためのデバッグインターフェイスにすぎない。
コンテナを「使う」側の人間が触る必要はない。
0442デフォルトの名無しさん
NGNG知るかヴォケェ、が正解。処理系作る人間でない限り知ったこっちゃないし、そうなら好きにすればいい
0443デフォルトの名無しさん
NGNG確保した順にサイズをスタックへ突っ込んで突っ込んで突っ込みまくる。
0444440
NGNG分かりました、とりあえずメモリの解放は
暗黙のうちにできてしまうと言うことですね。
>>443
順番に突っ込んで行ったら順不同でメモリ解放するとき
どうなってしまうのでしょうか。
0445デフォルトの名無しさん
NGNG実装の一例として>>434の様なものもあり
だがそれに依存するコードを書くのはお勧めしない
0446440
NGNGそれではとりあえずイメージとして
>>434のように考えておけば安心できそうなので、
自分の中ではそれで納得してみます。
あくまでイメージなので
それに依存するようなことはしませんが。
0447デフォルトの名無しさん
NGNGほんの一例だが
#include <iostream>
int main()
{
char* p = new char[100000];
std::cout << *reinterpret_cast<size_t*>(p - sizeof(size_t)) << std::endl;
delete p;
}
BCC5.6.4
100000
VC7.1
1574657
gcc3.4.1(MinGW)
524545
BCC5.6.4は>>446さんのイメージ通りの結果かもしれないが、VCやMinGWでは
どうも他の手段でサイズをストアしているようだ。これだけからは何とも言えないが、
少なくともこの機能に依存したプログラムは移植性がない事だけはわかる。
0448デフォルトの名無しさん
NGNG×delete p;
○delete[] p;
0449デフォルトの名無しさん
NGNGむしろ、BCCのように実行時にまで値をストアしてる処理系があったことの方が驚き。
0450デフォルトの名無しさん
NGNG0451440=446=431
NGNGstd::cin>>i;
p=new int[i];
のようにしたときは実行時にも
どこかに確保したサイズ情報があることになると思うのですが。
それがどこにあるか分かれば、
メモリ解放するとき半分だけ解放のような
奇妙なことができるわけですか?
0452デフォルトの名無しさん
NGNG#include <iostream>
int main()
{
int i;
std::cin >> i;
char* p = new char[i];
std::cout << *reinterpret_cast<size_t*>(p - sizeof(size_t)) << std::endl;
delete[] p;
}
で、100000を入力。
BCC5.6.4
100000
VC7.1
1574657
gcc3.4.1(MinGW)
524545
結果は変化ありませんですた。
0453デフォルトの名無しさん
NGNGどうしても桁区切り文字がでちゃうんだけど
出さないようにするにはどうすればいい?
0454デフォルトの名無しさん
NGNG面白い処理系だな。それともロケールの問題か?
0455デフォルトの名無しさん
NGNG0456デフォルトの名無しさん
NGNGなるほどーとか思って
std::locale::global( std::locale("") );
したらとりあえず消えました。thx
処理系はVC6+STLportなんだけど...
どっかでロケール変更されてるのかしら
>>455
はははイミワカンネorz
勉強してきまふ
0457デフォルトの名無しさん
NGNGSTLportだと
std::cout.imbue(std::locale("En_US"));
でカンマが付くようになるな。どっかで指定されてない?それともデフォルトの
ロケールがおかしくなっているの鴨。
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGない。
特定のフレームワークに依存して良いなら、もう少し楽できることもある。
MFC 使うとか。
環境絞り込んで書いてみ?
0461デフォルトの名無しさん
NGNGifstream i;
char c[51];
i.open("test.txt")
while(!(i.eof())){
i.getline(c,50);
}
でtest.txtに50字以上の行が含まれていると強制終了
してしまうようなんですがこれは仕様なんでしょうか?
前にどこかのサイトでこの場合50字だけ読み込んでくれる仕様だと
勉強した記憶があるのですがそのサイトがどこだったか忘れてしまい
自分の記憶にも自信がありませんで、ここに頼らせてもらうことにしてしまいました。
すいませんがよろしくお願いします。
0462デフォルトの名無しさん
NGNG0463デフォルトの名無しさん
NGNGgetlineは指定した長さ以上のバッファには書き込まない。
0464デフォルトの名無しさん
NGNGそれだとgetlineが読み込むのは49字。
そして行末に達する前に限度まで読み込むと i.fail()==true;になる。
これ以上は自分で調べなさい。
というか、ちゃんとした入門書なりリファレンスなりを手元においとかな
勉強にならんだろ。
0465461
NGNGどうもありがとうございました。。
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNGきっと作った本人たちも「や、やっちまった」と、後悔してると思います。
0468デフォルトの名無しさん
NGNGどうかね? あれを作ること自体が C++ の試運転であって、目的は果たせたんじゃないか?
良い結果も悪い結果もすべて C++ の仕様について検討するためのデータになればいいんであって、
その残りかすそのまま ISO 標準にされたのは禿にとってゴミを拾った奴らに勝手に献上されて恥をかいたって図式だと思うぞ。
俺に言わせれば言語仕様とライブラリが同一の規格になっていることこそ( ゚д゚)ハァ?な状況だ。
0469デフォルトの名無しさん
NGNG失敗した。
0470デフォルトの名無しさん
NGNG0471名無しさん@Vim%Chalice
NGNG0473デフォルトの名無しさん
NGNGint a;
A() : a(0) {}
A(const A& ref) { a = ref.a; }
};
struct B : public A {
int b;
B() : b(0) {}
B(const B& ref) { a = ref.a; b = ref.b; }
};
B b1;b1.a=1;b1.b=2;
B* b2 = new B();
A* a = b2;
*a = b1;
こんなことやりたいのですが、当然オブジェクトのスライシングがおきますよね。
コピーコンストラクタをvirtualにできるわけも無いですし、cloneメソッドを実装するしかないんですか?
0474デフォルトの名無しさん
NGNGすみません。助けてください。
今、ハッシュでデータを管理して、それを二分探索木で検索するようなプログラムを作っているのですが、
削除する名前を検索して削除するっていうのをやりたいんですが、
それがなかなかうまくいきません。コメントアウトしているところが問題のところです。
エラー内容が
D:\TEST PROGRAM\基礎のプログラム\ハッシュ法\ハッシュ法(クラス).cpp(222) : error C2664: 'Node_smallest' : 2 番目の引数を 'const char *' から 'char *' に変換できません。 (新しい機能 ; ヘルプを参照)
変換で修飾子が失われます。
D:\TEST PROGRAM\基礎のプログラム\ハッシュ法\ハッシュ法(クラス).cpp(233) : error C2440: '=' : 'const char *' から 'char' に変換することはできません。(新しい動作 ; ヘルプを参照)
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。
というやつです。考えは、削除したい所をpNext[1]の方の最小値を全て入れ替えて、削除するっていうやり方を
しようと思いました。他に良い方法があったら、その方法も教えていただければ嬉しいです。
若輩者ですが、ご指導お願いします。
0475デフォルトの名無しさん
NGNGエラーメッセージを読め。
それから、「コメントアウト」というのはコードの一部をコメントにすることだ。
0476デフォルトの名無しさん
NGNG- const char* pName;
+ char* pName;
- *pName = pNode->pName;
+ pName = pNode->pName;
0477474
NGNGどうしたらいいのか、教えてもらえないでしょうか?
0478デフォルトの名無しさん
NGNGエラーメッセージ見てわかんないなら入門書から読み直しが必要だな。
0479474
NGNG0480デフォルトの名無しさん
NGNGその場合コピーコンストラクタじゃなくて、代入演算子をvirtualじゃまいか
0481デフォルトの名無しさん
NGNGテキストファイルに出力して、そのファイルをもう一度読み込み別の
テキストファイルに出力するにはどうしたらよいでしょうか?
0482デフォルトの名無しさん
NGNG#include<iostream>
#include <fstream>
int main()
{
typedef std::istreambuf_iterator<char> isbi;
typedef std::ostreambuf_iterator<char> osbi;
std::fstream f1("file1", std::ios::in | std::ios::out | std::ios::trunc);
std::copy(isbi(std::cin), isbi(), osbi(f1));
std::ofstream f2("file2");
f1.seekg(0);
f1.clear();
std::copy(isbi(f1), isbi(), osbi(f2));
}
0483デフォルトの名無しさん
NGNGf1.clear()って必要あったっけ?
EOFまで読むとエラーフラグ立ちっぱなしになるのは知っているが・・・
0484デフォルトの名無しさん
NGNGいらなかったな。rewind()の感覚で書いてるもんでつい…
0485デフォルトの名無しさん
NGNGアドバイスありがとうございます。
私はC++始めたばかりなので難しすぎてよくわかりません。。
もう少し具体的に説明しますと
void Display_contact()
{
char cTemp[80], GivenName[20], FamilyName[20], Address[40], Phone[15],
EmailAddress[25], DateofBirth[20], TypeofContact[3];
ifstream ContactBook;
ContactBook.open("contact.txt",ios::beg);
clrscr();
cin.seekg(0);
cin.clear();
cout << "\t\t\tCONTACT MAINTENANCE SYSTEM\n" << endl;
cout << "\t\t\tALL CONTACTS\n" << endl;
if (!ContactBook)
{
cout << "cannot open file";
getche();
}
0486デフォルトの名無しさん
NGNGwhile( !ContactBook.eof() )
{
ContactBook.getline(GivenName,20);
ContactBook.getline(FamilyName,20);
ContactBook.getline(Address,40);
ContactBook.getline(Phone,15);
ContactBook.getline(EmailAddress,25);
ContactBook.getline(DateofBirth,20);
ContactBook.getline(TypeofContact,3);
0487デフォルトの名無しさん
NGNGcout << GivenName << " " << FamilyName << "\t\t\t";
cout << EmailAddress<< "\t\t\t";
cout << TypeofContact<< "\t\t";
cout << Address << "\t\t";
cout << Phone << "\t";
cout << DateofBirth << "\n\n\n";
↑のファンクションはすでに入力されたテキストファイルを読み込んでディスプレイするのですが
こんな感じでcontact.txtを読み込んで下のcoutみたいに形を整えてもう一度別なファイル名で出力したいんです。
申し訳ないのですがもう一度アドバイスお願いできますか?
0488デフォルトの名無しさん
NGNGofstream out("ファイル名");
として、coutの代わりにoutを使えば良い。
0489デフォルトの名無しさん
NGNG#include <iterator> が抜けてる。
copy + streambuf_iterator より、 operator<< + rdbuf() のほうがよくない?
0490デフォルトの名無しさん
NGNGその場合ofstream out("ファイル名");は出力ですよね?読み込みはどうすればよいのですか?
contact.txt から report.txtというファイルに出力したいのですが、その場合読み込みはどこら辺に
どうやって書けばいいですか?度々質問して申し訳ないですがお願いします。
0491デフォルトの名無しさん
NGNG確かにそうだ。
>>490
>>485-487の出力部分だけcoutからofstreamに書き換えればいいだろ。
0492デフォルトの名無しさん
NGNG一応動いたのですがテキストファイルが空っぽなんです。。
ofstream out("report.txt");
out << GivenName << " " << FamilyName << "\t\t\t";
out << EmailAddress<< "\t\t\t";
out << TypeofContact<< "\t\t";
out << Address << "\t\t";
out << Phone << "\t";
out << DateofBirth << "\n\n\n";
}
ContactBook.close();
}
これであってますか?
0493デフォルトの名無しさん
NGNGエラーの原因が構造体のconstってのはわかって、コンパイルできたんですけど、
ビルトすると、途中でエラー終了してしまいます。
あの、今回はマジで教えてもらえないでしょうか?
0494492
NGNG>>482 >>483 >>484 >>488 >>489 >>490
アドバイス本当に感謝です!!
あと一回に表示する件数を4件にしたいのですが
どうやったらいいでしょう?
0496デフォルトの名無しさん
NGNG無理です。
0497デフォルトの名無しさん
NGNG質問なんですが、ハッシュ法で、二分探索木を使うよりも、双方向リストで挿入法を使うほうが早いですか?
それとも、遅いですか?
0498デフォルトの名無しさん
NGNGだから挿入のほうが気持ちいいから!
終了!
0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGどうやって学習したらいいのでしょうか?
0502デフォルトの名無しさん
NGNGVC++.Net 2003買え。VC++バージョン7相当だ。
0503デフォルトの名無しさん
NGNGVisual C++ Toolkit 2003使え。タダでVC++.NET2003Pro以上だ
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNGOSによる。
0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNGWin32 とか UNIX 使ってれば間違いないやね。
ただしデストラクタは呼ばれないから、共有メモリとか一時ファイルの類は
消えない可能性アリ。注意。
0508デフォルトの名無しさん
NGNGスレ違い
0509デフォルトの名無しさん
NGNGびっくりするほどリソースリーク
0510デフォルトの名無しさん
NGNG0511虎夫
NGNG割り込みによって一定時間ごとにデータを取得しております。
このとき割り込みの周波数を100[Hz]に設定すると、
プログラムは0.01秒毎にタスクを行います。
(PCのCPUが十分であると考えて)
たとえばタスクA,B,Cを割り込みの1周期に1度行うとすれば、
Aのタスクは0.01秒ごとに遂行されます。
しかし、もしBというタスクが常に2秒かかるタスクだとすれば、
それぞれのタスクは2.01秒に1回しか遂行されません。
これはあれ程度しかたありません。
現在私の悩んでいる問題は、
A,Cというタスク(1回に1msもかからない)を0.01秒ごとに
遂行して、ある条件の時にBというタスクを行いたいとすると、
今のままでは、A,Cは普段0.01秒に1度タスクが遂行されますが、
Bが遂行されるときにはタスクが2秒(Bの遂行時間)待ちが生じます。
こんなとき、BをA,Cとは並列に遂行させ、
常にA,Cを0.01秒ごとに遂行させるにはどうすればよいでしょうか?
(ここで、Bが遂行中に次のBの命令がくることはないとします。)
0512虎夫
NGNG割り込みによって一定時間ごとにデータを取得しております。
このとき割り込みの周波数を100[Hz]に設定すると、
プログラムは0.01秒毎にタスクを行います。
(PCのCPUが十分であると考えて)
たとえばタスクA,B,Cを割り込みの1周期に1度行うとすれば、
Aのタスクは0.01秒ごとに遂行されます。
しかし、もしBというタスクが常に2秒かかるタスクだとすれば、
それぞれのタスクは2.01秒に1回しか遂行されません。
これはあれ程度しかたありません。
現在私の悩んでいる問題は、
A,Cというタスク(1回に1msもかからない)を0.01秒ごとに
遂行して、ある条件の時にBというタスクを行いたいとすると、
今のままでは、A,Cは普段0.01秒に1度タスクが遂行されますが、
Bが遂行されるときにはタスクが2秒(Bの遂行時間)待ちが生じます。
こんなとき、BをA,Cとは並列に遂行させ、
常にA,Cを0.01秒ごとに遂行させるにはどうすればよいでしょうか?
(ここで、Bが遂行中に次のBの命令がくることはないとします。)
0513虎夫
NGNG0514デフォルトの名無しさん
NGNG0515虎夫
NGNG書き忘れてました。
0516デフォルトの名無しさん
NGNG>>514
0517デフォルトの名無しさん
NGNG#
と先頭に#だけの行があります。
コメントみたいになにも効果はないみたいですが
コンパイラにはどう解釈されているのでしょうか?
0518デフォルトの名無しさん
NGNG割り込み?ドライバ作ってるんなら
http://pc5.2ch.net/test/read.cgi/tech/1063453024/l50
あたりで、アプリケーションでやろうとしているのなら
http://pc5.2ch.net/test/read.cgi/tech/1037636153/l50
あたりでどうぞ。
0519デフォルトの名無しさん
NGNG#の次にnew-line文字が来ていればその行は読み飛ばされる。
0521521
NGNG自動生成するツールを作りたいと思っています。
A.xml を読み込んで、A_Handler.cpp, A_Handler.h, A_Instance.cpp
A_Instance.h, A_Test.cpp を生成するようなツールです。
ちなみに複雑な定義の場合はA_Handler_add.cpp といったファイルに
記述することにして、XML の中ではそのelementに対応する定義を
自動生成しないよう設定するなどして、あまり難しい処理はせずに
一発で自動生成できるようにします。
以前に別プロジェクトで A.xml を読み込んで A.cpp, A.h を
生成するツールを作ったので、それをリファクタリングして
抽象クラス等を抜き出して再利用したいと思っています。
しかし、なかなか難しいもので、どう設計すればいいか
悩んでいるところです。
(以下4レスほど続きます。)
0522521
NGNG<GRAMMAR> -> OldDataGrammar, <ELEMENT> -> OldDataElement,
<TYPE> -> OldDataType といった具合に、一種類のタグにつき
一つのクラスを定義し、OldMain.cpp から以下のように呼び出しています。
OldDataGrammar grammar;
grammar.load(xmlparser);
grammar.printHeader(ostream_h);
grammar.printCpp(ostream_cpp);
DataGrammar の中では以下のようなメンバ関数を作っています。
void printHeader(ostream & os) const
{
printCopyrightNotice(os);
printIncludeGuardBegin(os);
printHeaderIncludeFiles(os);
printUsingNamespaces(os);
printNamespaceBegin(os);
printClassDeclaration(os);
printClassInlineDefinition(os);
printNamespaceEnd(os);
printIncludeGuardEnd(os);
}
0523デフォルトの名無しさん
NGNGヽ(・ω・)/ 今だ!ヨガテレポート!!
\(.\ ノ
,,、
0524521
NGNGvoid OldDataGrammar::printClassDeclaration(ostream & os) const
{
... (略) ...
for (int i = 0, n = elements_.size(); i < n; i++) {
elements_[i].printGetterMethodDeclaration(os);
}
... (略) ...
}
のように下位クラスを呼び出しています。呼び出された側ではこんな感じ。
void OldDataElement::printGetterMethodDeclaration(ostream & os) const
{
if (! needPrintGetterMethodDeclaration()) {
return;
} // endif
... (略) ...
output << " const " << getTypeName() << " & get" << getMethodName() << "(void) const;" << endl;
}
現状では Header と Cpp の二種類しか考えておらず、
Data* クラスの各階層に print* が山ほど散らばっています。
これを単純に五種類に増やせば破綻するのは目に見えています。
Data 部分と Print 部分を分ければいいのではと思うのですが、
どういう風に分ければいいのかあまりいいアイディアが浮かびません。
0525521
NGNGNewDataGrammar grammar;
grammar.load(xmlparser);
NewHandlerHeader handler_h(grammar);
handler_h.print(ostream_handler_h);
NewHandlerCpp handler_cpp(grammar);
handler_cpp.print(ostream_handler_cpp);
.... (略) ...
この場合、これまでどおり一種類のXMLエレメントに対応する仕事は
一つのクラスに任せることにすると、
NewDataGrammar, NewDataElement, NewDataType...
NewHandlerHeaderGrammar, NewHandlerHeaderElement...
NewHandlerCppGrammar, NewHandlerCppElement...
といった大量のクラスを作らなければいけなくなります。
うまく抽象化できているならそれでも構わないのですが、
その抽象化もなかなか難しいところです。
Header、Cpp それぞれで共通の構造を抜き出すことは多少は可能でしょうが、
DataElement::printGetterMethodDeclaration() // for Header
DataElement::printGetterMethodDefinition() // for Cpp
DataElement::printInlineGetterMethodDefinition() // for Header
のようにCppとHeader、あるいはHandlerとInstanceでは操作や構造が異なります。
このあたりうまく抽象化、パターンの適用等はできないか考えているのですが、
なかなか解決できません。皆さんならどうされますか?
アイディアや適用できるパターン等をご教示ください。よろしくお願いします。
0526デフォルトの名無しさん
NGNGあるいは XSLT で C 寄りの文法の XML に直して、そこから C へ、と2段階で。
0527デフォルトの名無しさん
NGNGcppll にでも逝ってみれ。
あそこの管理人がむしゃぶりつきそうなネタだ。
ひょっとして、ネタ的に >>521 自身があそこの管理人か?
0528521
NGNG>>526
>生成ルールを記述する適当な中間言語
といいますと、たとえば……?
何かキーワードをいただければ調べてみます。
>XSLT で C 寄りの文法の XML に直して、そこから C へ、と2段階で
あまり汎用的になりすぎてしまっても時間的に厳しいような気がします。
現段階ではXMLで定義するのはデータが中心なので
比較的簡単にあらかじめ決めた枠内のC++コードに落とせるのですが。。
それとももしかしてそういう汎用ツールがどこかに転がっていたりしますか?
>>527
情報ありがとうございます。
GoogleしてMLの紹介ページを見てきたのですが、
ライブラリ関係のMLみたいでしたが。。。
επιστημηさんの名前は聞いたことはあります。
0529デフォルトの名無しさん
NGNGあのMLはスタンス的にはこのスレとほぼ同一だから、あそこで聞いてみれ。
ネタ的にほぼ確実にあそこ管理人が相談にのってくれるから。
0530521
NGNGMLなんて三年くらい参加してないし、恥ずかしいなぁ。。。
でも、これからメールアドレスを取得してML入会してきます。
あちらで質問することを決心したらここに書きますので、
それまでの間に何かアドバイスやアイディア等ありましたら
こちらへレスをいただければ幸いです。よろしくお願いします。
0531521
NGNGhttp://www.freeml.com/ctrl/html/MLInfoForm/[email protected]
で質問してきます。皆様、ありがとうございました。
0532デフォルトの名無しさん
NGNGたまにはこっちにも帰ってくるんだよ。
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNGいいよ。
0535デフォルトの名無しさん
NGNG0537デフォルトの名無しさん
NGNGまずいの?
0538デフォルトの名無しさん
NGNGclass Test
{
public:
Test(void) : test_(new Test) {};
virtual ~Test(void) {};
private:
Test * test_;
}
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNGおもしろいですねぇ〜。
#include <iostream>
class foo
{
public:
foo() : pF(new foo){}
private:
foo *pF;
};
int main()
{
try{
// ↓例外が起きる
//foo *fF = new foo;
// 例外が起きない
foo x;
}
catch(...)
{
std::cout << "例外" << std::endl;
}
}
0543533
NGNG0544デフォルトの名無しさん
NGNGスマートポインタにしたほうが良い。
0545デフォルトの名無しさん
NGNGprivate:
Obj* p;
public:
A() try :
p(new Obj) // ←例外が起きる
{ }
catch(...) {} // ←握りつぶす
}
0546デフォルトの名無しさん
NGNG握りつぶした後、そのAのインスタンスはもはや生存期間を
過ぎていることに注意しなければならない。だから、一切
触ってはいけない。一応書いておくが。
0547デフォルトの名無しさん
NGNG○catch(...) {} // ←握りつぶせない(暗黙のthrowが末尾につく)
0548デフォルトの名無しさん
NGNGコンパイル通らん
0549デフォルトの名無しさん
NGNGVC6使うな
0550デフォルトの名無しさん
NGNGBCC5.5.1なんですけど・・・・
0551デフォルトの名無しさん
NGNGgcc3.4.1なら通るね。>>545ってC++の文法に準拠しているのか?
0552デフォルトの名無しさん
NGNGVC7.1だと通るよ。
BCCはショボイから通らないかもね。
0553デフォルトの名無しさん
NGNGああ確かにVC7.1だと通った。switch文のcaseをまたぐブロックを入れるような感覚か。
ちなみにBCC5.6.4でも通らん。糞だなBCCは。
0554521
NGNGむずいよう(;;)
0555デフォルトの名無しさん
NGNGあそこはオナニーMLだから、
C++の構文やいろんなライブラリを駆使した難解な答えがいくつも返ってくる。
その中から自分にあったものを拾うのがいいよ。
0556デフォルトの名無しさん
NGNGVC7.1でやったけど、例外起きませんでしたけどねぇ…。。。
ひょっとして最適化が働いたかな?
>>554
''例のML'' はレベル高いですからねぇー。
0557デフォルトの名無しさん
NGNG自分で自分を作る無限連鎖って最適化で消されるもんなの?
0558デフォルトの名無しさん
NGNGさっさとBCCなんて捨ててvctk拾ってこいよ
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/
0559デフォルトの名無しさん
NGNG無理です。BCB6使ってますから。
でもVC7.1もあるので文法はVC7.1もしくはgcc3.4.1(MinGW)で試しまつ。
#MinGW早くgcc3.4.2出してくれ〜。
0560デフォルトの名無しさん
NGNG5.5.1なんていうからフリーのBCC使ってると思ったんだよ
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG【初心者歓迎】C/C++室 Ver.9【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1094494997/
でどうぞ
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG5.5.1にBCPad組み合わせたものとBCC5.6.4(BCB6)の両方使ってます。
BCB6を立ち上げるのが面倒だったのでBCC5.5.1使いました。でも
BCC5.6.4使っても全く同じ結果でした。
>>561
まあそうですがgccは仕事には使ってないので。
>>562>>563
スマソ。本当に文法に違反していると勘違いしたもので。私が悪かったです。
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNG俺は素直にauto_ptr使ってる。
0567デフォルトの名無しさん
NGNGを
voif foo( const std::list<const Hoge*> & );
な関数にそのまま渡すことはできないのでしょうか?
fooではHogeのconst付きの関数しか呼べないようにしたいのですが。
0568デフォルトの名無しさん
NGNG自環境での結果をろくに書かないのはただの荒らし。
0569デフォルトの名無しさん
NGNG「ただの荒らしではない」と考えているわけですね? :-P
0570デフォルトの名無しさん
NGNG型が違うからできないな。
どうせコンパイラもそう言ってるだろ。
解決策は、あまり簡単なのは思いつかないなぁ。
reinterpret_cast で動くんだろうけど、それじゃダメだろうし。
0571デフォルトの名無しさん
NGNGただの荒らしだと考えてるからこそスルーを要請したわけだが。
const付で呼びたい?なら勝手に呼べ。ってこった。
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNG> ただの荒らしだと考えてる
本当にそう思っているなら、何も書かずにいればいいわけです。
要請などと言いつつ、いきなり自分自身が「スルーできてない人」になる必要は
まったく無い :-P
つまり、荒らしだと考えたというより、自分の美学(くすくす)に反する内容だったので
「これを皆が荒らしと見なす流れが欲しかった」だけでしょう。
でも実際のところは荒らしというほどではないので、放っておいたら
他の人はそう考えない。ちゃんと回答してしまう可能性が高い。それは嫌だ。
だからわざわざ「こういう風に荒らしなんですよ」と、蛇足感丸出しな"解説"なんぞをして、
「自分に乗っかる人を募った」わけですね。全然ダメだったようですが ;-)
0574デフォルトの名無しさん
NGNG個所の呼び出し元までは特定できませんよね。
それでassertを呼ぶ代わりに例外を発生させるようにしてデバッグしてるのですが
これはやらないほうがいいんでしょうか?
後に本当に発生すべき例外だと分かって、かつ戻り値の変更が難しい場合は
正規のコードとして残す事も考えてます。
0575デフォルトの名無しさん
NGNG環境依存だけどVCなら_ASSERTでファイル名と行番号が出る。
0576デフォルトの名無しさん
NGNG0577マイク ◆yrBrqfF1Ew
NGNG0578デフォルトの名無しさん
NGNG自動変数はほぼ確実にキャッシュに載ることが期待できるし。
そういう話じゃなくて、呼び出し元を知りたいんだから
スタックトレースとかしなきゃ駄目でしょ?
0580デフォルトの名無しさん
NGNGassertを上書きして、お望みの機能を付ければよろしい。
0581デフォルトの名無しさん
NGNG(VC のように) __FILE__ とか __LINE__ を使ったマクロで実装すればよい、ということでは?
0582デフォルトの名無しさん
NGNGインクルードする方法ってありませんか?
何度インクルードしてもいいように
#ifndef _DATA_H_
#define _DATA_H_
#endif //_DATA_H_
で囲む方法は知っていますが。
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG{
[close.h]
}
[main.cpp]
int main()
#include "open.h"
return 0;
#include "close.h"
0585デフォルトの名無しさん
NGNGnewで作ったクラスのインスタンスを、自滅させた場合(delete this)、
後に外の関数で解放されたことを知るには、どのようにすればいいのでしょうか?
教えてください。。
0586デフォルトの名無しさん
NGNGデストラクタの最後の行でthis=NULL;
0587デフォルトの名無しさん
NGNG0588585
NGNGありがとございまーす。
0589デフォルトの名無しさん
NGNGthisってconstじゃなかったか。
釣り?
0590デフォルトの名無しさん
NGNGプログラムではdelete this;をするべきじゃないと思うんだけど。
起動したらあとはなにも知らないで良いような自立したオブジェクトだけ
delete this;するべきじゃないの?
0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNGdelete this; の前に自殺予告が出せるオブジェならありうるべ。
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG侵入型参照カウント
0597デフォルトの名無しさん
NGNGvoid desroy();
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG分かりやすくて名前考えなくて済むから楽でいいよね
0600デフォルトの名無しさん
NGNGttp://www.open-std.org/jtc1/sc22/wg21/
0601デフォルトの名無しさん
NGNGそれじゃ Hoge に const 付かないだろ。
0602デフォルトの名無しさん
NGNG漏れはなぜか、「destory」。何度やってもこうなってしまう。
destroyと入力できない。同じクセがあるヤシいる?
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNGおれもなるよ
0606デフォルトの名無しさん
NGNGただ、clientはしょっちゅう使うスペルなので慣れてしまうけど、
destroyはあまり使わないのでいつまでたっても変なまま。
0607デフォルトの名無しさん
NGNG|\ΦДΦ) /|
○ < ζ) < ○ 人人
| > 旦 > | < ∧∧ キュワアアアアア!!!
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| ヽ(゚Д゚ )ノ
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ( へ)
| | く
0608デフォルトの名無しさん
NGNG俺もよくやる。
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNG数種類のクラスからランダムで1つを選ぶってので、ポインタをテーブルにいれといてそこから呼び出したいんですが
0613デフォルトの名無しさん
NGNGcreateですよ。
詳しくはabstract factoryデザインパターンをごらんあれ。
0614デフォルトの名無しさん
NGNGオブジェクトを生成するstatic関数を定義すればOK。
で、生成用のstatic関数でオブジェクトの生成方法を選択する。
複数のクラスを生成するならば、基底クラスで生成メソッドを定義し、
そいつをキャストして返してやる。
あとは、そのポインタをdynamic_castなりしてやれば問題なし。
GoFで言えば、Builderになるのかな?
0615614
NGNGかぶった…
abstract factoryか勘違いスマソ
0616デフォルトの名無しさん
NGNGなるほど、それ忘れてました
0617デフォルトの名無しさん
NGNG自分も昔「destory」ってよくやってしまてたよ。
同様に
true→ture
label→lable
もよく間違ってったよ…
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNGfactory methodだろ
0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNGコンストラクタのアドレスは取得できない
0623デフォルトの名無しさん
NGNGコンストラクタも静的にすれば……。
0624デフォルトの名無しさん
NGNG俺がつっこむ必要なさそうだなw
0625デフォルトの名無しさん
NGNGどうしたら良いでしょう?
それ聞くと噴出しそうになるので。
0626デフォルトの名無しさん
NGNGfail と混同してるんだろうなぁ・・・。
とりあず、2択だな。
1. ちゃんと正してあげる
2. 慣れる・自分も使う
0627デフォルトの名無しさん
NGNGfalse→eで終わる単語はその前の母音が二重母音化<alはallの如き発音に
case→eで終わる単語はその前の母音が二重母音化
なまじ単語の知識がある人こそ填まりかねない罠。
0628デフォルトの名無しさん
NGNGwarningを「ワーニング」って発音するやつが身の回りに20%くらいいるけどもう慣れたよ。
人前で話す機会には訂正してあげてる。
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNGnativeから見ればップって感じだからどうでもよくね?
0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNGワーニングであってるよ。厳密には、(ゥ)ワニング。
ウォーニングと発音するのは厨房。
Doom3でしょっちゅう聞いたよ、ワーニング。
0634デフォルトの名無しさん
NGNGhttp://dictionary.goo.ne.jp/voice/w/00090699.wav
0635デフォルトの名無しさん
NGNG英語試験担当者(生粋の日本人)が喜んでとりあげそうなネタだ。
でも実態は違うというオチ。アメリカなら、ワーニングでいいよ。
お利巧さんは、イギリスにでも逝ってろってこった。
0636デフォルトの名無しさん
NGNG日本語発音なんだからどうでもいい。
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGワラタ
0639デフォルトの名無しさん
NGNGking kong
0640デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG中学英語からやり直してこい
0642デフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNGしかも最後が「グ」なんて書く
頭の悪い人が後を勃たない。
0645デフォルトの名無しさん
NGNG頭の悪い人ではなく、バカが悪い人と書く。
0646デフォルトの名無しさん
NGNGfalse = ファルセ
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNGdouble=だぶる
char=きゃら
float=ふろーと
long=ろんぐ
unsigned=あんさいんど
true=とぅるー
false=ふぁーるす
class=くらす
struct=すとらくと
template=てんぷれーと
stdio=えすてぃーでぃーあいおー
stdlib=えすてぃーでぃーりぶ
iostream=あいおーすとりーむ
fstream=えふすとりーむ
vector=べくたー
deque=できゅー
0649デフォルトの名無しさん
NGNGcin=しーいん
cerr=しーえらー
0650デフォルトの名無しさん
NGNGwstring=だぶるすとりんぐ
boost=ぶーすと
stlport=えすてぃーえるぽーと
0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNGfind=ふぁいんど
find_if=ふぁいんどいふ
lower_bound=ろうあーばうんど
upper_bound=あっぱーばうんど
equal_range=いこーるれんじ
remove=りむーぶ
for_each=ふぉーいーち
partition=ぱーてぃしょん
nth_element=えぬてぃーえいちえれめんと
iterator=いてれーた
const=こんすと
0655デフォルトの名無しさん
NGNGdouble=どうぶる
char=ちゃー
float=ふろーぁと
long=ろんぐ
unsigned=あんさいねど
operator=おぺらーとぁ
while=わいる
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNGC++=しーぷらすぷらす
0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNGint イントでは?
0660デフォルトの名無しさん
NGNGcppファイルが複数あった場合、コンパイル時どういう順で展開されるんでしょうか
0661デフォルトの名無しさん
NGNGdoubleをでぃーおーゆーびーえるいーとか読まれたら引くけど
0662デフォルトの名無しさん
NGNGこんぱいらにおくったじゅん
0663デフォルトの名無しさん
NGNG原因は全くわかりません。初心者丸出しの質問ですが、どなたか何が
原因と思われるかわかりませんか?
0664デフォルトの名無しさん
NGNGあなたが4ヶ月ぶりくらいにC++をやったこと
0665デフォルトの名無しさん
NGNGhファイルはコンパイル前にcppファイルに取り込まれる。
cppファイルは取り込んだhファイルごとコンパイラにかけられてオブジェクトファイルになる。
0666デフォルトの名無しさん
NGNGどんなプログラムでどんなエラーが吐き出されたとか
詳細を書かなければ誰も答えてくれませんよ
とマジレスしましたがネタですかね(?)
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNG原因が何だか本当にわかりません。
ビルドの結果はエラーなしなのですが、実行すると、「プログラムを実行できません」と出ます。
マジで困ってます・・・OTL
0669デフォルトの名無しさん
NGNG2000 4000=にせんよんせん
5200=ごんに
3900=ざんく
1000=せんてん
7700=なななな
0670デフォルトの名無しさん
NGNGたすけてください
0672デフォルトの名無しさん
NGNGそこiいんてじゃーねとかいうとintegerって書かれるぞ
0673デフォルトの名無しさん
NGNG板違い
0675デフォルトの名無しさん
NGNG開発環境に沿ったスレで質問した方がきちんと答えてくれる人が
いると思われ。
そこでもう少し詳細を述べましょ
0677デフォルトの名無しさん
NGNGstdio=スタンダードアイオー
stdlib=スタンダードリブ
って言わないの?
俺だけ?
0678デフォルトの名無しさん
NGNGCUI=しーゆーあい
stdio=すとでぃお
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNGCUI=くい
GNU=じーえぬゆー
0681デフォルトの名無しさん
NGNGcppファイル1つに付き、オブジェクトファイル1つ作られるのでしょうか。それから、リンクってこと。??
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNGCUI=きゅい
GNU=ぐぬぅ
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNGこっちがネタスレになっちゃったな。
0687デフォルトの名無しさん
NGNGstd=えすてぃーでぃー
それはそうと
cout << "Hello World" << endl;
の
<<
の読み方がわからん。
逆の>>も。
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
NGNG(void*)0=ぬるぽ
0691デフォルトの名無しさん
NGNG#define NULL (void*)0ならどうなるよ?
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNG0695デフォルトの名無しさん
NGNGのび太みたいだな。
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNGいまあるクラス用意します。たとえばこのクラスはファイルアクセスに関する単純な処理を提供します。
1バイトアクセスのReadByte、WriteByteがあるとします。このクラスをCBaseFileとします。
次にこれを使って用途がより限定的なクラスを作ります。
つまりCBaseFileでは処理が汎用的でコーディング量を節約できないためです。
そこでCMyFileを作成し、ReadLine、WriteLine(行;\r\nまでの単位を扱う)を提供したいとおもいます。
このときこのCMyFileはCBaseFileから継承したほうが良いのか、メンバに持つべきなのか、です。
Is AなのかHas Aなのかどっちにしたほうが良いのですか?
0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNG委譲で出来る事は全部委譲でやる。
委譲で出来なくてprivate継承で出来る事は全部private継承でやる。
それでもできなければprotected継承で。
それで無理なら考え直せ。
0701698
NGNGメンバにもってその機能を使い、もう少し便利な形にして外に見せる、見たいな事でしょうか。
とりあえずメンバに持つやり方にします。
ありがとうございました。
0702デフォルトの名無しさん
NGNGiostreamの設計を見つめてください
0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG3桁毎に区切りが入った 2,234,713 のような10進文字列の取得は
皆さんどうやって実現してるんでしょうか?
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNGstd::string s = "70,145,123";
s.erase(std::remove(s.begin(), s.end(), ','), s.end());
int result = atoi(s.c_str());
0709デフォルトの名無しさん
NGNGint a,b,c;
char buff[]="10 20 30";
sscanf(buff, "%d,%d,%d",&a,&b,&c);
これでできたよ。。うちは
0710デフォルトの名無しさん
NGNG0711705
NGNGやりたい事は、int → char*です。
snprintf()とか_itoa()とかでは実現できないみたいなので質問しました。
一時は自力でやるべきかと思いましたが、ロケール毎で区切り文字などが違うらしいので、
なにか良い方法はないものかと思いまして・・・。
0712デフォルトの名無しさん
NGNG>>708をちょっと変えて
!isdigitでremove_ifすればいいじゃない?
区切りが数字なんて無いでしょ?
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG例えば"1,000,000"ていう文字列を10進数に
直すって意味ではないのか。質問の意味が分からない。
0717デフォルトの名無しさん
NGNG0719デフォルトの名無しさん
NGNGAddComma( moneyStr, ',', 10000 )
void AddComma(char *str, char chr, int money);
力不足でごめん。
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG#include <string>
using namespace std;
string insert_comma (string str) {
int pos = (int)str.length() - 3;
while (pos >= 1) {
str.insert(pos, 1, ',');
pos -= 3;
}
return str;
}
int main (int argc, char *argv[]) {
cout << insert_comma("10") << endl;
cout << insert_comma("100") << endl;
cout << insert_comma("1000") << endl;
cout << insert_comma("100000") << endl;
cout << insert_comma("10000000000") << endl;
return 0;
}
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG0724721
NGNGはあ?分かってないって何だよ。面白くねーなクソが。
あんた>717か?汎用的な方法ってやつの事か?
マニピュレータでも定義するんなら、とっととコード書くなりヒント与えるなりしたらどうだ。
# 確か標準マニピュレータの中にはコンマを付加するやつは無かったと思うけどさ。
# あるんなら早くポインタ示してやれよ。
0725デフォルトの名無しさん
NGNG0726705
NGNGご教示有難うございました。自作版ですね。
例えばWindowsでは、コントロールパネルの「地域と言語のオプション」から
各国毎の数値の表記方法が確認できるのですが、
アイスランド語やアゼルバイジャン語(50音順に並ぶ最初の2つの言語)は、
日本語の数値表記と違うみたいです。むしろ、日本と違う国がたくさんあるようです。
こういうのって、boostにあってもよさそうに思うのですが。
0727デフォルトの名無しさん
NGNG>>724
gccみたいなお馬鹿なコンパイラでは無理ですよ
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNGClass TestClass{
struct TestClass{
int a,b,c;
char c,d,e;
};
};
これって使えますか?
つまり、クラスのメンバの構造体の名前が、クラス名と同じという書き方はできるんでしょうか?
0730デフォルトの名無しさん
NGNG#include <locale>
#include <iostream>
int main()
{
using namespace std;
int i = 1500000;
cout.imbue(locale(""));
cout << i << endl;
}
文字列に格納したければcoutの代わりにstringstreamを使えばOKです。
locale("")で使用環境のネイティブロケールを指定した事になります。
0731デフォルトの名無しさん
NGNGお馬鹿なのはlibstdc++でgccではないかもしれません。
0732デフォルトの名無しさん
NGNG無知をさらけ出さない方がイイですよ
0733705
NGNG早速、試してみました。有難うございました。
locale("")というのは、関数じゃなくてクラスのインスタンスなんですね。
標準C++は奥が深いなぁ。ちょっと目からウロコ。
0734721
NGNGそうやって俺をイラつかせて、何をしたいんだ。
俺に恨みでもあるのか。それとも人をからかうのが好きなのか。
どちらにしても、お前は悪意をもって人を傷つけようとした。
こういう事はこれで最後にしろ。
0735デフォルトの名無しさん
NGNGだってこの質問文も読まないでカンマに固定してんだもん。
0736デフォルトの名無しさん
NGNGは?>705では3桁区切りとしか書いてねーじゃん。
だから俺も3桁で区切るコード書いたんだよ。
で、何だ。俺が>711を読んだ上で>721のコードを書いてしまったとして
お前はそれを「無知」つって笑うのか。これ、「無知」つーのか。
「不注意」じゃなくて。
0737デフォルトの名無しさん
NGNG↓何事もなかったかのように質問ドゾー
0738デフォルトの名無しさん
NGNGlocaleも知ってたんなら無知じゃなくて不注意でもいいけど、
locale自体知らなかったなら無知だろ。つーかどうでもいいよ。しつこいし。
0739デフォルトの名無しさん
NGNGもう質問有るから何事もなかったように
>>723とか>>729とかに答えてやれよ
0740デフォルトの名無しさん
NGNG>>729 やってみれ
0741デフォルトの名無しさん
NGNGttp://www.open-std.org/jtc1/sc22/wg21/
0742デフォルトの名無しさん
NGNG相手が自分より良い方法を示してきたら素直に受け容れろ。
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNG知らないなら黙っていればよかったのに。
しかもいつまでも粘着するし。
0747デフォルトの名無しさん
NGNGdouble** array2D(int imax,int jmax){
int i;
double *Mi,**M;
Mi=new double[imax*jmax];
M=new double*[imax];
for(i=0; i<imax; i++){
M[i]=Mi+i*jmax;
}
return M;
}
これを
int main(void){
double **c;
int i,j;
c= array2D(2,4);
for(i=0;i<2;i++){
for(j=0;j<4;j++){
c[i][j] = j+ 4*i;
print_pointer2D( c+i );
}
}
}
の様に用います。ここでprint_pointer2D関数は
void print_pointer2D(double **c){
printf("%f \n", c[0][0]);
}
という風に、渡されたアドレスの先頭をprintするだけの関数です。
質問は、print_pointer2D(c+i)とすればc[0][0]の値やc[1][0]の値をprintすることはできるのですが、
c[1][1]やc[0][2]等も渡すようにするにはprint_pointer2D関数の引数をどのようにすればよいでしょうか?
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG普通にこうしたらだめ?
void print_pointer2D(double c) {
printf("%f \n", c);
}
0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNG>>721
クスクス・・・
0752デフォルトの名無しさん
NGNG730の方がスゲー感じ悪いよ。
0753デフォルトの名無しさん
NGNGいや、それでもいいのですが、それだと今までに作ったプログラムを結構書き換えなければ
ならないんですね。うーむ、うまい方法はないものでしょうか。
0754デフォルトの名無しさん
NGNGならdouble**版とdouble版をオーバーロードしたらどうだ。
ただし周りを混乱させる諸刃の剣。
そういやvoid print_pointer2D(double c);なんて関数名と引数が合っていないな。
ますます混乱させる度合いが上がるぞ。
0755デフォルトの名無しさん
NGNG根性で今までのプログラム書き換えます。
どうもありがとうございました。
0756デフォルトの名無しさん
NGNGC++用ノリファクタリングツールがあるかどうかはしらんが。
0757デフォルトの名無しさん
NGNGこれ,うちではうまく動きますよ.
環境はgccが3.3.4で,libstdc++はそれについてきてるやつかな?
Debian GNU/Linuxなもので,
gccとlibstdc++は別にパッケージしてあります.
パッケージのバージョン(リビジョン)は,
g++-3.3 3.3.4-6sarge1.2
libstdc++5 3.3.4-6sarge1.2
です.
gccでうまく動かないとおっしゃる731さんはどんな環境なのですか?
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNGとりあえずcygwinだと動かないよ。
でもcygwinはnewlibだったかな?
newlibはmingwか。
0760デフォルトの名無しさん
NGNG【初心者歓迎】C/C++室 Ver.9【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1094494997/
でどうぞ
0761デフォルトの名無しさん
NGNG留byさいきょうげんご
るびーーーーーーーーーーーー
0762デフォルトの名無しさん
NGNG配列とポインタがらみの質問なのですが
int hairetu[10]; int* point = hairetu; とするとpointにはhairetu[0]のアドレスが入るんですよね?
さらに*(point+9)とするとhairetu[9](最後尾)の内容を表すと思うのですが、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_35/code.txt
↑このコードのtmpint.array+10というのはarray[0]から10個先のarray[11]を指しているように見えるのですが・・・
0763デフォルトの名無しさん
NGNGこれって配列の最後尾より大きいところを指しているように見えるのですが。。
0764デフォルトの名無しさん
NGNG[ first, last )
0765763
NGNGこのコードを実際に動かしてみるとしっかりとarray[9]を指していることが分かるのですが
最初に書いた例で行くと、point+1はhairetu[1]のアドレスを意味するのになぜこの場合はtmpint.array+10でarray[9]を意味するのでしょうか?
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG>この場合はtmpint.array+10でarray[9]を意味する
ここの理解が違います。tmpint.array+10はarray[10]のアドレスを指してます。
STLアルゴリズムの範囲の指定の仕方を調べて下さい。(答えは764。)
0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNGこれは高校数学を習ってないと分からないからな
0771デフォルトの名無しさん
NGNG高校数学じゃないって。大学の教養課程だ。
0772デフォルトの名無しさん
NGNG極限は数�V
0773デフォルトの名無しさん
NGNGCの標準ライブラリの場合はfgets()とsscanf()を使います。
C++の標準ライブラリの場合は行の読み込みではgetline()を使えますが
string型の文字列をカンマ単位で分けたい時なんかは
何か関数が用意されていたりしますでしょうか?
やっぱりsscanf()がよく使われているのでしょうか?
それとも1行の文字列からstringstreamを作り、get()で1文字ずつ読み込んで
区切り文字でないかどうか判定するループを組む処理のが一般に行われているのでしょうか?
例えばこのページの「文字列切り分け」のところのように。
http://cham.ne.jp/piro/p_cp.html
0774デフォルトの名無しさん
NGNGぐぐってみて
0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNGboost::tokenizerは別に使えるようだが。
0779763
NGNG教えていただいた内容で調べてみることにします。
ありがとうございました。
0780763
NGNG>>tmpint.array+10はarray[10]のアドレスを指してます
配列の最大を超える見たいですが、これに問題はないのでしょうか?
もし問題がなければ配列の大きさなんて関係なしに[1]とか適当にやっておいて後から[2]とか適当に足していくことができるんですか?
0781デフォルトの名無しさん
NGNG> 配列の最大を超える見たいですが、これに問題はないのでしょうか?
int a[10]; と定義したら、読み書きして良いのは a[0] から a[9] まで。
ただし例外として &a[10]; (有効なアドレスの次のアドレス) は取得して OK。
もちろん a[10] を読み書きしたらアウト。
0782デフォルトの名無しさん
NGNG0783763
NGNGなるほど、そんな例外があったんですね。。
入門書をいろいろ読んできたのですが一度もそんな内容を見ていなかったのでわかりませんでした・・
となると、sortなどは1番目の引数に配列の先頭のアドレス、2番目に配列の最大より一つ大きいところのアドレスを指定する必要があるんですね。
0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNG規格上は &a[11] とかは未定義だよ。
ま、ふつーは問題ないけど 32bit アーキテクチャで &a[2ギガ] とかやると、
ポインタがオーバーフローして別の有効な変数のアドレスに一致したり
NULL と一致したりして泣くかも知れず。
0786デフォルトの名無しさん
NGNGは?
高校数学では、括弧に意味付けする記述は使わんだろ。
0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNG[, ] (, ) の説明はちゃんとしてある
0789デフォルトの名無しさん
NGNG何時ごろの教科書?
最近?
0790デフォルトの名無しさん
NGNG超最近
0791デフォルトの名無しさん
NGNGわざわざ括弧での記述を教える意味がない。
扱うものが1次元の数値だけなので不等号で十分でしょが。
高校の教科書にホントに出てるの?
あやしい。
0792デフォルトの名無しさん
NGNGあなたもしつこい人ですね
出てるったら出てるんです
0793デフォルトの名無しさん
NGNG0794デフォルトの名無しさん
NGNG(・∀・)ニヤニヤ
嘘くさ・・・(w
0795デフォルトの名無しさん
NGNGgetlineではデリミタが指定できるんだが。
0796デフォルトの名無しさん
NGNGただ、説明だけが出てきてまったく使わないだけのこと。
少なくとも4年前には出てた。
0797773
NGNGgetlineでデリミタ指定できるのは知りませんでした。
boostのtokenizerも知りませんでした。
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG生配列とか生charに関する質問はCスレでやれと言いたい
0800デフォルトの名無しさん
NGNGクラス x と、その派生クラス y があるとします。
また、これらのクラスを扱う DLL が 3 つあるとします。
ある DLL_A が、別の DLL_B に実装してある、y を new し x* で返す関数を呼び出し、
そのポインタを、別の DLL_C に実装してある、x* を引数に取る関数に渡した場合、
引数を受けた DLL_C は、x* を y* に dynamic_cast できますか?
VC.NET で上記の DLL を作成したところ、うまくキャストできましたが、
違うコンパイラ/環境で作成した DLL だとまずいことになるでしょうか?
DLL_A は x のヘッダのみインクルード、
DLL_B, DLL_C は x, y の実装されたライブラリをリンクしています。
DLL_A は、実行時に LoadLibrary で DLL_B, DLL_C を動的読み込みしています。
0801デフォルトの名無しさん
NGNGABI,vtbl,RTTI,SEHの形式や使い方が違うコンパイラだったら
当然まずいんじゃないの?
0802デフォルトの名無しさん
NGNG>>760
0803デフォルトの名無しさん
NGNG「Cの」ではなく、CでもありC++でもある領域の問題だろが
CとC++の共通項はどちらでもいいし、C特有の問題はCスレ、C++特有の問題はC++スレで何の問題があるんだ?
0804デフォルトの名無しさん
NGNG俺も同意見
0805デフォルトの名無しさん
NGNG0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG漏れもそう思う。
標準のC++クラスやboostを使うことにこだわるのとは意味がちがう。
C++的解決方法は他にもたくさんある。
0808デフォルトの名無しさん
NGNGclass DynamicPtr
{
public:
T** data;
UINT nInst;
public:
DynamicPtr();
~DynamicPtr();
void Add(); //追加
};
template <class T>
void DynamicPtr<T>::Add(){
nInst++;
data = (T**)realloc( data, sizeof(T*)*nInst );
data[nInst-1] = new T;
}
DynamicPtr<MyData> dptr;
Addメソッドで一つずつ動的に確保するクラス(コンストラクタ呼び出したいが為のダブルポインタ使用)
なんですが、dataメンバを使う時、dptr.data[5]->メソッドてなるから
直接的にdptr[5]->メソッドていう風に手間を省きたい。
早く言えば、ATLの CComPtr<IDirect3DDevice> m_pd3dDevice
みたいな事が実現したいです。m_pd3dDevice.data->メソッドとはなりませんよね。
変数名(dptr)そのものがT**になって欲しいという意味です。
長文ご免。
0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNG0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNG0814デフォルトの名無しさん
NGNGただ、プラモデルを実務に導入するのはまずい。
実際に作って構造を理解するのには役立つが、それ以上のものであってはならない。
0815デフォルトの名無しさん
NGNG(例) MetrowerksCodeWarriorPro8.3forWinReleaseNotesより抜粋
* データメンバーを使う多重継承のクラスレイアウトはMSVCと完全互換ではありま
せん。異なるコンパイラでコンパイルされたモジュール間ではこの機能に使用し
てデータを共用することはしないでください。
こういうことがあるから、dll間でクラスのやり取りは基本的に無理だと考えておいた
ほうがよい。
0816デフォルトの名無しさん
NGNGメンバ関数にこれを追加
operator T**() {return data;}
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNG懐かしいな。
0819デフォルトの名無しさん
NGNGもう何個かは決まってるんでしょ?
さっさとして欲しい
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNGあれは実は16進だから2015年までだったりして
0822デフォルトの名無しさん
NGNG0823デフォルトの名無しさん
NGNG↓
0x○
って事じゃないの?
0824デフォルトの名無しさん
NGNG0825デフォルトの名無しさん
NGNG0826デフォルトの名無しさん
NGNG0xF == 15
0827デフォルトの名無しさん
NGNGそもそも
0x1000
とかも出来るから何年にでも出来るんじゃないの?
0828デフォルトの名無しさん
NGNG0829デフォルトの名無しさん
NGNG良く分かんないハングルのページばっかり引っかかるのはgoogleの嫌がらせか?
0830800
NGNG>>815
お答えいただきありがとうございました。
イベントクラスの、フレームワーク・外部モジュール間の受け渡しを考えていたんですが、
なかなか難しいようで…もうちょっと頭をひねってみます。
>>802
参考にさせていただきます。
0831デフォルトの名無しさん
NGNGhttp://web.archive.org/web/20000302001334/http://www.ruby-lang.org/ja/compar.html
--------------------------------------------------------------------------
C++
いろいろと有名なオブジェクト指向言語であるC++とRubyを比較すると:
C++なぞ問題外.^^;;;
--------------------------------------------------------------------------
ちなみに、英語版には記載がない(ぷ
0832デフォルトの名無しさん
NGNGthx. こりゃキッツー。勘違いルビ厨が暴れるのも分かるワ
0833デフォルトの名無しさん
NGNGばーか。C++ユーザ死ねよ
Ruby以外の言語は糞なんだよ。そんなことも分からないの?
0834デフォルトの名無しさん
NGNG営業「・・・」
課長「・・・」
部長「るびーって何だね?」
営業「おい、Rubyの案件なんてなかったぞ!」
SE「ちゃんと探してんのか?ゴルァ!!」
営業「それよりこっちのC++の見積り早く出してよ」
SE「・・・」
課長「プッ」
部長「るびーって何だね?」
0835デフォルトの名無しさん
NGNGぶち当たってしまいました。エンコード変換にはいろいろ方法があるようですが
なんとか見慣れたstream系の書式のままエンコード変換→送信する方法はないでしょうか?
コンパイラはminGW、socketのラッパーとしてgimite/socketというのを使ってます。
0836デフォルトの名無しさん
NGNG0837835
NGNG確かにC++に比べて全然簡単ですね(涙
0838デフォルトの名無しさん
NGNGそういうストリームクラス作ればいいじゃん。
0839デフォルトの名無しさん
NGNG0840835
NGNGコレ使って内容書き換えるstreamクラス作るしかないのかなぁ
なんかやろうとしてる事に対して大げさすぎる気が(汗
理想的にはiomanipみたいな感覚で
stream << encode("Shift_JIS");ってできたらいいのになぁ。
誰か作ってないのかなぁ・・・。
0841808
NGNGよければ標準ライブラリで動的確保を行うクラス列挙してもらえませんか。みなさんがよく使われるモノ知りたいです
0842デフォルトの名無しさん
NGNGバッファに直接アクセスしにくいiostream系は応用面でオ�hル。
あまり当てにしないほうがいい。
0843デフォルトの名無しさん
NGNG0844808
NGNG0847デフォルトの名無しさん
NGNG0848デフォルトの名無しさん
NGNGgimite/socketの作者も利用してるみたいだから
頼めば、gimite/socket に組み込んだモノを用意してくれかもしれんよ。
0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNGvirtual void ConstFunction() const = 0;
でいいのですか?
0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG友達いねーだろw
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNG0855デフォルトの名無しさん
NGNG0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGえぴすてーめーハケーン
0858デフォルトの名無しさん
NGNGconst修飾の有無はどうでもいいことなのです
> virtual void ConstFunction() const = 0;
よろしい
0859デフォルトの名無しさん
NGNGdraw_lineとdrawLine、アンダースコアでセパレートするのと小文字で始め大文字区切りにするのと、
C++ではどちらを好きな人が多いのかな?
0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNGそれより大きいスコープ>DrawLine
3文字以下の名前>ABC
どの名前も適さない一時変数>FILE* file/POINT point/int i/float f
0862デフォルトの名無しさん
NGNGttp://pukapuka.s1.x-beat.com/img-box/img20040920215205.lzh
0863デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNGWin32 系のプログラムだと API に合わせて DrawLine
でも STL や Boost だと draw_line
ま、何でも良いよ。
0865デフォルトの名無しさん
NGNGちなみに漏れは draw_line
この方がなんか目に優しい感じがするから
0866デフォルトの名無しさん
NGNGvoid main()
{
}
で、コンパイルエラーを出すのと出さないのでは何が違うのですか?
エラーを出すコンパイラ
gcc など gnu系(MinGWなど)
エラーを出さず正常にコンパイルできるコンパイラ
VisualStudio.Net 2003
Borland C++ compiler 5.5.1
0867デフォルトの名無しさん
NGNG0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNG0870デフォルトの名無しさん
NGNGアンダースコートならそれでいいんだけどなー。
0871デフォルトの名無しさん
NGNGmainエントリポイントの返り値にvoidが不正・・・だったはず
0872デフォルトの名無しさん
NGNG自己解決
http://www.research.att.com/~bs/bs_faq2.html#void-main
0873デフォルトの名無しさん
NGNG使ってるフォントが悪いな。
0874835
NGNG皆様のおかげでC++のstream書式で無事にsmtpクライアントを書くことができました。
babelはShift_JIS->iso-2022-jpへの直接変換ができないみたなので焦りましたがw。
また有名(?)なbare LF問題で小1時間悩んだり・・・ヘボくてすみません。
最後に質問させてください。
今ファイル添付の機能をつけようと思ってbase64変換ライブラリを探しているのですが、
gmite/socketやbabelと同様にstring or streamを操作するタイプのものを求めています。
cやPerlのものは結構見つかるのですが・・・良いのがあったら教えてください。お願いします。
0875デフォルトの名無しさん
NGNGそれぐらいならその c や perl のヤツを元に自分で書き起こしてもいいんじゃない?
0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNGttp://pukapuka.s1.x-beat.com/img-box/img20040920215205.lzh
0880デフォルトの名無しさん
NGNG・CPUを増やす
・flex/bisonでがんばる
0881デフォルトの名無しさん
NGNG詳しくよろ
0882デフォルトの名無しさん
NGNGサンプルコンパイルしてみりゃ分かる。
実用的な物を作りたいならflexとbison使うべき。
0883デフォルトの名無しさん
NGNGどれくらい差があったの?
若しくはどのサンプルが遅かったのか教えてください。
0884デフォルトの名無しさん
NGNGhttp://spirit.sourceforge.net/repository/applications/show_contents.php
とりあえずCでも動かしてみて下さいな。
grammer checkしかしてないのに何でこんなに遅いんだと思うよ。
0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNG外部ツールとして中で最適化でも完全ハッシュ生成でも
何でもやりほうだいのbisonやらyaccと比べるのはどうかと思うよ。
0887デフォルトの名無しさん
NGNGbison++が全然更新されてないからなあ…
0888デフォルトの名無しさん
NGNG0889883
NGNGtest_files/Moments.cで100回平均して22ms
(P3:800 VC7.1 Release)
flex/bisonだと1msで収まるって感じなのかなぁ。
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGyayacc どうよ?
0894デフォルトの名無しさん
NGNG結構C++って事か?
0895デフォルトの名無しさん
NGNGだろ
0896デフォルトの名無しさん
NGNGちゃうちゃう。Yet Another Yacc という、C++ 使える yacc の改良版みたいなやつ。
ttp://www.gradsoft.com.ua/eng/Products/YaYacc/yayacc.html
0897デフォルトの名無しさん
NGNG何故にマジレス・・・
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNGプレコンパイルヘッダが使えないのが微妙につらいが
それ以外でなんか困ることある?
0900デフォルトの名無しさん
NGNGこれ(c_grammar.cpp)subrule使ってないですからね〜.
subrule使ったときの改善度合いが知りたいですけれど・・・時間が無い.
ていうか真剣にtypeof欲しいっ!ヽ(`Д´)ノ ウワァァン!!
0901デフォルトの名無しさん
NGNG{
private:
Final();
//全てのコンストラクタをプライベートにする
};
と宣言すると、Finalを継承したクラスを作ることは
できなくなる、ということでいいんでしょうか?
0902900
NGNG0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNG仮想デストラクタを使わないだけじゃだめ?
0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNGこの型は継承してはいけません、って書いておいても平気で継承して、
(例えばデストラクタが動作しないとかの)トラブルを引き起こす奴とかが
いるからじゃないか?
0909デフォルトの名無しさん
NGNG許されることなんだろうか?それとも無駄?
0910デフォルトの名無しさん
NGNGつかboostにあるだろ
0911デフォルトの名無しさん
NGNGそんなことは既にやっていてプロセッサ固有命令を使いたいとかだったら
止めはしないけど、ただ単にコードをinline化するだけの小手先最適化だと
コードサイズが増えて思ったほど性能向上しないけどね。
C++がろくに普及してない頃の話だけど、アセンブラとか持ち出してこっちの
命令のほうが数サイクル短いとか、フレーム作成コストが減るとかなんとか
言ってるやついたけど、ループの中で毎回無駄にやってたメモリアロケーションを
外に出しただけで性能が飛躍的に向上した、ってのがあったな。
今でも分岐予測の失敗とかキャッシュミスとかなんとか言うやついるけど、
いまどきのOS上では複数プロセスをビシバシ切り替えながら処理をまわしてる
から、やっぱりいうほどの効果が出ないこと多いよ、ってこと、いいたいんだけどね。
まああれだ、
ほとんどの場合、小手先の最適化は捨てちゃっていいよ。
ほんとに遅い所がどこなのか計ってからチューニングをはじめような。
0912デフォルトの名無しさん
NGNG911 の人がいうようにあんまり意味無いと思います。
ちゃんとプロファイリングして、遅いところがメモリ沢山読むところなら
prefetch 入れるってくらいで十分では。
0913デフォルトの名無しさん
NGNG複数プロセスを切り替えているのは事実でも、
スライスタイム(20ms)間にどれだけの処理ができるんだろね。
0914デフォルトの名無しさん
NGNG安く見積もって1GHzでも、2000万サイクルくらいいけそうだな
Netburstだと20段パイプラインだから、分岐予測のヒット率をρとすると
処理できる命令の数は2000万/((1-ρ)*20+ρ)
P4のヒット率は大体95%だってうわさがあるから1000万命令くらい。
あとは、あれだ
メモリのキャッシュミスのコストを差し引かなきゃいけないんだが
面倒になってきたので誰か続きよろしく。
0915デフォルトの名無しさん
NGNGこれだと690万命令/secくらい。
0916デフォルトの名無しさん
NGNGパイプラインの分岐予測に失敗した場合、17段目までが破棄されるっぽいから
失敗した場合の無駄サイクル数が1+2+3+...+17で153
2000万/((1-ρ)*153+ρ)でヒット率90〜95%だと、120万〜230万命令/スライスタイムくらい。
やっぱこれでも結構な命令数いくのな。
ごめん
0917デフォルトの名無しさん
NGNG0.900 1,234,567.90 1.00
0.905 1,295,336.79 1.05
0.910 1,362,397.82 1.10
0.915 1,436,781.61 1.16
0.920 1,519,756.84 1.23
0.925 1,612,903.23 1.31
0.930 1,718,213.06 1.39
0.935 1,838,235.29 1.49
0.940 1,976,284.58 1.60
0.945 2,136,752.14 1.73
0.950 2,325,581.40 1.88
0.955 2,551,020.41 2.07
0.960 2,824,858.76 2.29
0.965 3,164,556.96 2.56
0.970 3,597,122.30 2.91
0.975 4,166,666.67 3.38
0.980 4,950,495.05 4.01
0.985 6,097,560.98 4.94
0.990 7,936,507.94 6.43
0.995 11,363,636.36 9.20
1.000 20,000,000.00 16.20
チューニングしてないときの分岐予測ヒット率を90%とすると、
チューニングした場合95%くらいで1.9倍、
カリカリチューニングして97%くらいで2.9倍かな。
でも100%->16倍はありえないだろ。
カリカリしたその先のチューニングの重みは非常に大きい。
0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNG○final
0920デフォルトの名無しさん
NGNGhttp://pukapuka.s1.x-beat.com/img-box/img20040922204002.lzh
0921デフォルトの名無しさん
NGNGinline関数を定義・使用しているa.h、a.cppがあるとします。
inline void ResetData( void );
inline unsigned short GetOrg( void );
inline unsigned short GetPls( void );
こんな感じでa.hでプロトタイプ宣言してそれ以外は省略。
a.cppでの↑の関数の内容は値を返すだけの内容です。
このインライン関数をb.cppで使いたいのですがGetPls()と記述して
呼び出そうとしたのですができませんでした。
インラインをとったら使えましたがインラインをつければ使えません。
どなたか助けてください。
0922デフォルトの名無しさん
NGNGinline の定義は .h に書かなきゃダメ。
0923デフォルトの名無しさん
NGNG0924923
NGNG0925デフォルトの名無しさん
NGNGinline void ResetData( void );
inline unsigned short GetOrg( void );
inline unsigned short GetPls( void );
ですよね。
これは.hで記述しております。
その内容を.cppに書いてます。
0926デフォルトの名無しさん
NGNG{
// 内容
}
ヘッダにこう書けつーこと
0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNG既に遅いけど一応書いておきますね。
そいつは定義ではなくて宣言です。定義と宣言の区別をしっかりつけておかないと
C++の高い本を買っても正しく読めません。
0929835
NGNG0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNG例えば、
class Sample
{
int x[2][3];
public:
Sample(); // コンストラクタ (x[2][3]に初期値を代入する)
○○ GetSampleData(); // xへのポインタを返却する関数
};
○○ Sample::GetsampleData()
{
return △△; // xへのポインタを返したい
}
他のクラスでx[2][3]の値を使いたいのでGetSampleData関数を呼び出してxへのポインタを取得したいのですが、○○と△△の所をどう書いたらいいんでしょうか?
xがprivateなので無理ですか?
0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG#include <iostream>
class Sample
{
int x[2][3];
public:
Sample(int y = 0); // コンストラクタ (x[2][3]に初期値を代入する)
int (*GetSampleData())[3];// xへのポインタを返却する関数
};
Sample::Sample(int y) {
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++)
x[i][j] = y;
}
int (*Sample::GetSampleData())[3]
{
return x; // xへのポインタを返したい
}
int main()
{
Sample s(1);
std::cout << s.GetSampleData()[0][0] << std::endl;
}
0934デフォルトの名無しさん
NGNG>>933
ありがとうございます。
結構難しいですね・・
何とか頑張って理解して見ます
0935デフォルトの名無しさん
NGNGいいかもしれない。
クラスでまず最初に引っかかるのはthisポインタだから。
0936デフォルトの名無しさん
NGNG初心者じゃなくても使うでしょ、this。
VC環境なら、this->を使うとインテリセンスが機能してくれるし。
同じ名前の関数がグローバルとクラスにある場合の混乱防止になるし、読みやすさが増す。
0938デフォルトの名無しさん
NGNGいっそのこと構造体のメンバにしてしまうとか
typedef struct
{
int x[2][3];
} SHoge;
class CSample
{
SHoge m_hoge;
SHoge* GetSampleData();
};
SHoge* CSample::GetSampleData()
{
return &m_hoge;
}
0939デフォルトの名無しさん
NGNGそーゆー理由で this を書く人のことを「初心者」と呼ぶのでは?
0940デフォルトの名無しさん
NGNG初心者じゃない>>939は絶対にthisをこの用途では使わないんだね。
初心者じゃない>>939は一生使っちゃ駄目だよ。何があっても。
0941デフォルトの名無しさん
NGNG~~~~~~~~~~~~~~~~~~~~~~~
thisは省略できないっしょ。
0942デフォルトの名無しさん
NGNG小学生ですか?w
0944デフォルトの名無しさん
NGNGCの知識があればできるはず。後は暗黙のthisポインタとクラス名の修飾(Sample::)
を忘れなければいい。
0945デフォルトの名無しさん
NGNG初心者専用だとは思わないのだが、釣りか?
保守性・明示性を犠牲にして他人の解析作業を妨害するのが上級者
という定義をもっているのであれば、正しいのかもしれないけど。
0946デフォルトの名無しさん
NGNGこれで混乱するほどの無知を棚に上げて読みやすさとかほざく居直り粘着されたチームに未来はない
0947デフォルトの名無しさん
NGNGPMや同僚から煙たがられて干されたか、チームに居づらくんだろうな・・・。
>>946は、そういうタイプの典型かもしれない。
初心者の人が途中で開発に加わるかもしれないことを想定できないチームに未来はないでしょ。
プログラミングが技巧よりむしろ力仕事であり対人関係の大事な仕事だと理解できずに、美学に酔いしれる人は負け組。
改めた方が良いと思われるが、本人がいい年してるので実社会では誰も指摘しない・できない。
0948デフォルトの名無しさん
NGNG何の知識もない状態の人向けのC++入門書は、大体わかりやすいが
所々適切でない記述があるもの
(コンパイルでエラーが出ますが問題ありませんと書いてあったり等)
や誤字・誤植がいつまでたっても訂正されないものなど
ちょっと問題がある本ばかりのようなのですが
問題なさそうな本でCから始め、Cの知識がある人用のC++本で
C++にいくのはかなり遠回りになるでしょうか?
遠回りになっても、それなりに利点があるならそうしようかと思うのですが
アドバイスをお願いします。
0949Rubyは最高言語!!!!!!!
NGNGつか何の知識もないのなら、オライリーの「実践Cプログラミング」でも一冊買って読んでみたら。
0950デフォルトの名無しさん
NGNG正直言ってC++は古いよ
C#にでもしとけ
0951デフォルトの名無しさん
NGNGホープと癌の境は居直り
誰に見やすく書くのかさえ聞く耳を持たない反逆分子はもはや仲間じゃない
そんなのが稼げてない間食わせてやるなんざ論外中の論外
0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNGそうですね。同感です。気心の知れた仲間とだけ仕事してて下さい。
0954デフォルトの名無しさん
NGNG日本語能力を鍛えなおすのが近道だと思う。
0955デフォルトの名無しさん
NGNG0956デフォルトの名無しさん
NGNG>>949
本屋で見てきます。
>>950
C#ですか!余計に難しそうですね…
>>952
それも本屋で見てきます。
>>954
アルェー
0957デフォルトの名無しさん
NGNGキモイからこっちに行ってくれ
推薦図書/必読書のためのスレッド PART 19
http://pc5.2ch.net/test/read.cgi/tech/1089492835/
0958デフォルトの名無しさん
NGNGthis->を使わなければいけないというルールも変。
針のメドを通すような俺様ルールを他人に押し付けるのは頂けない。
0959デフォルトの名無しさん
NGNG誰も止めないよ
0960デフォルトの名無しさん
NGNGどうせ T* const で代入できないんだから、参照にすればよかったのに。
this->hoge より this.hoge のほうが見やすいし、
operator = とかで return this; と書けるし。
大したことじゃないと言われればそうなんだが。
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNGそう言われればそうだ
0963デフォルトの名無しさん
NGNG確かthisが作られた頃の初期のC++にはまだ参照がなかったと思う。
0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNGよく使うふつうの継承が public 継承で
変わった継承をしているところこそ明示的に書くべきなのに・・・
メソッドのデフォルトってどうして非 const なんだろう
許可は意図的に狙い打ちで与えるのが OOP の作法なのに・・・
0966デフォルトの名無しさん
NGNGこんな事書いてるから継承厨って言われんだよ
0967デフォルトの名無しさん
NGNGじゃ勝手に private 継承しまくってろ
あ? protected 継承だったか??
どっちでもいいんだよ
ネズミがチューチュー喚いても関係ねえんだよ
失せろ汚物
0968デフォルトの名無しさん
NGNGメドって何?
0969デフォルトの名無しさん
NGNGただし958の文脈では「針の穴」というべきであろう
0970デフォルトの名無しさん
NGNG知ってかおまえら?
0971デフォルトの名無しさん
NGNG針の針孔と書いてハリノメドと読む。針の針の穴という意味。
頭痛と書いてズツウと読む。頭の痛みという意味。
頭の頭痛と書いてアタマノズツウと読む。頭の頭の痛みという意味。
0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNGやっぱそれだけですか?
GoF本読んでて「Factory Method が増えただけ??」って思ったんで…
0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNGMulticastが一番好きだ。
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNGまた脊髄反射レスかよ・・・・みっともないぜ
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG脊髄反射でレスできるヒトはいません (プ
0981デフォルトの名無しさん
NGNGネタにマジレスカコワルイ
0982デフォルトの名無しさん
NGNGだった。orz
0983デフォルトの名無しさん
NGNG( ´,_ゝ`)プッ
0984デフォルトの名無しさん
NGNGだからお前は馬鹿なんだよ
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNGここは馬鹿の集まりのインターネッツですね。
0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG下半身。☜
0989デフォルトの名無しさん
NGNG関数型プログラミングの臭いがする。
そのへんのカオスつーかハイブリッド具合がC++っぽいんだろうけど。
0990デフォルトの名無しさん
NGNG意味わかってんのかな?
多分覚えたの単語を使ってみただけだろうけど・・・
0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNGお前にとっては、たかがカオスがずいぶん難解な単語なんだな。
ま、大方勝手に「物理学用語としてのカオス」あたりに限定しちゃってるって
とこだろうけど。
0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNGそれは意図的なものだよ。
iostream系が惨い状況になってるのがわかるだろ?
あの反省にたってると思う。
オブジェクト指向にする・しないはユーザの自由裁量。
0995デフォルトの名無しさん
NGNGカオスが物理学に出てくるのは物理現象としてではないぞ
もうちょっと勉強しろよ
0996デフォルトの名無しさん
NGNG0997自作ウィルス自ら実行
NGNG∠__∠__∠__∠_.∠_../ | __∠__∠__∠l__
∠__∠__∠__∠__∠__/| | ∠__∠__∠__∠__/.|_
. ∠__∠__∠__∠_.∠_./| |/| ∠__∠__∠__/ /| |/|
. / / ./ / / /! |/| | | / / /| ̄ ̄| |/| |
| ̄ ̄| ̄ ̄| ̄ ̄| ̄ ̄| ̄ ̄| |/ |/| |_| ̄ ̄| ̄ ̄| |__|/| |/|
__ _| |__|__|__|__|/| ̄ ̄| | ∠__|__|__l/ /| |/| |
. / / | ̄ ̄| |_|/| | | |__|/| | | | | ̄ ̄| |/| |/
| ̄ ̄| ̄ .| |/| | | |__|/| | | |__|__|__|__|/| |/|
. ___|__|__.| ̄ ̄| |_|/ | | |__|/ | | | | | |/| |
. / / / | |/|. |__|/| .|__|__|__|__|/| |/
| ̄ ̄| ̄ ̄| ̄ ̄| ̄ ̄| |. | | | .|_| | | |__|/
|__|__|__|__|/ |__|/ |__|__|/
0998デフォルトの名無しさん
NGNGお前一人でなにピント外れなレス書いてるんだ?w
0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。