トップページ⇒tech
1001コメント303KB

C++相談室 part29

レス数が1000を超えています。これ以上書き込みはできません。
0001v(^・^)v ◆Manna2uCLg NGNG
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。

過去スレ、関連スレ、関連リンクなどは >>2-13
0002v(^・^)vNGNG
 1 http://mimizun.mine.nu:81/2chlog/tech/piza.2ch.net/tech/kako/980/980175292.html
 2 http://pc.2ch.net/tech/kako/996/996640937.html
 3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
 4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
 5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
 6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
 7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
 8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
 9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
 10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
 11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
 12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
 13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
 14 http://pc5.2ch.net/tech/kako/1041/10413/1041328679.html
 15 http://pc5.2ch.net/tech/kako/1043/10436/1043605481.html
 16 http://pc5.2ch.net/tech/kako/1045/10457/1045746245.html
 17 http://pc5.2ch.net/tech/kako/1047/10475/1047560042.html
 18 http://pc5.2ch.net/tech/kako/1050/10501/1050177746.html
 19 http://pc5.2ch.net/tech/kako/1052/10526/1052625846.html
 20 http://pc5.2ch.net/tech/kako/1055/10551/1055162298.html
 21 http://pc5.2ch.net/tech/kako/1057/10575/1057580107.html
 22 http://pc5.2ch.net/tech/kako/1060/10603/1060361082.html
 23 http://pc5.2ch.net/tech/kako/1062/10626/1062690663.html
 24 http://pc5.2ch.net/tech/kako/1066/10665/1066546387.html
 25 http://pc5.2ch.net/tech/kako/1067/10679/1067949669.html
 26 http://pc5.2ch.net/test/read.cgi/tech/1070164402/ (迷子)
 27 http://pc5.2ch.net/test/read.cgi/tech/1074454641/ (迷子)
28 http://pc5.2ch.net/test/read.cgi/tech/1077985164/
0003v(^・^)vNGNG
■基本■
[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/ (日本語)
0004デフォルトの名無しさんNGNG
■Books■
amazon.com C,C++関連書籍
 http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/

The C++ Programming Language
 http://www.amazon.com/exec/obidos/ASIN/0201700735/
 http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳)
C++ Primer (3rd Edition)
 http://www.amazon.com/exec/obidos/ASIN/0201824701/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳)
The C++ Standard Library
 http://www.amazon.com/exec/obidos/ASIN/0201379260/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳)
Effective C++
 http://www.amazon.com/exec/obidos/ASIN/0201924889/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳)
More Effective C++
 http://www.amazon.com/exec/obidos/ASIN/020163371X/
 http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳)
Exceptional C++
 http://www.amazon.com/exec/obidos/ASIN/0201615622/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳)
More Exceptional C++
 http://www.amazon.com/exec/obidos/ASIN/020170434X/
Effective STL
 http://www.amazon.com/exec/obidos/ASIN/0201749629/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
 http://www.amazon.com/exec/obidos/ASIN/0201704315/
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
 http://www.amazon.com/exec/obidos/ASIN/0201734842/
0005v(^・^)vNGNG
■Libraries■
[Boost]
 Boost http://www.boost.org/
 (日本語) http://user.ecc.u-tokyo.ac.jp/~s31552/wp/boost/
 (日本語) http://www.kmonos.net/alang/boost/
[STL]
 STLport http://www.stlport.org/
 SGI-STL http://www.sgi.com/tech/stl/
 STLFilt http://www.bdsoft.com/tools/stlfilt.html
 (日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
 (日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
 http://www.moderncppdesign.com/
 LokiPort-MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
 LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
[他]
 ACE http://www.cs.wustl.edu/~schmidt/
 Blitz++ http://www.oonumerics.org/blitz/
 flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
[他ライブラリリンク集]
 http://www.trumphurst.com/cpplibs/cpplibs.phtml
 (日本語) http://www.kmonos.net/alang/cpp/lib.html
0006デフォルトの名無しさんNGNG
S
0007v(^・^)vNGNG
■関連スレ■
-【C++】template 統合スレ -- Part3
http://pc5.2ch.net/test/read.cgi/tech/1066493064/l50
- ぼるじょあがC/C++の宿題を片づけますYO! 21代目
http://pc5.2ch.net/test/read.cgi/tech/1078157730/l50
- ★初心者にVisual C++を教えるスレ★ Part11
http://pc5.2ch.net/test/read.cgi/tech/1077965179/l50
- ■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/l50
- ATL 相談室
http://pc5.2ch.net/test/read.cgi/tech/1029029882/l50
- C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc5.2ch.net/test/read.cgi/tech/1049790146/l50
- COM の世界を斬る!
http://pc5.2ch.net/test/read.cgi/tech/981823340/l50
- managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/l50
- C++Builder相談室 Part9
http://pc5.2ch.net/test/read.cgi/tech/1080541814/l50
- タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/l50
- Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/l50
- Code of the Nerds" Digital Mars C/C++
http://pc5.2ch.net/test/read.cgi/tech/1044210976/l50
- GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/l50
-OpenWatcom C++
http://pc5.2ch.net/test/read.cgi/tech/1033433728/l50
- タダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/l50
00081NGNG
なんか、ちょぃと失敗気味なスレ立てになっちまった…

すまぬ。
0009Addicted to C++ ◆nrBjarne.g NGNG
乙!
0010デフォルトの名無しさんNGNG
STL使うと(ry
0011デフォルトの名無しさんNGNG
>>10
環境に(ry
0012デフォルトの名無しさんNGNG
>>11
すげ(ry
0013デフォルトの名無しさんNGNG
C1010: プリ(ry
0014デフォルトの名無しさんNGNG
>>13
#inclu (ry
あと氏(ry
0015デフォルトの名無しさんNGNG
>>14
言葉が(ry
まぁヒント(ry
うむごくろ(ry
0016デフォルトの名無しさんNGNG
>>(ry
0017デフォルトの名無しさんNGNG
もまいらムダにスレを消費す(ry
0018デフォルトの名無しさんNGNG
MSDNにのっていなかったので...
yyy.cpp
c:\xxx\yyy.cpp(0) : fatal error C1001: 内部コンパイラ エラー
(コンパイラ ファイル 'msc1.cpp', 行 2701)
Visual C++
ヘルプ メニューで、サポート情報コマンドを選択してください。またはサポート情報 ヘルプ ファイルを参照してください。

zzz.cpp
c:\xxx\zzz.cpp(0) : fatal error C1001: 内部コンパイラ エラー
(コンパイラ ファイル 'msc1.cpp', 行 2701)
Visual C++
ヘルプ メニューで、サポート情報コマンドを選択してください。またはサポート情報 ヘルプ ファイルを参照してください。

DEBUGでビルドするとこんなエラーが出るようになりました
Releaseビルドだと問題なくビルドできます
MFCAppwizardで作成したのですがMFCもATLもオプションから外してあります
コンパイラのエラーでしょうか?
VisualStudio .net 2003です
0019デフォルトの名無しさんNGNG
VC6.0の頃でたことあったな…。
その時は、F7やF5でコンパイルするとダメだったけど、
「ファイルを選択→右クリック→コンパイル」
とするとなぜか通ったので、それで回避してた。

原因は面倒だったので追ってないが、プロジェクトの肥大化が
原因じゃないかと思ってる。(根拠なし)
0020デフォルトの名無しさんNGNG
ちょいとスレ違いかもしれないけど朗報っぽいんで
Microsoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/
0021デフォルトの名無しさんNGNG
>20
GJあげ
0022デフォルトの名無しさんNGNG
行列表記したいのですが、
1. std::vector< std::vector<double> >
2. boost::multi_array
3. blitz::array
だとどれが速度的にいいでしょう?
0023デフォルトの名無しさんNGNG
お前の環境とお前の使用するサイズでベンチマークしろ
0024デフォルトの名無しさんNGNG
>22
遠慮なく使え

template <typename T>
struct GYOORETSUDESUUpupupu {
T _11, _12, _13, _14;
T _21, _22, _23, _24;
T _31, _32, _33, _34;
T _41, _42, _43, _44;
};
002522NGNG
ここはマジレス禁止スレなんですか?
0026デフォルトの名無しさんNGNG
マジレス禁止スレかもしれないのに
「マジレス禁止スレなんですか?」って聞くバカ発見
0027デフォルトの名無しさんNGNG
うそつき村を思い出すな。

というか、 >>22 は速度だけが問題なのか。保守性とか考えないのかな。
本当に速度最優先なら環境と使い方に依存する面が大きいので
>>23 の通り、実際に測って比較するしかない。
0028デフォルトの名無しさんNGNG
つぅか、一口に速度っても色々あるだろうに。
数値演算における"行列"なら標準ライブラリではvalarrayの担当。
0029デフォルトの名無しさんNGNG
>>28
std::valarrayで多次元配列同士の演算(乗算とか)は
面倒だろう。効率も悪い。
0030デフォルトの名無しさんNGNG
結論:double[][]が一番早い。
0031デフォルトの名無しさんNGNG
俺の環境なんかだとblitzは(演算にもよるんだろうが)gccの方がiccより
圧倒的に速かったりするし、ホントにコレは環境依存だと思う。
gcc でもvalarray より vector の方が速かったりするしね…。
0032デフォルトの名無しさんNGNG
valarrayはalias-freeなのが売りなので、alias-freeだとコンパイラに明示的に指定して
なんぼだと思っていたのですが(そしてgccはalias-freeの指定がなかったはず)。
あぁっと、sliceが使えるという利点もありますね。
いずれにせよvalarrayは時代の遺物というのが一般的な認識だと思います。
あと、boost::multi_arrayじゃなくて、せめてboost::ublasを引き合いに出してほしいです。
まぁ、上で言われているとおりまず測定するのが先でしょう。
数値計算は環境に非常に敏感な処理ですから。

ところで便乗になりますが、unrollの回数なんかをクライアントが環境に合わせて
調整できるような線形代数ライブラリはないんでしょうか?C++で。
0033デフォルトの名無しさんNGNG
>>32
MTLがそんな事出来たような気がしなくもないけど忘れた。勘違いかも。
0034デフォルトの名無しさんNGNG
100000x100000が欲しいので>>24さんそれもヨロ。

0035デフォルトの名無しさんNGNG
レスくれた方々有難うございます。

boost::multi_arrayのドキュメント読むとblitzからの貢献があった
となっています。
blitz::arrayはboost::multi_arrayに吸収されたと思っていいですか?
準標準と言われるものが2つもあるとどれにするか悩みますが。
0036デフォルトの名無しさんNGNG
>>35
で、レスされたことを実行しようとはしないわけ?>速度計測
0037デフォルトの名無しさんNGNG
>>24
_で始まる名前を使うなっ(とレスしてみる)
0038デフォルトの名無しさんNGNG
>>36 今週中にはやるから。今、暇がないし。

前もってある程度手がかりが欲しかったのよね。
0039デフォルトの名無しさんNGNG
0040デフォルトの名無しさんNGNG
>>37
あ、おれよく使う。やばい?
0041デフォルトの名無しさんNGNG
標準ライブラリや処理系定義のライブラリと名前衝突しても文句言えん。そんだけ。
0042デフォルトの名無しさんNGNG
オレ、名前付けのセンスあるから多分ぶつからない。
ぶつかってもコンパイラが警告出してくれるからいいや。
0043デフォルトの名無しさんNGNG
24のって一応標準を読む限り安全な変数名だと思うのだが・・・漏れが標準を読み間違ってる?
boost::lambdaでもplaceholderとして同様な名前を使ってるし.

17.4.3.1.2 - Global names [lib.global.names]
-1- Certain sets of names and function signatures are always reserved to the implementation:

Each name that contains a double underscore ("__") or begins with an underscore followed by an uppercase letter (lex.key) is reserved to the 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.*
[Footnote: Such names are also reserved in namespace ::std (lib.reserved.names). --- end foonote]
0044初心者NGNG
int nx,ny,nz;

class body
{
double *r[ny][nz];
public:
body()
{
r = new double[nx][ny][nz]
};
};
のようにメモリーを当てたときデストラクターはどのようにすればいいのでしょうか?
delete [] r としてもうまくいかず・・・・
あとこの形は

class body
{
double ***r;
public:
r = new double** [nx];
for(int i=0;i<nx;i++) r[i]= new double* [ny];
for(int i=0;i<nx;i++)
for(int j=0;j<ny;j++)
r[i][j] = new double [nz];
};
のようにメモリーを当てるのと同じ意味なんでしょうか?
長くてすいません。
0045デフォルトの名無しさんNGNG
Matrixのクラスライブラリを作りました。

template< typename X > class Matrix{
public:
Matrix<X>();
friend Matrix<X> operator*<X>( Matrix<X> const &, Matrix<X> const &);
};

gccではなんの問題もなくコンパイルできたのですがVS7.1だと
operator*<X>が気に入らないみたいです。どうやったらコンパイルできるんでしょう?
0046デフォルトの名無しさんNGNG
やりたいのはポインタの2次元配列じゃなくて
2次元配列へのポインタ
double (*r)[ny][nz];
じゃないのか?
0047デフォルトの名無しさんNGNG
>>44
その前にそのコードコンパイル通ったか?
0048デフォルトの名無しさんNGNG
>>45
意味不明。 operator* だけでいいだろ。



ひょっとして、釣りか?
0049デフォルトの名無しさんNGNG
>>45
operator*をtemplateとして定義しようとしていますね?
VC++7.1での一つの解決法は,operator*のtemplateの前方宣言を入れることです.
ただ,その前にさらにMatrixの前方宣言を入れる必要がありますがw

template<typename X> class Matrix;
template<typename X> Matrix<X> operator*(Matrix<X> const &, Matrix<X> const &);
template< typename X > class Matrix{
//定義
};

もう一つのやり方はfriend関数の定義をclassスコープ内に書いてしまう,
いわゆるBarton-Nackman trickを使うことです.

template<typename X> class Matrix{
...
friend Matrix<X> operator*(Matrix<X> const & lhs, Matrix<X> const & rhs){
return Multiply(lhs, rhs); //他へ委譲する
}
};

>>48
一見それでよさそうなんですが,関数templateに対してそうやると面食らう結果になりますよ.
(理由を説明すると長いんですが・・・)
0050デフォルトの名無しさんNGNG
ところで、>>45は、マルチなわけだが。
0051デフォルトの名無しさんNGNG
>>45
Matrix<X>の前にtypenameを入れたらどうか。
VC7.1は本来typenameを入れなければならない場所に入れなく
てもコンパイルが通ることがあるくせに、入れなくてもいい場所
に入れないとエラーを起こす事がある。
005245NGNG
>>49
確かに前方宣言でこのoperatorに関してはコンパイルが通りました。
ところが同じ関数名で引数が異なる関数の宣言部分

template< typename X > class Matrix{
public:
Matrix<X> func(void);
friend Matrix<X> func<X>( Matrix<X> &);
};

のフレンドの funcでエラーが出ます。前方参照を使っても駄目なようです。
gccは全く問題なく通るのですが、これらの余計な前方参照を要するのは
VC7.1のバグなのでしょうか?
005345NGNG
>>48
ストラウストラップよーく読んでね。ホント見落としそうなところに
チョコっとだけ書いてあるから。もちろん前方宣言要とは一言も書いてないけど。
0054デフォルトの名無しさんNGNG
>>52
friend宣言しているfuncがメンバ関数のfuncを指していると解釈されてしまっていると思います.
スコープ解決子を使って見て下さい.

friend Matrix<X> (::func<X>)(Matrix<X> &);

ちなみに関数名の周りのカッコが無いと(Matrix<X>::func)と解釈しやがりますw.

前方宣言についてですが,
friend宣言の時点で関数テンプレートの実体化を行わせるわけですけれど,
その時点で関数テンプレートの宣言は見えていないとならないですから,
私としては前方宣言は必須だと思うのです.
gccの実装ではfriend宣言の後方にまで関数テンプレートの宣言を読みに行ってくれる
ようですが,むしろこちらの方が気が利きすぎかと思います.
0055デフォルトの名無しさんNGNG
>>52
あと49にも書いたのですが,前方参照がわずらわしいなら,friend関数の定義を
クラススコープ内に書くのもおススメします.(49の書き方はわかりにくかったですね)

template<typename X> class Matrix{
...
friend Matrix<X> operator*(Matrix<X> const & lhs, Matrix<X> const & rhs){
//ここにoperator*の定義を書いてしまう.
}
};
0056デフォルトの名無しさんNGNG
>>54,55
丁寧に回答していただきありがとうございました。

>ちなみに関数名の周りのカッコが無いと(Matrix<X>::func)と解釈しやがりますw.

これはここで質問しないと絶対にわかりませんでした。本当にありがとうございました。
前方宣言もgccに甘えていたわけですね。VCのせいにして恥ずかしい限りです。

あと>>49で十分よくわかります。一段余分に関数コールするのがちょっと気になったので
できればまっとうな(?)書き方でなんとかならないかと思っていましたので・・・

親切に教えていただき感謝の気持ちでいっぱいです。
005756NGNG
つづきです。

template< class X > class Matrix;
template<class X> Matrix<X> & Func( Matrix<X> &);
template<class X> X FuncA( Matrix<X> &);

template<typename X> class Matrix{
Matrix<X> & FuncA(void);
friend Matrix<X> & (::FuncA<X>)( Matrix<X> &);

X FuncB(void) const;
friend X (::FuncB<X>)( Matrix<X> &);
};

FuncA はOKですが FuncBは
テンプレート'X'番目の引数の型が無効です。
関数ではありません。
と文句が出ますね。この違いは戻り値の違いでしょうか?

あと、
friend Matrix<X> (::func<X>)(Matrix<X> &);
これは、gcc ではsyntax errorではねられるみたいですね。

うーん!>>49さんの言われるトリック使わないとだめかも・・・
005856NGNG
icc では前方宣言+スコープ解決子できれいに通りました。
結局
gcc3.3.1: テンプレートの前方宣言なしOK, スコープ演算子使うとエラー
icc8.0: 前方宣言+スコープ演算子が要
VC7.1: 前方宣言要,スコープ演算子要,時にスコープ演算子でもエラーとなる。
って結果でした。
さて、VCはどうしよう?
0059デフォルトの名無しさんNGNG
C++のクラスってのが書き方がめんどくさいし、継承とか意味が分かりません
クラスって構造体に関数を加えたやつですよね
大規模な開発で関数が多くなったり、再利用するためにライブラリ化するのに
クラスを使えばいいとは思うんですが、それ以外ってややこしくなるだけですよね
小規模やライブラリ化しないのであれば、C++よりCの方が分かりやすくていいですよね

どうしてC++で作ったほうが良いのかがよく分かりません
小さいソフトでもややこしいC++で作ったほうが良いのでしょうか?
ややこしいC++なので、大きなソフトで使えばさらにややこしくなると思うんですが…
それでも使っ方が良いんでしょうか?
0060デフォルトの名無しさんNGNG
>>59
そんな君に
ttp://www.amazon.co.jp/exec/obidos/ASIN/4797311126/250-5351434-6401851
0061デフォルトの名無しさんNGNG
59はC,C言ってるけど実はFortran使いの匂いがするな…って気のせいか…
0062デフォルトの名無しさんNGNG
> ややこしいC++なので、大きなソフトで使えばさらにややこしくなると思うんですが…

そうはならない。
C++のややこしさを使って、大きなソフトを単純な記述で表すことが可能になったりする。
0063デフォルトの名無しさんNGNG
>>59
単に今のところC++から脱落していると言うだけのようですね。
がんばって理解すれば、ちょっとしたものでもC++で書きたくなります。
0064デフォルトの名無しさんNGNG
>>60
>>59レベルのやつにいきなり読ますなって(w
むしろ「憂プラ」の方が入りやすいんじゃ?

というか、オプジェクト指向の必要性を感じないなら無理にC++つかわんでCでいいやン。
多分、>>59氏にはそれで十分なんだよ。
0065デフォルトの名無しさんNGNG
>>59 の言ってる
>小規模やライブラリ化しないのであれば、C++よりCの方が分かりやすくていいですよね
は正しいと思うし、
>小さいソフトでもややこしいC++で作ったほうが良いのでしょうか?
こういう疑問を持つのは当然だと思う。ややこしいっていうのは単に文法がややこしいだけじゃなくて,
C++使っての駒組みっていうか全体構成を考えることもすごくややこしいと思うよ。デザインパターンの話じゃないんだよな。
C++を使って人様が実行速度に満足し,かつエクスキューズなしに安心して使えるクラスライブラリを提供すること
は至難の業だと思うよ。だからC#なんてのが出てきたわけだし,HDLでもC++ベースのSystemCなんてのは
ブレークするかと思った瞬間に牽引会社のSynopsysが手を引いた。これじゃ生産性があがらないと判断したと思う。
300ページぐらいなら読むけど1000ページ超えた言語解説書読破して隅々まで覚えてる奴そう多くないだろ?
0066デフォルトの名無しさんNGNG
別にクラスを使わなくてもC++使ってると言ってる人は、
少なくはないんじゃないかと、ふと思ったり。。。
0067デフォルトの名無しさんNGNG
>>66
多いよ〜。
「C++です」って注釈のついたソース読んだけど、OldCスタイルだったし。

で、「小規模」をどう判断するかでも変わるけど、
c++でcと同程度に書くことは可能だし巧く書ければ
可読性や保守性の点でcに勝ることも可能だと思う。
#問題は、それをできる技術者が少ないことだな。
0068デフォルトの名無しさんNGNG
単純にC++で書いたほうが必然的に頭の中が整理されるので好んで使ってる。
こんな風に思ってるオレって、もしかしてC++のことよくわかって無いのかな?
0069デフォルトの名無しさんNGNG
pure Cではほとんど書いてないな。// はANSI Cではコメントとして認められてたっけ?
TurboからBorlandに変わってすぐにPC-98の上でビヤーンとにらめっこ
しながらC++コード書いてたが、やってはいけないことがよくわからなかった。
Effective C++あたりはそこら辺がうまくまとめられてるんだけど、そんなの未だ出版
されてなかったから手探りで随分遠回りしたよ。
人様の作ったクラスライブラリ使わせてもらうだけならいいんだろな?多分!
禿げビヤーンとEffective Vol1,2読んでオブジェクト指向の本読んで、デザインパターンの
本読んで・・・いつになったら一人前になることやら・・・
そうこうしてるうちにC++自体あぽーんしたってか?
0070デフォルトの名無しさんNGNG
>>68
いきなりクラスから作り始めるわけ?
俺それできない。
ある程度Cで関数作ってみてから全体構成考えてクラス作る。
0071デフォルトの名無しさんNGNG
ハードウェアに密着してたり、アセンブラに近い速度出したい人はCとアセンブラでギンギンにチューンしてください。
アプリ組みたい人はC#でやってね。
C++は暇な人やってください。

俺は暇なのでC++使ってる。
あと,complex標準でサポートしてる言語ってFORTRANとC++以外にあった?
0072デフォルトの名無しさんNGNG
>>58
あきらめてクラススコープ内に定義書いちゃいましょうw.
そっちの方が圧倒的に楽だと思います(色々実験して疲れたw).
0073デフォルトの名無しさんNGNG
>>70
C++でやった方が綺麗に書けることが多いよ。
データソースが、ファイルかリソースかメモリであるかを
意識しないでアクセスできるようなストリームクラスを作ってみ?
C++のありがたさが本当にわかるから。
純粋仮想関数の使い方を理解したらCには戻れないよ。
0074デフォルトの名無しさんNGNG
>>70
普通、データ構造とか先に考えてからじゃないと、
アルゴリズムは決まらないでしょ。
ちょっと、効率悪い作り方してるかもしれないから、
先輩とか上司に相談してみたらいいと思うよ。
0075デフォルトの名無しさんNGNG
趣味のプログラミングだったら、その場の思いつきの
行き当たりばったりの作り方でいいと思うけど、
仕事でそんなことやったら上司から雷落ちるなー。
設計と製造を行ったり来たりどたばたしたらマジで鉄拳飛んでくるw
プロの仕事ってそんなもんよ。
0076デフォルトの名無しさんNGNG
>>70
そういう怪しい作り方をしないようになるためにも、
C++やったほうがいいかもよ。いやまじで。
007776NGNG
っていうか、いきなり作り始められるところがすごいと思う。
少なくても、作ろうと意識した瞬間、
既に頭の中には仕様書が出来ている?
0078デフォルトの名無しさんNGNG
>77
最初から脳内ですべてのクラス設計が出来る人間などいない

まずは作ろうとしているソフトウェアの要素となる「もの」を
リストアップして紙に書き出してみろ
そしてさらにその「もの」が内包する要素を書き出していけ

で次はそれらがどう関連しあっているかを適当でいいから図にしてみろ
最初から完璧な図を書こうとするより、とにかく思うままに関連性を
図にしていってみろ
おかしい部分に気付いたら、その時に直していけばいい

そうやっていけば、何をクラスにしていけばいいかが見えてくる
こういうことを繰り返していけば、経験則としてどういうクラス設計が
妥当かというのはいずれ身についていくよ
0079デフォルトの名無しさんNGNG
似たようなソフトばっかり作ってるんだから
惰性で決まるだろ
0080デフォルトの名無しさんNGNG
>>73
ストリームクラスを作るより、むしろ、
ストリームを引数に持つ汎用関数を作ると思うのだが。
例:
void Func1(FILE* fp);
void Func2(std::iostream& strm);

ストリームクラスの自作は、あまりに面倒ではないかい?
0081デフォルトの名無しさんNGNG
>>80
そんなに面倒じゃないと思うぞ
0082デフォルトの名無しさんNGNG
>>80
そう考えてしまうのはオブジェクト”思考”ができていないから。
例えば、Func1を利用する巨大な処理がある場合、後でファイルからではなく
メモリからアクセスするように変更しようとしたとき、全て書き換えることになる。

基底クラスStreamで純粋仮想関数Readという感じで作っておき、
派生クラスFileStream、MemoryStreamなどで、Readをオーバーライドすれば、
Streamを扱う側は、それがメモリであるかファイルであるかを考えることなく、
それらを扱えるようになる。

簡単なリードライトであれば、初心者でも一日ぐらいでストリームクラスを自作でき、
その効果が実感できると思う。
0083!=80NGNG
>>82
Func2にstd::fstreamの代わりにstd::stringstreamを渡せば
良いだけでは?
0084!=82NGNG
Func1を利用する処理がある場合と書いてるじゃん
0085デフォルトの名無しさんNGNG
>そう考えてしまうのはオブジェクト”思考”ができていないから。
アフォの一つ覚えじゃねえのか?オブジェクト指向プログラミングやりたいなら
C++がベストチョイスじゃないだろが?まっとうなオブジェクト指向でいきたけりゃ
別な言語使え。
しかもストリームクラスの自作?いったい何の必要性があってそんな無駄なこと
せにゃならんのだ?大体メモリに関しては速度低下もたらすような余計な操作を
経由することなくアクセスしたいがためにC#じゃなくC++を使ってるのに、バカ学生かお前?
008683NGNG
>>84
そお?82氏の言いたい事ってストリームを抽象化したクラスを
作れって言いたいのでは。
80氏がFunc1とFunc2を何でならべて書いたのかわかんないけど、
>そう考えてしまうのはオブジェクト”思考”ができていないから。
ってのはちと的外れなような・・・。
0087デフォルトの名無しさんNGNG
>>75
>設計と製造を行ったり来たりどたばたしたらマジで鉄拳飛んでくるw
>プロの仕事ってそんなもんよ。
君の会社暴力団かね?
0088デフォルトの名無しさんNGNG
例えば、ハード屋にアルゴリズムを説明したり、DSPのコーディングを外部に委託
するとき、C++で元のコード書いてるとすごく見通しが悪くなるんだなこれが。
C++はこれからも使われ続けるだろうけど、ビジネスの峠は超えたな。
Unix系は相変わらずCが多いしな。
0089デフォルトの名無しさんNGNG
>>78
それは>>70氏に言ってあげてください。
0090デフォルトの名無しさんNGNG
>>87
そうやって話の腰を折るんだよね。
プロ意識が無い香具師ほど、こんなこと言って話をそらす。
0091デフォルトの名無しさんNGNG
多重継承をサポートしてる言語ってC++以外にある?
で、これ禁止すれば随分すっきりするよな。
0092デフォルトの名無しさんNGNG
使わなければすっきりするよ。
0093デフォルトの名無しさんNGNG
今の会社で鉄拳制裁加えでもしたら傷害罪でやった奴は間違いなくクビ。
どころか前科者だわな。まっとうな会社でそんなことする会社あるのか?
聞いたことないな。
0094デフォルトの名無しさんNGNG
粘着が1人いますね。
0095デフォルトの名無しさんNGNG
C++で多重継承使ってる奴いる?多重継承の必要性について熱く語ってくれ!
0096デフォルトの名無しさんNGNG
>>93
そんなこと気にするより、自己を磨くことに専念したほうがいいよ。
0097デフォルトの名無しさんNGNG
そんな会社に居続けるよりやめたほうがいいよ。
0098デフォルトの名無しさんNGNG
>>95
使う人は使えばいいし、必要性の感じない人は使わなければいい。
無理に使おうとして苦労するのも時間の無駄だし、
多重継承だけがC++のご利益では無いから。
0099デフォルトの名無しさんNGNG
オレ、データのカプセル化、
ライブラリのラッパーぐらいにしか使ってないよ。。。
それでもC++がいいよ。Cよりちょっとだけコーディング楽だから。
0100デフォルトの名無しさんNGNG
>>97
まあ、個人の自由だな。
0101デフォルトの名無しさんNGNG
仕事でバタバタしたからといって殴るより、仕事中2CHにアクセスしてる奴を殴ってやりゃどうだ。有限会社ところか三ちゃん会社だろうけどよ。
0102デフォルトの名無しさんNGNG
>>101
まったくその通りですね。先ずはあなたから。
0103デフォルトの名無しさんNGNG
っていうか、殴るに異様に反応する人がいますね。
0104デフォルトの名無しさんNGNG
普通だったら比喩的表現ってみるだろ。
何、過剰反応してるんだか。
関係ない話ですマソ。
0105デフォルトの名無しさんNGNG
JavaもC#も多重継承は必要悪としてる。無くても十分と判断してるわけだな。
C++ではそれを認めてるわけだが、それが理由でC++を使ってる人居るのかい?
0106デフォルトの名無しさんNGNG
WTL。
0107デフォルトの名無しさんNGNG
必要な人は使ってるし、必要で無い人は使ってないんじゃないかな。
0108デフォルトの名無しさんNGNG
だから、サポートしていても使わなければいいだけの話で。
他のC++の機能の恩恵を受けている人もたくさんいるわけで。
0109デフォルトの名無しさんNGNG
必要、不必要と言う話なら、もうこの辺で終わりにしたら?
必要なら使う、必要でないなら使わない。以上。
0110デフォルトの名無しさんNGNG
>>108
だから他の機能のことはどうでもいいよ。君に無理にそれを聞いてるわけじゃないんだから,
使ってなければわざわざレスはいいよ。
こっちは多重継承にどんな実例があるのか聞きたいわけなんだから。
0111デフォルトの名無しさんNGNG
lib_socket_init(srvName, &errNum)
ソケット通信関連の関数みたいなんですが、なんなんでしょうか?。
一般的な物ですか?。
0112デフォルトの名無しさんNGNG
> 一般的な物ですか?。
ググればわかるよ
0113デフォルトの名無しさんNGNG
>>110
「多重継承の必要性について熱く語」られても今更迷惑だし…
0114デフォルトの名無しさんNGNG
>>110
それこそ、本を買いあさって読むほうが早いと思うよ。
そこまでやってピンと来なければ、
そういうもんだと諦めるしかないかもね。
あと、仕事などでやってる実例はここでは言えないし。
0115デフォルトの名無しさんNGNG
>>114
だから言えなければレスしなくていいってば!教えてくれる気がある人だけコメントくれればそれでいい。
そんなに書き込みたいの?まともな実例載ってる本が見当たらないから、ここに相談しに来てるんだし。
0116デフォルトの名無しさんNGNG
>>115
cppll にでも行ってみ
011780NGNG
このスレは「車輪の再発明」で独り悦に入るマニアの多いスレですね(w
0118デフォルトの名無しさんNGNG
懐かしい話をここで聞くとはw
0119デフォルトの名無しさんNGNG
オレにはどういう話のつながりかわからないよ〜。
車輪の再開発。話は知ってるけど。。。
0120デフォルトの名無しさんNGNG
>>115
“自分が求めている答以外は許せないタチ”ですか?
いちいち反応しすぎです。

つか、iostream じゃダメ?
0121デフォルトの名無しさんNGNG
要は車を作るのに車輪から新規開発するメーカーはないでしょってこと。
違ったっけ?
で、どこと話がリンクするの?
0122デフォルトの名無しさんNGNG
リンクエラーです。。。
0123デフォルトの名無しさんNGNG
>>115
>>106
0124デフォルトの名無しさんNGNG
>>122
いや、ハイパーリンクでいいのですが。
0125デフォルトの名無しさんNGNG
iostream っていう実例があるのに、周期的に「多重継承の実例ない?」厨が発生するのはなぜだろう。
は、ひょっとして釣り?
0126デフォルトの名無しさんNGNG
車輪ってiostreamのことか。わかりましたー。
0127デフォルトの名無しさんNGNG
>>115は先ずiostreamをよく調べてからここに来なさいって琴田。
話はそれからでも遅くは無い。以上。
0128デフォルトの名無しさんNGNG
>>71
C(99)
0129デフォルトの名無しさんNGNG
言語仕様の一部を実現するために全体の言語仕様を決めました。
0130デフォルトの名無しさんNGNG
筒子の2から8を2個ずつ集めるのも車輪ですよ。それも大きな。
0131デフォルトの名無しさんNGNG
つまんね
0132デフォルトの名無しさんNGNG
newで確保した領域って,
私の環境(Linux 2.4.25,g++ 3.3.3)ではzero fillされるようなんですけど,
これって規格で保証されてるものなんでしょうか?
例えば,
map <short, double> m0;
m0 [0];
cout << m0 [0] << endl;
ってやったときに,0って返ってきて欲しいのだけれど.
たまたまかなぁ.
0133デフォルトの名無しさんNGNG
mapの要素はデフォルトコンストラクトされるので、その場合は0が保証される。
newで生成する値については少し事情が違う。
0134デフォルトの名無しさんNGNG
cppll、もうやだ。
FreeMSVCって環境依存のはなしだろ!?
初心者がそういう話したら、ぺきっておるくせに。
0135132NGNG
早速の返答,ありがとうございました.よく分かりました.
>>133
> mapの要素はデフォルトコンストラクトされるので、その場合は0が保証される。
ただ,この説明で新たに疑問が生じたのですが,
私の環境では,スタックに,
double d0;
とか取ったときにはd0が0でないことがあります.
スタックに組み込み型を取った場合は
デフォルトコンストラクトはされないんということでしょうか?

0136デフォルトの名無しさんNGNG
>>135
133がいってるデフォルトコンストラクトは、mapのこと。
double自体には無いです。
0137132NGNG
>>136
> 133がいってるデフォルトコンストラクトは、mapのこと。
そうすると,133の内容が
最初の私の質問への返答として,分からなくなるのですが.

m0 [0];
した時点で要素であるdoubleがデフォルトコンストラクトされ,
それの値としては0が保証される.
って説明じゃないんですか???
0138デフォルトの名無しさんNGNG
>>137
0は保障されないよ。コンパイラ依存。
0139デフォルトの名無しさんNGNG
↑ごめん、ちょっとまって、試す
忘れて。
0140デフォルトの名無しさんNGNG
m0 [0];
なんで、ここでコンストラクトされるとおもってるの?
0141デフォルトの名無しさんNGNG
>>140
23.3.1.2 map element access
T& operator[](const key_type& x);
1. Returns (*((insert(make_pair(x, T()))).first)).second.

ということで、まあ T() でコンストラクトされたsecondを持つpairがinsertされ
そのsecond( = T()の結果 )が返ることは規格で定義されてるね。

で、ここでTはdoubleだが、組み込み型に対する明示的な引数なしコンストラクトは
0が返る。
連想コンテナのinsert()は値が存在しているときは追加されず既存の値を返すが
ここでは空コンテナからなので追加されたものが返る。
といことで0は保証。
0142132NGNG
>>140
> m0 [0];
> なんで、ここでコンストラクトされるとおもってるの?
誤解されてるかもしれないので丁寧に書きますと,
m0のコンストラクションは,
map <short, double> m0;
で起こり,その時点でm0.size ()は0です.
その後の,
m0 [0];
で,operator []が呼ばれて,
その関数の中で,m0にはkeyが0の要素はまだ無いので,
m0.insert (make (0, double ()));が自動的に呼ばれると
思ったんですが....
ここで,要素doubleのディフォルトコンストラクタが呼ばれると.

それとも,
mapのディフォルトallocatorが使用領域をzero fillしていて,
doubleのディフォルトコンストラクタがないので,
zeroが保証されるとかですか?
0143デフォルトの名無しさんNGNG
m0[0]としたとこで、allocatorが動き出す。
ディフォルトのallocatorは0で埋めるから、
mapで生成される要素に関して0が保障される。
>>133

double *pd= new doubleは、0を保障しない。
double d; も0になるとは限らない。
スッタクだろうが、ヒープだろうが、同じ。
0144132NGNG
>>141
> で、ここでTはdoubleだが、組み込み型に対する明示的な引数なしコンストラクトは
> 0が返る。
おおっ! なるほど.
ありがとうございました.
0145132NGNG
>>143
> m0[0]としたとこで、allocatorが動き出す。
> ディフォルトのallocatorは0で埋めるから、
> mapで生成される要素に関して0が保障される。

おおっ! なるほど.
ありがとうございました.
0146143NGNG
>>141
m(_ _)m
0147143NGNG
スッタクってなんだぁ!
たのむ!流行らないでくれ!
0148132NGNG
141氏,143氏
>>141
> で、ここでTはdoubleだが、組み込み型に対する明示的な引数なしコンストラクトは
> 0が返る。
と
>>143
> double *pd= new doubleは、0を保障しない。
> double d; も0になるとは限らない。
> スッタクだろうが、ヒープだろうが、同じ。
が矛盾していますが.どちらが正解なんでしょう?
私の環境(Linux 2.4.25,g++ 3.3.3)では,
double *pd= new doubleは,常に0です.
double d;は0になるとは限らないです.
template <typename T> T default_constuctor (T) {return T ();}
default_constuctor (double ())は,常に0です.
0149143NGNG
double *pd= new double();
double d();
こういうことなら、非環境依存で0になるんじゃないかな。
0150デフォルトの名無しさんNGNG
>>149
後者は関数宣言な罠
0151143NGNG
・・・。 ('A`)スッタク
0152143NGNG
VC7.1で、
double *pd= new double();
*pd == 0 です。

double *pd= new double;
*pd != 0 です。
0153デフォルトの名無しさんNGNG
>>149
5.3.4(New)の15によると、Tが組み込み型(POD)の場合
new T() だと初期化され、 new T だと不定値になるね。
()の有無が重要なんだなあ。
0154132NGNG
>>153
> 5.3.4(New)の15によると、Tが組み込み型(POD)の場合
> new T() だと初期化され、 new T だと不定値になるね。
> ()の有無が重要なんだなあ。
なるほど,148の疑問が分かりました.
私の環境でdouble *pd= new doubleが,常に0なのはオマケということですね.

おつき合い頂いたみなさん,どうもありがとうございました.
0155デフォルトの名無しさんNGNG
>>134

勝手に「メールアドレス付きの」ログをWebに晒されてるのが嫌。
spamがウザいので投稿で投稿したくない。

なので、2chにいるのだ。
0156デフォルトの名無しさんNGNG
cppll_noviceが上級者に荒らされてるような気がするのは俺だけ?
0157デフォルトの名無しさんNGNG
>>156
cppllもnoviceも万年初心者の漏れには投稿しづらいッス。
0158デフォルトの名無しさんNGNG
スッタクドッコイ!
0159デフォルトの名無しさんNGNG
ヒプー
0160デフォルトの名無しさんNGNG
コンストラクタへの関数ポインタってどうやって宣言するの?
0161デフォルトの名無しさんNGNG
コンストラクタは関数じゃな〜い
0162デフォルトの名無しさんNGNG
ちょくちょく出てくる “cppll” って何かと思ったら、エビか…
0163デフォルトの名無しさんNGNG
nslookupでk.vodafone.ne.jpのMXコードを調べたいんですが検索できません
何か検索する方法はないんですか?
0164デフォルトの名無しさんNGNG
class Cexception{
const char* str_;
public:
Cexception(const char* str) : str_(str){}
const char* what() const {return str_;}
};

こんなかんじの例外クラスを見かけたんですが、コレ大丈夫なんでしょうか
0165デフォルトの名無しさんNGNG
コンストラクタに渡すstr次第なんじゃね?
0166デフォルトの名無しさんNGNG
>>165
そのとおりだが(w
エラーメッセージが全部グローバルで用意されているのかな?
使いにくそうな例外クラスではある。
0167デフォルトの名無しさんNGNG
>>166
cから延々と引き継いでるプロジェクトとか、cから流れてきたプログラマとかだと
平気でやりそうな設計ですね。
0168デフォルトの名無しさんNGNG
std::exception派。
0169160NGNG
コンストラクタへのテーブル作りたいのだけど困ったなぁ。。。

  Class{
  public:
    Class();
  };

のとき、

  Class& (*pfnClass)();

とかできそうなもんだが何故できない?
0170デフォルトの名無しさんNGNG
>>169
で、そのコンストラクタが初期化すべきオブジェクトはメモリ上のどこにあるんだ?

素直にT*を返す関数作れ。なんならtemplateで。
0171デフォルトの名無しさんNGNG
>>169
コンストラクタを直接呼び出すことは禁止
(領域の初期化がセットになる、つまりnew経由の必要がある)なので

Class hoge {
public:
static hoge * create() { return new hoge(); }
};
とでもすれば hoge::create()が静的なアドレスとれるが。

何がやりたいの?
0172160NGNG
>>171
そうだ、私がやりたかったのはソレダ
ありがとう
0173デフォルトの名無しさんNGNG
すみません、自分はjavaを主にやってるのですが
ファイルを示すクラスを作るときなどに

ファイルが存在した場合はオブジェクトを返却する関数をつくり
ファイルが存在しない場合はnullを返却するようにしています。

c++の場合ってそういう場合は実装するといいでしょう?
ファイルが存在しない場合はnullポインタを返却するとして
存在する場合にnew したとするとスコープの問題があるようなきがします

c++のえろい人だったらどうやって実現しますか
こんな感じで作るというのをアドバイスいただけると助かります。
0174デフォルトの名無しさんNGNG
>>173
スコープの問題とは?
0175デフォルトの名無しさんNGNG
>>174
即レスサンクスです

Hogeというクラスがあって

Hogeというクラスの中にcreateHoge()という関数(メンバ関数ではない)を作るとして
そのなかでHoge*を返却する場合に new Hoge()とした場合に問題はないのでしょうか?
0176デフォルトの名無しさんNGNG
例外投げる。
0177デフォルトの名無しさんNGNG
>>175
NULLじゃなくてis_openみたいにすれば
0178デフォルトの名無しさんNGNG
どうもサンクスです

>>176
そのケースもjavaでやったんですけど
例外キャッチするのがだるいじゃないですか

でもそのパターンも考えてみます

>>177
なるほど
コンストラクタ呼び出したあとに必ず
定められたメソッドを呼び出して判定すると

それが一番スマートですかね
0179デフォルトの名無しさんNGNG
file存在しない場合はNULLObject作って>>177みたいにするとか
戻り値はauto_ptrにすれば安全かな
0180デフォルトの名無しさんNGNG
>>175
auto_ptrを使うとか:
if (Hoge *ptemp = Hoge::createHoge()) {
std::auto_ptr<Hoge> phoge(ptemp);
// phogeを使って色々...
}
って手もあるけど、例外のほうがいいかも。
0181デフォルトの名無しさんNGNG
例外で処理するのが一番だよ.
でもってファイル操作は。
必要になった時点で fopen 使えばいいじゃないか。
<< なんか使うより fprintf の方が簡単でずっと良いだろ?
018256NGNG
>>55
いろいろやってみてわかりました。
結局 icc8.0/vc7.1/gcc 共
前方宣言に加えて、クラス内部でのfriend 関数の宣言をメンバ関数より先に行うことで、
スコープ解決子の助けなくコンパイルできることがわかりました。
因みに、(::func<X>)はgccが許可しません。
具体的に書くと次の通りです。

template< class X > class Matrix;
template<class X> Matrix<X> & Func( Matrix<X> &);

template<typename X> class Matrix{
friend Matrix<X> & (::Func<X>)( Matrix<X> &);
Matrix<X> & Func(void);
};

>>58にiccでコンパイルできたと書きましたが、Funcをコールしてないときに
コンパイルできてるだけで、Funcをコールするとリンクエラーになってました。
もちろんgcc はfriend 関数とメンバ関数の宣言順なんて関係なく通ります。
やっぱり、gccの方が歴史も古い分、出来がいいような気がしますが・・・?
018356NGNG
間違い間違い。すみません。

template< class X > class Matrix;
template<class X> Matrix<X> & Func( Matrix<X> &);

template<typename X> class Matrix{
friend Matrix<X> & Func<X>( Matrix<X> &);
Matrix<X> & Func(void);
};
0184デフォルトの名無しさんNGNG
ファイル内static変数は近い将来なくなるとストラウストラップが言っていたそうですが
変わりに使えと言われる無名namespaceはファイル内staticな変数と比べて
どんな利点がありますか?
0185デフォルトの名無しさんNGNG
副作用など無く、ただ
「スコープを制限するためだけにある」
ってことくらいか
0186デフォルトの名無しさんNGNG
ハァ?何がstatic?とか思いながらタイプしなくていい。
スコープ引っ越すときにつけたりはずしたりしなくていい。
内部リンケージとか外部リンケージとか気にしなくていい。
0187175NGNG
いろいろなパターンを教えていただき感謝です

結論からいうと
今自分で作ってるソフトの例外クラスを一つ作って
そいつにエラーコードを渡すようにしました。
でファイルが存在しない場合は例外を返すようにしますた。


>>179
NULLObjectっていうことは
必要なメンバの初期化をすっ飛ばして
isOpenとかで有効かどうかチェックするってことですねたぶん

>>180
auto_ptrってのは初めて聞きますが
stlのコンポーネントみたいですね
余裕が出てきたら調べて見ますサンクス

>>181
結局例外で処理することにしました
多謝です

0188デフォルトの名無しさんNGNG
>>182
自分も色々試したのですが,結論としては,テンプレート引数に依存する型を返り値とする関数
(そしてこれはまず間違いなく関数テンプレートになると思いますが)
をfriendとして宣言するときには,型の付かないスコープ解決子(::)は使えない
(使わなくて良い)ということみたいです.
で,このときはクラス内での宣言順に気をつけたほうが良い(>>182)というわけですね.
なので54の前半分で書いたことはどうやら間違いくさいです.
誤った情報を提供してしまって申し訳ないです.
自分も色々試してみて勉強になりました.(が,細かい規格に正直うんざりした面もw)
0189デフォルトの名無しさんNGNG
Matrix ライブラリのBlitz++ですが、もう随分前からファイルが
消えてるんですが、
http://www.oonumerics.org/blitz/download
プロジェクト自体あぽーんしたんでしょうか?
0190デフォルトの名無しさんNGNG
>>189
sorceforgeのミラーから普通に落とせたが?
0191デフォルトの名無しさんNGNG
>>189
本当だね。最終更新日も去年の7月だし。boostのuBLASにBlitz++
その他のライブラリを開発する時のノウハウを盛り込んだと書いて
あるから、もしかしたらBlitz++プロジェクトは事実上停止し、uBLAS
に開発者が移った可能性はある。

どっかにソースないかな。
0192デフォルトの名無しさんNGNG
>>190
ttp://sourceforge.net/project/showfiles.php?group_id=63961
から落とせた?
0193デフォルトの名無しさんNGNG
>>192
ttp://easynews.dl.sourceforge.net/sourceforge/blitz/Blitz++-0.7.tar.gz
少なくとも俺はこれを落とせた。
0194デフォルトの名無しさんNGNG
>>193
本当だね。URLを全部指定しないとだめぽ・・・・
CGIからは全部削られているみたい。
0195デフォルトの名無しさんNGNG
C++って何で、
extern "C" { }
が要るの?

これのせいで、どれだけ手間が増えてるか!
0196デフォルトの名無しさんNGNG
>>195
オブジェクトファイルの命名規則がCと違うから。
0197196NGNG
性格には、
オブジェクトファイル内で使われるシンボルの命名規則が違うから。
誤解を招く表現だったな。
0198デフォルトの名無しさんNGNG
>>195
そんなに手間増えるか?
0199デフォルトの名無しさんNGNG
>>195
多分、ここにそんなレスを書き込む手間のほうがめんどいとおもう。
020056NGNG
最終報告です。
上でgccの出来が云々と書いたのですが、コンパイラオプション
vc/icc /O2 /arch:SSE2 /G7
gcc -O2 -march=pentium4 -mfpmath=sse -msse2
としルーチンの入り口と出口で
time_t start, end;
start = time((time_t *)0);
...
end = time((time_t *)0);
std::cerr << difftime( end,start);
としたところ,
icc 1.0e+001
gcc 2.0e+001
vc 4.4e+001
となりました。icc8.0が断トツ。icc比gcc は半分。vc7.1は1/4の速度となりました。
020156NGNG
上のgcc はWinXPのCygwinです。version 3.3.1 -mno-cygwin としてます。
因みに同マシン上でFreeBSD 5.2 gcc 3.3.3では 1.5e+001となりました。
FreeBSDが何でXPより遅いのか判ってませんが??
020256NGNG
あ!XP では20 FreeBSD 15だから速いんだ。オカルトが起こらなくてよかった。
間違いばかりでスンマセン。
0203デフォルトの名無しさんNGNG
>>202
レポートおつ〜。

>!XP では20 FreeBSD 15だから速いんだ
20、15ってなんでしょうか?

スッタク、ヒプー ワロタよw
0204デフォルトの名無しさんNGNG
>>183
> template<typename X> class Matrix{
> friend Matrix<X> & Func<X>( Matrix<X> &);
> Matrix<X> & Func(void);
> };

どうでもいい話かもしれませんが、↓のほうがよくないですか?

template<typename X> class Matrix{
friend Matrix& Func<>( Matrix&);
Matrix& Func(void);
};
0205デフォルトの名無しさんNGNG
difftime の結果が
Cygwin -mno-cygwinだと20sec
FreeBSD のgcc だと 15sec
0206デフォルトの名無しさんNGNG
も一度書き直します。
XP
icc8.0 10sec
gcc3.3.1 -mno-cygwin 20sec (因みに-mno-cygwin指定なければ 80sec)
vc7.1 44sec

FreeBSD 5.2
gcc 3.3.3 15sec
テストソースはMatrix計算を多用(カルマンフィルタ)したものです。
0207デフォルトの名無しさんNGNG
コマンドラインからファイルかディレクトリ名を入力してもらって、
ファイルの場合は末尾にabcと書き込んで、ディレクトリの場合にはそのディレクトリに
abc.txtというファイルを作成し、そこにabcと書き込むようなプログラムを作りたいのですが
コマンドラインから入力されたものが、ファイルかディレクトリかを識別する方法ってありますか?
0208デフォルトの名無しさんNGNG
>>207 bool boost::filesystem::is_directory( const boost::filesystem:path & ph );
0209デフォルトの名無しさんNGNG
>>208
boostを使うわけね。
実はboostって触ったことすらなくてちんぷんかんぷんなんだけど、
調べてみたら面白そう。少しやってみるよ。
ありがとうございました。
0210デフォルトの名無しさんNGNG
>>204
本当にどうでもいい話なら
boost::numeric::ublas::matrixを使えば終わるという説も
0211デフォルトの名無しさんNGNG
テンプレート引数を持つ関数のfriend宣言は何もmatrixライブラリに限った話ではない。
0212C++NGNG
http://page4.auctions.yahoo.co.jp/jp/auction/d47227135
0213デフォルトの名無しさんNGNG
>>204
下の方が良いというか,どっちでも良いはずです.

>>210
どうでも良くなくても,普通はそうするべきですね.
0214デフォルトの名無しさんNGNG
すいません。自然定数eを計算によって求め、結果を表示するプログラムの作り方を教えてください。
0215デフォルトの名無しさんNGNG
>>214
まず数値計算を勉強汁!
っつーか自然定数って何だよ。自然対数の底だろうが...ったく。
そもそもさぁ、おまえにはググって答えを見つけるぐらいの知恵はないのかよ。
0216デフォルトの名無しさんNGNG
そう問題に書かれているからわからんのですよ
0217デフォルトの名無しさんNGNG
「自然定数」ってなんだかわかんなかったから、かわりに
「自然対数の底」を求めるプログラムを作りました。

って書いて提出すれば問題なし(たぶん)
0218デフォルトの名無しさんNGNG
とりあえずそうしてみます。アドバイスありがとう
0219デフォルトの名無しさんNGNG
自然対数の底 e = 自然定数
0220デフォルトの名無しさんNGNG
"+自然定数" の検索結果 約 108 件
"+自然対数" の検索結果 約 6,330 件
0221デフォルトの名無しさんNGNG
>>213
>どうでも良くなくても,普通はそうするべきですね.
それは違うな!そんなことはboostがISOの仕様に含まれてからいうべき。
標準仕様に含まれてないものを使うべきなどとは誰もいえない。
0222デフォルトの名無しさんNGNG
どうでもいいけどBoostダウンロードできるか?
http://www.boost.org
0223213NGNG
>>221
あ,違います違います.
213は,既存のライブラリがあるなら,自分で車輪の再発明をするよりは
それを使うべきではないか?という意図の書き込みです.
boost::numeric::ublasを使うことを強制するつもりはまったく無いです.
特にmatrixは他の有力な候補もありますし.
0224デフォルトの名無しさんNGNG
sfのミラーから落とせないならsf.net自体の不調だろ。なんかあそこトラブル多いし。
0225デフォルトの名無しさんNGNG
for( double x = 0; x < 1.e6; x += 1.0 ){
double tmp = 1.0 + 1.0/x;
double ex = pow( tmp, x);
fprintf(stderr, "%e %e\n", x, ex);
}
質問してきた奴をぐちゃぐちゃ罵倒してる暇あるならわずか5行で回答
できるだろが!
0226デフォルトの名無しさんNGNG
>>225
#include <math.h>
#include <stdio.h>
int main(void) { printf("%f\n", pow(2, (1 / log(2)))); return 0; }
わずか3行でできるだろうが!
0227デフォルトの名無しさんNGNG
よく車輪の再発明が愚の骨頂のように言う人いるけど、温故知新ってことわざもあります。
boost使って楽だけど、楽して一ユーザとして過ごしてるだけじゃ、難しくて膨大な
言語仕様のC++はなかなか身につかないんじゃないすか?C++習得の教育効果という意味で
matrixのクラスライブラリの作成は有意義だと思いますが・・・
0228デフォルトの名無しさんNGNG
まあ確かに、演習としてはStringとかArrayとか作るわな。
0229デフォルトの名無しさんNGNG
>>226
>>すいません。自然定数eを計算によって求め、結果を表示するプログラムの作り方を教えてください。
出題者は収束する様子を確認させたいんだよ.
0230デフォルトの名無しさんNGNG
それと、自分のプログラムの中でその依存度があまりに高い場合、自前で作るのは決して悪くないと思う。
汎用目的のものをカスタマイズすると思いもかけず速度が改善したりってこともあるし。何より内容をちゃんと
理解しとくとサポートを中止されたときでも安心ってのもあるよ。
0231デフォルトの名無しさんNGNG
車輪を作るのは面白いし勉強になる。
しかし自分が本当にやるべきこととはズレていることが多いので注意。
0232デフォルトの名無しさんNGNG
再発明上等ヽ(`Д´)ノVC5じゃboostまともに使えねーんだもん
0233デフォルトの名無しさんNGNG
>>227
教育的効果については激しく同意します.

>>230
使いたい機能が本当に限定される場合だけですね.普通に使えるものを作ろうとすると結構大変ですし.
string, vector, matrixとかって見た目ほど中身は簡単ではないですし.
それに最近のC++のライブラリは,汎用性を維持しつつ,ユーザが要求に合わせてカスタマイズし
最大限に効率を発揮させることのできる,いわゆるpolicy_basedなものが多くなってきていますから,
「ライブラリ=汎用で遅い」という図式は必ずしも成り立たなくなってきているように感じます.
(その代償として使い方が異常に煩雑になるという欠点を負うんですが)

>>231
耳が痛いですw
0234デフォルトの名無しさんNGNG
この仕事長くやってると、車輪作るのウザったくない?
まあ、若いうちだけだなって感じ。
0235デフォルトの名無しさんNGNG
あれだよ。そんな雑魚仕事は新人研修の課題にでもすればいい。
今がちょうどいい時期。
0236デフォルトの名無しさんNGNG
所詮、人様の作ったライブラリの wrapper 作ってるだけのソフト屋が雑魚仕事とは片腹痛し。
0237デフォルトの名無しさんNGNG
初心者が「これがあれば(゚∀゚)イイ!!」
と思うようなものはすでに存在している。
複数人参加型のプロジェクトで使わない事を前提にするなら、
自作ライブラリを作るなりなんなり勝手にすればいい。
ただし自作を自慢すんな、このスレで。はずかしいぞ。
0238デフォルトの名無しさんNGNG
>人様の作ったライブラリの wrapper 作ってるだけ
あいたた! まさに>>237 の仕事そのもの
0239デフォルトの名無しさんNGNG
と、以前に自作自慢で恥をかかされた経験のある>>238が申しております。
0240デフォルトの名無しさんNGNG
と、以前に自作自演で恥をかかされた経験のある>>238が申しております。
0241デフォルトの名無しさんNGNG
と、顔を真っ赤にして煽りをいれる>>239-240が申しております。
0242デフォルトの名無しさんNGNG
と、顔を真っ赤にして煽った経験があるから
他人も同じ事するに違いないと思い込んでいる>>241が申しております。
0243デフォルトの名無しさんNGNG
再発明という表現にも語弊がある気がするね。
結局、誰かがもう通った道をなぞってるだけじゃん。そりゃ楽だし面白いわ。

自分だけの新大陸を見つけよう。
0244210NGNG
>>227
matrix作るのも悪くは無いが>>228くらいにとどめておくか
貧弱な2(or多)次元配列クラスが作れた、程度でいいと思う。
matrixで学習すべきはExpression Templateじゃないかと。
てことで誰か俺にExpression Templateを学習できる出来れば日本語のサイトを教えてくれ_| ̄|○
0245デフォルトの名無しさんNGNG
>>243
実は、コロンブスやマゼランは中国(明王朝)の探検団の作った地図を頼りに
新大陸に到達したという説が浮上している。
TBSの「世界ふしぎ発見」でやってたよ。マジレス。
0246デフォルトの名無しさんNGNG
ほとんどの製品開発っていうのは再発明なんだよな。再発明じゃないのは製品の規格制定段階の
ファーストランナーだけ。ところが再発明といっても全く同じプロセスじゃないから新たな発明が生まれる。
0247デフォルトの名無しさんNGNG
>>245
それはもしかして鄭和のことか?
0248デフォルトの名無しさんNGNG
日経サイエンスにコロンブス以前に新大陸について書かれた地図の真贋論争というネタが
載ってたな。というか、コロンブス以前にヴァイキングが行ってたのは間違いないらしいが。
0249デフォルトの名無しさんNGNG
ここは車輪の再発明ネタだけで何倍もおかわりするインターネットですね。
0250245NGNG
>>247
そういえば、そんな名前が出てたかもしれない。

コロンブスの大陸到達時の文献に、
アメリカ原住民と明らかに肌の色が違う人々が他にいたと書かれている。
由来不明の古い灯台の遺跡が存在し、その設計寸法の最小単位が
中国で用いられていた単位と一致する。
などなど、色々番組で言ってたよ。
0251デフォルトの名無しさんNGNG
>>249
既に答えがわかってるもの以外人に相談しても答えられないだろ。再発明が嫌な奴はこのスレ
に来るなって琴田。
ところで、
数値計算するのに行列の演算ではなく操作というかインターフェースを提供してるだけ
のublasなんか使ってる椰子なんているのかね?実際の+/-/*以外の実際の演算は結局自分で
つくらにゃならんだろ?実数に限定するならnewmat の方がよっぽど便利
http://www.robertnz.net
0252デフォルトの名無しさんNGNG
車輪は車輪でも俺の車輪はレース用のスペシャル仕様
市販品ではタイムが下がりますよ?
0253デフォルトの名無しさんNGNG
>>252
スポンジタイヤを紙やすりで削ってますか?
シャーシは肉抜きしてますか?
タミヤの電池使ってますか?
0254デフォルトの名無しさんNGNG
そして結局「適材適所」に落ち着くわけか
0255デフォルトの名無しさんNGNG
>>236
オレの事かと思ってびっくりしたよw
0256デフォルトの名無しさんNGNG
パフォーマンスがどうこう言ってSTLを
否定する>>252のような痛いヤシがいたが、
また息を吹き返したようだな(w
0257デフォルトの名無しさんNGNG
>>256
お前は何もわかってないな
0258デフォルトの名無しさんNGNG
>>257
お前がな。相当に痛いよw
0259デフォルトの名無しさんNGNG
>>255のように謙虚になれないヤシって痛いよな。
ユーザーモードはすでにそれ自体がラッパーなのに、
それを自覚できない馬鹿のなんと多いことか。
0260デフォルトの名無しさんNGNG
ラッパーと非ラッパーの二種類に分ける気かよ

無茶だなー
0261デフォルトの名無しさんNGNG
じゃドライバとか作ってるとエライわけだな
0262神NGNG
おまえら人間ってラッパーしか作ってないじゃん
0263デフォルトの名無しさんNGNG
俺はトロンボーン奏者だ
0264デフォルトの名無しさんNGNG
俺はフルート奏者だ
0265デフォルトの名無しさんNGNG
yippy yo yippy yay
あれ、ここなんのスレだっけ
0266デフォルトの名無しさんNGNG
俺はハーモニカ走者だ。
0267デフォルトの名無しさんNGNG
俺は尺八掃射だ。
0268デフォルトの名無しさんNGNG
利用しやすいインターフェイスの構築は立派なことだと思います。
0269デフォルトの名無しさんNGNG
C++の数値演算ライブラリってなかなかいいのがないよ。liboctave+atlasがなかなかいいけど、
blitz風の行列の設定方法(A = 1,2,3,5,6;)が使いたいとか言い出すと結局自作せざるを得ない。
0270デフォルトの名無しさんNGNG
C#が出てきたことでC++はなくなるんですか?
0271デフォルトの名無しさんNGNG
C#でOS作れるのか?
0272デフォルトの名無しさんNGNG
継承は何の為にある
0273デフォルトの名無しさんNGNG
C++使いとしてはC#の存在が気になるんですけどね。
C#が出来たから何か良いことあるんですかね?
0274デフォルトの名無しさんNGNG
すまん、知らんのだが、Windows以外でも使えるの? C#。
0275デフォルトの名無しさんNGNG
本屋に行くとやたらとC#関係の本が並んでいるのが気になるところ。なんで?
0276デフォルトの名無しさんNGNG
スレ違いだけどLonghornでWinFXがネイティブAPIになるからじゃないの。
つーかGW的な流れだね。
0277デフォルトの名無しさんNGNG
オライリーのC#本を見たときは、妙な感慨があったな。
0278デフォルトの名無しさんNGNG
C#の本ぱらぱら読んだだけなのだが、継承でsealとかoverrideを明示するのはC++にはない
新しい機能。こんなのはC++でもあっていいとオモタ。
俺はポインタ大好きなんで、明示的なポインタがないのは寂しいけど
-> がないのは確かに見やすいとオモタ。
ただ条件コンパイル指定の機能が弱いのと、
結局遅くてOffice作るには使えんかったというのはホントか?
少なくともデバドラは書けんが特にWin上の統合環境でVB/C++行き来しながら
アプリ書かんでいいのは楽ということらしい。・・・でいいんかな?
まぁ数値計算メインの椰子には用はないってことで。
0279デフォルトの名無しさんNGNG
Winのアプリ屋がいうには最近ほとんどC/C++の仕事はなくC#がメインらしい。
でも組み込みやディジタル回路屋では全く話は別でC#のかけらもない。
0280デフォルトの名無しさんNGNG
まあ、C#はまさに”次世代”のためのものだな。
スペック的にVS.netが動けるマシンじゃないのに開発してていらいらしたよ。
でも、コンパイル時にちょっと重いだけで一旦走り出せばそんなには気にならない。
C++の知識があれば習得は容易だけど、いろんな面でJavaの方が近いのはなんだかな・・・
0281デフォルトの名無しさんNGNG
ピアソンのC++のテキストで、
「isspaceはワイド文字用のバージョーンでオーバーロードされている」というくだりがあるんだけど
確か、ctypeヘッダではisspace()は一つしか定義されてないし、それ以前に
Cの仕様のライブラリなんだから、オーバーロードされているはずないと思うんだけど・・・
誤訳かなんかと考えて宜しいでしょうか?
0282デフォルトの名無しさんNGNG
iswspaceのことかなあ。
0283デフォルトの名無しさんNGNG
C++知ってる奴には習得は容易というけど、両方いじくるはめになったら混同しそう。
monoってのが既にあるけど、adaやjavaまで手を広げたgccもサポートしそうだな。
0284デフォルトの名無しさんNGNG
>>281
オーバーロードというよりtemplate版だが<locale>にある。
Cライブラリ関数にオーバーロードが追加されているのは珍しくない。
strchrとか、absとか<cmath>の各関数とか。
0285デフォルトの名無しさんNGNG
>>284
サンクス。
0286デフォルトの名無しさんNGNG
やっぱ
#if〜#endif
は欲しいよ。
0287デフォルトの名無しさんNGNG
try、throw、catchを記述すると例外をthrowしなくても実行速度に禿しく影響しますか?
0288デフォルトの名無しさんNGNG
>>287
理想としてはほぼ影響ないように実装できるはず、という話になるが、
現状のコンパイラのほとんどにはそこまで期待できないので、
実測しないと答えはわからない。
0289デフォルトの名無しさんNGNG
>287
禿げしくてのは内容にもよるが、影響はある。
例外処理を行う以上、そのオーバーヘッドは避けられない。
0290デフォルトの名無しさんNGNG
>>287
むしろ関数の入り口に throw() を書くように徹底すると
速度が上がると思うよ。
0291デフォルトの名無しさんNGNG
>>290
残念ながらそれも実測するまでわからない。
http://www.gotw.ca/publications/mill22.htm
http://www.boost.org/more/lib_guide.htm#Exception-specification
0292デフォルトの名無しさんNGNG
>>290
BCC5.6.4じゃあ逆に遅くなっちまった。

#include <iostream>
#include <boost/progress.hpp>

void func() {}

void func2() throw() {}

int main()
{
 {
  boost::progress_timer t;
  for (int i = 0; i < 100000000; i++)
   func();
 }
 {
  boost::progress_timer t;
  for (int i = 0; i < 100000000; i++)
   func2();
 }
}
0293デフォルトの名無しさんNGNG
>>292
普通遅くなるだろう。関数のケツでcatch(...){terminate();}するのと同じ処理が入るわけで。
0294デフォルトの名無しさんNGNG
ポカーン
0295デフォルトの名無しさんNGNG
ポカーン
0296質問者NGNG
g++とicpcではfuncとfunc2の速度の差はほとんどありませんでした。
素人目に見ると、func()は任意の例外を搬出し、func2() throw()は例外を搬出しない事が
保障されているので、catch(...)を挿入すべきはむしろfunc()を実行するブロックだと思えるのですが
その辺どうなっているのでしょうか?
0297デフォルトの名無しさんNGNG
>>296
規格嫁
例外を搬出しないことを保証するために、catch&terminateするんだって。
g++3でも有意の差がでるよ。throw()するほうが遅い。
0298質問者NGNG
禿本読んで書いてなければISダウソして読んでみます。
progress_timerじゃ差が分からんですね。
0299デフォルトの名無しさんNGNG
int*をnewしてreturnする関数としてfunc,func2を作ってみた。

・func()のg++ -S結果

.globl func()
.type func(),@function
func():
.LFB2:
pushl %ebp
.LCFI0:
movl %esp, %ebp
.LCFI1:
subl $20, %esp
.LCFI2:
pushl $4
.LCFI3:
call operator new(unsigned)
leave
ret
0300デフォルトの名無しさんNGNG
・func2() throw()のg++ -S結果

func2():
.LFB4:
pushl %ebp
.LCFI4:
movl %esp, %ebp
.LCFI5:
subl $20, %esp
.LCFI6:
pushl $4
.LEHB0:
.LCFI7:
call operator new(unsigned)
.LEHE0:
leave
ret
.p2align 2,,3
.L6:
incl %edx
je .L3
subl $12, %esp
pushl %eax
.LEHB1:
call _Unwind_Resume
.p2align 2,,3
.L3:
subl $12, %esp
pushl %eax
call __cxa_call_unexpected
0301デフォルトの名無しさんNGNG
C++のstaticなメンバ関数ってどういう意味があるの?
0302デフォルトの名無しさんNGNG
>>301
意味がないと思うなら使わなければいい。

C言語に意味がないと思うならアセンブリ言語を使えばいいというのと同じ。
0303デフォルトの名無しさんNGNG
>>301
オブジェクトのインスタンスを生成せずに直接使える。

Class::Method();

見たいな感じで。
0304デフォルトの名無しさんNGNG
>>302
どういう意味があるのか聞いているのですが。
0305デフォルトの名無しさんNGNG
>>301
CClass::Func();
こんな使い方が出来るのでは?
0306デフォルトの名無しさんNGNG
>>303
どういう意味があるのか聞いているのですが。
0307デフォルトの名無しさんNGNG
>>305
どういう意味があるのか聞いているのですが。
0308デフォルトの名無しさんNGNG
>>303
printfみたいな関数と同じようにつかえるんですね。
よくわかりました。
ありがとうございました。
0309デフォルトの名無しさんNGNG
















よし。
0310デフォルトの名無しさんNGNG
>>308
どういう意味があるのか聞いているのですが。
0311デフォルトの名無しさんNGNG
JAVAでの

int count = 0;
while(count < 1) {
 try{
  ・・・ここで入力
 }
 catch (NumberFormatException e) {
  System.out.println("正しい入力をしてください");
  continue;
 }
 count++;
}

のようなことをBorland C++でやりたいのですが、どのようにすればよいでしょうか
0312デフォルトの名無しさんNGNG
int count = 0;
while(count < 1) {
 try{
  ・・・ここで入力
  ・・・入力値チェック(エラーなら例外スロー)
 }
 catch (CHogeException e) {
  puts("正しい入力をしてください");
  continue;
 }
 count++;
}
0313301NGNG
なんか、質問した本人がいない間に、
お礼まで書き込まれて話が完了してる・・・・

>>303
ものすご端的で明快な回答どうもでした。
なるほど、インスタンス無しで使えるのは便利ですね。
やはりシングルトンにアクセスするために使うのがメインになるのかな?
0314311NGNG
入力値チェックの方法がわかりません。
0315デフォルトの名無しさんNGNG
>>313
テンプレート関係のコードでは結構使う。
例えば関数テンプレートの部分特殊化の模倣に使える。
ttp://www.tietew.jp/cppll/archive/3819
0316デフォルトの名無しさんNGNG
>>313
>ものすご端的
日本語は正確に書きなさい。


0317デフォルトの名無しさんNGNG
>>314
そこまで面倒見切れない。
どういう入力を期待していて、何を入力エラーにするかも書いてないし。
0318デフォルトの名無しさんNGNG
>317
int型整数を期待してそれ以外と、範囲外をエラーとしたいです。
0319デフォルトの名無しさんNGNG
>>318
宿題スレへ(・∀・)カエレ!
0320デフォルトの名無しさんNGNG
今319が良い事を言った
0321デフォルトの名無しさんNGNG
>>316
うるせーばか!
0322301NGNG
どうも、勝手に返事をしてくれる方がいるようで。

>>315
いろいろ応用方法があるんですね。
リンク先、目を通してみます。

>>316
てへ
0323315NGNG
>>322
> どうも、勝手に返事をしてくれる方がいるようで。
質問方法が厨すぎるから皆、煙たがってんだよ
空気嫁
0324デフォルトの名無しさんNGNG
空気嫁

      /,.ァ、\
     ( ノo o ) )
      )ヽ ◎/(.  
    (/.(・)(・)\
    (/| x |\)
      ( ヽノ
       ノ >ノ  ヒタヒタ
  三  しU
0325デフォルトの名無しさんNGNG
空気嫁キタ━━(゚Д゚;)━━( ゚Д)━━(  ゚)━━(   )━━(゚   )━━(Д゚ ;)━━(゚Д゚;)━━!!!
0326デフォルトの名無しさんNGNG
最近C++も始めたんですけど
C経験者ならiostreamよりstdioで実装した方が有利ですかね
あとstringもほとんど使ってないっす
0327デフォルトの名無しさんNGNG
>>326
何に対して有利不利なのか文章からは不明だけど、
別の言語だと思った方が最終的には幸せになれると思うけど?
0328デフォルトの名無しさんNGNG
>>326
C経験者はstdioの方が使いやすいだろうけど、
それじゃいつまでたってもiostream覚えられん罠。
stringは使ったほうがいいと思う。単純ミスのバグ減らせるし
0329デフォルトの名無しさんNGNG
>>328
stringは、変なこだわりさえ持っていなければ使うだろう。C使いからみたらかなり便利。
0330デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/bbs/read.cgi/computer/5651/1048584601/77-
0331デフォルトの名無しさんNGNG
ま、確かに printf とかの書式付出力は結構便利だと思う。
iostream で使いたければ boost::format 使うよろし。
0332326NGNG
了解しました

演算子のオーバーロードはなかなか面白いです
実行時のオーバーヘッドとかは気になりますけど
0333デフォルトの名無しさんNGNG
>>332
そう思うならガシガシ逆汗してオーバーヘッドがどんなもんか確認汁。

最近の人間はそれできない人多いから、Cしかできない爺の活躍する
場になるぞ。
0334デフォルトの名無しさんNGNG
> 最近の人間はそれできない人
急いで書いたら修飾がかぶった。ソマソ。
0335デフォルトの名無しさんNGNG
>>333
結論として、Cと比べてルーチン内に
CALL命令が沢山あるということですか
0336デフォルトの名無しさんNGNG
>>335
一般的な傾向としてはそうだね。ctor, dtor呼びが自動で入るわけだし。

ただ、callを出来る限り減らすことはできるし、やりようによっちゃ局所的にでCよりcall
回数を減らすことだってできる↓んだけど、そこまでできる人も解析できる人も僅かという話。

ttp://www.tietew.jp/cppll/archive/4252
ttp://osl.iu.edu/~tveldhui/papers/Template-Metaprograms/meta-art.html

0337デフォルトの名無しさんNGNG
>>336
Cしかできない爺もアレですが・・・

C++はかじったばかりですが、もう既に
C++の汎用的すぎるライブラリは、かなり抵抗あります
あのスマートなコーディングは魅力ですが
テキスト丸写しの簡単なテストプログラムでもiostream使うと
実行ファイルのサイズが凄いですね
0338デフォルトの名無しさんNGNG
iostreamでコードサイズ喰ってるのはやたら高機能なlocale回りとかだった気が。
しかもほとんど使われてないという。
0339デフォルトの名無しさんNGNG
大抵は、出力はそのまま垂れ流すからなあ。
0340デフォルトの名無しさんNGNG
>>337
> C++はかじったばかりですが、もう既に
> C++の汎用的すぎるライブラリは、かなり抵抗あります
俺はゲーム関係なんで、C++でスマートに書きつつ速度も稼がないとならんのだけど、
そういう関係じゃないならその抵抗感はひとまず捨ててしまったほうが良いのでは?
0341デフォルトの名無しさんNGNG
コンストラクタで受け取ったポインタの内容を読み出したり変更したりするクラスを作りたいのですが
可能な場合に極力constを徹底しようとして壁に当たりました。

class A{
private:
char* ptr;
public:
A(char* p):ptr(p){}
void write(){*ptr=1;}
char read()const{return *ptr;}
};

void hoge(const char* foo)
{
char* bar = new char[10];
A normal_A(bar);
const A const_A(foo);
}

ここでnormal_Aは問題ないのですが、const_Aをread()のみ可能なように
成立させるにはどう書くべきでしょうか。
最初の初期化以外はクラスが変更されないことを保証する

A(const char* p):ptr(p)const{}

みたいなコンストラクタが書けるといいのですが。
もっとも、このようなコンストラクタが書けた所でptrがconstではないですけど。
0342341NGNG
もしかしてtemplateでptrとコンストラクタの引数をconst char*にするのが正解?
0343デフォルトの名無しさんNGNG
>>341
現状でもむりやりなconst_castさえしなければ無問題に思うが?
0344341NGNG
>>343
即レスサンクス。
341のコードはconst_castしてないです。
そのままコンパイルしようとすると

const A const_A(foo);

の箇所でfooがconst char*なのに対してコンストラクタの宣言がchar*なので
エラーが出るはずです。これを

const A const_A(const_cast<char*>(foo));

と書けばエラーはねじ伏せることが出来ますが、間違えて

A const_A(const_cast<char*>(foo));

と、変数のconstを付け忘れてしまうとfooがconst char*にも関わらずwrite()出来てしまう事が問題になります。
0345デフォルトの名無しさんNGNG
>>344
class A{
private:
char* ptr;
const char* cptr;
public:
A(char* p):ptr(p),cptr(0){}
A(const char* p):ptr(0),cptr(p){}
void write(){*ptr=1;}
char read()const{return (ptr ? *ptr : *cptr);}
};

つーかどういう文脈でこういうことがしたくなるのかわからんけど。
0346デフォルトの名無しさんNGNG
イテレータを自作してて、const_iteratorとiteratorを1つで
済まそうとすると、そういう羽目に陥るのではないかと予想。
0347341NGNG
>>345
参考になります。
実際は最適化されるので微々たるものでしょうけど
readする度に分岐するのが精神衛生上良くないですね。

> つーかどういう文脈でこういうことがしたくなるのかわからんけど。
こういうことをしないとなるとコピーコンストラクタでしょうけれど
リソースも入り得る場合、リソースは普通コピーしませんよね。
一度読んだらshared_ptrかなにかにして使いまわすと思うのですが。
0348デフォルトの名無しさんNGNG
>>347
なにをしたくてこのクラス書いてるのか教えてよ。
0349デフォルトの名無しさんNGNG
>>348
ビットマップのクラスです。
通常はクラスがshared_ptrを用いてメモリの生成し、自由に中身を書き換えていくわけですが
リソースにも同じクラスを使いまわそうとしています。
また、方針としてクラスをコピーした場合には
ポインタが同じメモリを指すようにしています(そのためのshared_ptrですが)。

そこでリソースは極力constで扱いたいという考えです。
0350デフォルトの名無しさんNGNG
>>349
>リソースにも同じクラスを使いまわそうとしています。
これをやめたほうがいいに1000clock

0351デフォルトの名無しさんNGNG
>>350
もしかしたら全体から見ればリソースの持ち方などの
やっていることは間違っているのかもしれませんが、
狭い範囲で見るとあるポインタを保持するクラスに
constのポインタも渡せるように出来ないか、という話でして解決の糸口が無いものかと。

静的なリソースと動的に作ったものを合成したりするわけですから
constかそうでないかだけの違いでクラスを分けてしまうのも不便ですし。
0352デフォルトの名無しさんNGNG
教えてください。固定小数クラスをでっちあげて、

class FixedPoint {
public:
FixedPoint(int integer, int fractional = 0) : i_(integer), f_(fractional) {}
FixedPoint operator*(const FixedPoint& fp) const {
const int tmp = (i_ * 100 + f_) * (fp.i_ * 100 + fp.f_);
return FixedPoint( tmp / 10000, (tmp % 10000) / 100 );
}
const int i_;
const int f_;
};

こんな感じの計算をすると

FixedPoint f(1, 50); // 1.50
FixedPoint h = f*f*f*f;
return h.i_;

(続く)
0353デフォルトの名無しさんNGNG
(続き)
movl $1, -8(%ebp)
movl $50, -4(%ebp) # <variable>.f_
movl $2, -16(%ebp)
movl $25, -12(%ebp) # <variable>.f_
movl $3, -24(%ebp)
movl $37, -20(%ebp) # <variable>.f_
movl $5, -32(%ebp)
movl $5, -28(%ebp) # <variable>.f_
movl $5, %eax
こういう感じの処理に展開されてしまいます。戻り値の5は
最終行でいきなり得られているんですが、その前の8行が
完全に無駄です。これ取り去る方法というか、取り去られる
ようなコードの書き方ってないでしょうか?

g++の3.3使用です。
0354デフォルトの名無しさんNGNG
>>353
VC6では

mov eax, 5
ret 0

になったけど。
0355デフォルトの名無しさんNGNG
最適化オプションつけてないんじゃないの?
0356デフォルトの名無しさんNGNG
>>354
うーんそうですか。サンスコ。
コンパイラによらずに5のmovだけにする方法ないですかねえ・・
templateとenumとか?(とするとスレ違いか)
0357デフォルトの名無しさんNGNG
>>355
-O2です。-O6でも一緒ですね。
ちなみに最適化しないともっと悲惨なコードになるです。
0358デフォルトの名無しさんNGNG
>>357
-O3にしないとインラインの展開しなかったのでは?
0359デフォルトの名無しさんNGNG
>>358
いや-O3でもだめです。というか、インライン展開はされてるんですよね
call命令はひとつもないし、結果の5がimmで書かれてるから。消去され
るべき余計なコードまで出力されちゃってるってだけで。

4乗ならまだ余計なコード罹れてても許せる範囲ですけど、もっと大きな数
になるとちょっとまずいです。

boost::mpl方面?を調べるべきでしょうか。
0360デフォルトの名無しさんNGNG
ところで、
先頭のタブとか、インデントは &nbsp; 4つに置換しないか。
0361デフォルトの名無しさんNGNG
スマソ
0362デフォルトの名無しさんNGNG
うちのgcc version 3.3.3 (mingw special)だと

FixedPoint f(1, 50); // 1.50
return f.i_;

だけを

g++ -O9 -march=pentium4 -fomit-frame-pointer

で出しても一旦スタックに1.50を積み込んでるぞ。
0363デフォルトの名無しさんNGNG
やはりgccの最適化強度はその程度なのかな。
0364デフォルトの名無しさんNGNG
>>363
VS.NETで試したらインライン展開すらされてないように思うんだけど
なんかコンパイルオプション間違ってるんかな??
0365デフォルトの名無しさんNGNG
>>364
漏れはアセンブラさっぱし分からんけど
↓みたいになる模様。VS 2003

PUBLIC_main
_TEXTSEGMENT
_mainPROC NEAR
moveax, 5
ret0
_mainENDP
_TEXTENDS
END
0366365NGNG
スマソ。タブが消えてましたな。

PUBLIC_main
_TEXT   SEGMENT
_main   PROC NEAR
   mov   eax, 5
   ret   0
_main   ENDP
_TEXT   ENDS
END
0367364NGNG
>>366
ありがとう。やはり漏れの勘違いだったみたい。
ちなみにそういうリストってどうやって出すの?
0368デフォルトの名無しさんNGNG
>>367
-S付けると出てこない?
0369デフォルトの名無しさんNGNG
VC++なら/FAsじゃないか?
つーか、2003ならプロジェクトの設定にまんまの項目があるし、
VC++6.0ならリスティングファイルがどうたらって項目。

まあ、マニュアルのコンパイラオプションの項目嫁と。
0370デフォルトの名無しさんNGNG
template<typename T>struct A
{
  char c;

  A(char arg): c(arg){}

  void test()
  {
    cout << c << endl;
  }
};

int main()
{
  A<int> a('1');

  A<string>* p = (A<string>*)(&a);

  p->test();
}
 
のようにクラス内でテンプレート引数を使用しないとして
テンプレート的に違う型のポインタにキャストするのって
動作は保証されてますか?
0371デフォルトの名無しさんNGNG
しかしoperator*の中にcout << "operator * "; と入れてVC7.1の
吐いたコードを見てワロタ。

単に "operator * "を3回出力した後いきなり 5 を出力。コンスト
ラクタもoperator* も思い切り最適化されて影も形もなくなってる。
0372デフォルトの名無しさんNGNG
>>371
3回出力したなら影も形もあるのでわ?
0373デフォルトの名無しさんNGNG
>>370
テンプレート関係はtemplate総合スレで聞いたほうが良いと思われ
0374デフォルトの名無しさんNGNG
>>372
それが、チョト見て下さい(隣国人風)。

FixedPoint f(1, 50); // 1.50
FixedPoint h = f * f * f * f;

00401130 mov ecx,dword ptr [__imp__STL::cout (407230h)]
00401136 push esi
00401137 mov esi,dword ptr [__imp__STL::basic_ostream<char,_STL::char_traits<char> >::_M_put_nowiden (407240h)]
0040113D push offset string "operator * " (405024h)
00401142 call esi
00401144 mov ecx,dword ptr [__imp__STL::cout (407230h)]
0040114A push offset string "operator * " (405024h)
0040114F call esi
00401151 mov ecx,dword ptr [__imp__STL::cout (407230h)]
00401157 push offset string "operator * " (405024h)
0040115C call esi
std::cout << h.i_ << std::endl;
0040115E mov ecx,dword ptr [__imp__STL::cout (407230h)]
00401164 push offset _STL::endl<char,_STL::char_traits<char> > (401019h)
00401169 push 5
0040116B call dword ptr [__imp__STL::basic_ostream<char,_STL::char_traits<char> >::operator<< (407228h)]
00401171 mov ecx,eax
00401173 call dword ptr [__imp__STL::basic_ostream<char,_STL::char_traits<char> >::operator<< (40722Ch)]
0375デフォルトの名無しさんNGNG
>>372
こんな感じで。クラスをバラバラに分解し、計算できる所は
計算してしまって、残った部分だけインラインで並べている感じ。
0376デフォルトの名無しさんNGNG
VSの最適化ってすごいね
0377デフォルトの名無しさんNGNG
>>375
ほんとだ。
すごいな。g++にゃこれは無理だ。

0378370NGNG
template総合スレで聞いてみることにします
0379デフォルトの名無しさんNGNG
>>376
恐れおののいた。ICCだともっと凄いのかな。
gccでは何とかインライン化するものの、どうしても内部の
計算はそのまま残っていた。
0380デフォルトの名無しさんNGNG
どうでもいいが>>337にも参考になりそうな展開だな・・・
人生の。

0381デフォルトの名無しさんNGNG
>>380
うん。C++のライブラリはできるだけダイナミックリンクにした
方が良さそうだ。
そうなると地鎮祭の「STLを使うと実行ファイルのサイズが
一気に10倍に!?」という言葉もまともに思えてくる。
0382デフォルトの名無しさんNGNG
>>379
icc for Linux ダウソしてみるわ…
0383デフォルトの名無しさんNGNG
>FixedPoint h = f*f*f*f;
この書き方ならスタックに順番につむだろ。
& operator *=
を定義して、
h=f;
h *=f;
以下必要分だけ繰りかえしちゃどうよ?
0384デフォルトの名無しさんNGNG
ヲイヲイ固定小数点程度の計算するのに乗算を再帰的に定義して、
オプティマイザの効率がどうこう言ってんじゃねぇよ。再帰的に
定義してるからスタックに積むんじゃねぇか。お前のおつむは機械以下か?アフォが。
0385デフォルトの名無しさんNGNG
gcc 3.3.X のコードはVC7.1より良質というのが世間の相場だろ?
0386デフォルトの名無しさんNGNG
>>384
どこが再帰的なんだ?w
0387デフォルトの名無しさんNGNG
プw
0388デフォルトの名無しさんNGNG
>>385
ウスターじゃないソースは?
0389デフォルトの名無しさんNGNG
const 指定がよくないよ.
だいたいclass の i_,f_をconst指定してる忌みがよくわからん。
int i_, f_と変えただけで
int main()
{
FixedPoint f(1, 50); // 1.50
FixedPoint h = f*f*f*f;
}

は

main:
pushl%ebp
xorl%eax, %eax
movl%esp, %ebp
subl$56, %esp
andl$-16, %esp
call__alloca
call___main
movl%ebp, %esp
xorl%eax, %eax
popl%ebp
ret
0390デフォルトの名無しさんNGNG
nanananana hey yeah yeah hey
nanananana ya know a stuck on you !
0391デフォルトの名無しさんNGNG
>>389
これでやってみれ。
class FixedPoint {
public:
FixedPoint(int integer, int fractional = 0) : i_(integer), f_(fractional) {}
FixedPoint operator*(const FixedPoint& fp) {
std::cout << "operator * ";
int tmp = (i_ * 100 + f_) * (fp.i_ * 100 + fp.f_);
return FixedPoint( tmp / 10000, (tmp % 10000) / 100 );
}
FixedPoint& operator*=(const FixedPoint& fp) {
return *this = *this * fp;
}
int i_;
int f_;
};

int main()
{
FixedPoint f(1, 50); // 1.50
FixedPoint hh = f;
hh *= f;
hh *= f;
hh *= f;
std::cout << hh.i_ << std::endl;
}
0392デフォルトの名無しさんNGNG
>>389
おいおい
それ __main の方に本当の処理が入ってんだろ。g++のバージョンと環境は何よ?

すくなくとも漏れの環境ではconstを取り去るとまともに最適化されないようだ

0393デフォルトの名無しさんNGNG
>>391
全然だめポなんだけどg++ -Sするとどうなる?
0394デフォルトの名無しさんNGNG
>>389>>392
わろた
0395デフォルトの名無しさんNGNG
>>393
g++(MinGW3.3.3)の出力。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1083458467
インライン展開はされているものの、メンバ関数の内容は最適化されて
いない。もっともこのプログラムではVC7.1もあまり最適化は効かなかった。
0396デフォルトの名無しさんNGNG
>>391
変なプログラムだなあ。
0397デフォルトの名無しさんNGNG
>>395
了解。最適化効いてない(コンパイル時計算になってない)わね。

0398デフォルトの名無しさんNGNG
>>395
g++ -S -fverbose-asm hoge.cpp したあと c++filt < hoge.s > hoge_.s で整形したほうが
ベターと思われ。あとこれ最適化何?-O2?
0399デフォルトの名無しさんNGNG
>>398
-O3。gccはだいたいこんなもんだよ。
0400デフォルトの名無しさんNGNG
非MFC環境でDateTimePickerに時間を設定する方法
リソースには貼り付けれるけど、表示時間を自由に変更できません
DateTimePickerクラスが使えないし、でもシステムの時間を書き換えるのは却下で

あとスピンコントロールの使い方も
0401デフォルトの名無しさんNGNG
>>400
何様?氏んだら?
0402デフォルトの名無しさんNGNG
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v
0403デフォルトの名無しさんNGNG
皆さ〜ん。
>>400>>>402は偉く居丈高なので、答える必要はありませんよ〜。
質問の仕方という基本的な事を思い知らせてやりましょう。
0404デフォルトの名無しさんNGNG
>>403
お前みたいなのが邪魔。
>>400
ヘルプに書いてある。
0405デフォルトの名無しさんNGNG
402さんは丸出しですから
隠す必要無いですもんね。
0406デフォルトの名無しさんNGNG
メンバ変数をconst指定する意味は何?
0407デフォルトの名無しさんNGNG
質問の仕方以前にスレ違いだ馬鹿野郎
0408デフォルトの名無しさんNGNG
>>401-403
0409デフォルトの名無しさんNGNG
どういう意味があるのか聞いているのですが。
0410デフォルトの名無しさんNGNG
このスレは猿並の頭の持ち主しかいないから
誰も答えられないんだよ
0411デフォルトの名無しさんNGNG
オマエガナー
0412デフォルトの名無しさんNGNG
406=409で407=408だろ。
よって409の勘違い。

constにするのはメンバだろうが普通の変数だろうが同じでは?
間違えて書き換えたくない場合や変更してはいけないことを他人に明示したい場合じゃないの?
0413デフォルトの名無しさんNGNG
>412
×他人に
○コンパイラに
0414デフォルトの名無しさんNGNG
>>400ですが・・・確かに高圧的に読めますね
荒らしてしまって申し訳ありませんでした

>>404
ありがとうございます
もうちょい調べてみます
0415406NGNG
>>412 407は別人だよ。

なるほど、コンストラクタでの初期化だけは許可されのね。
でもgccではこのconst指定をはずすとまともなコードはきますよ。
0416デフォルトの名無しさんNGNG
そんなにgccをようごしなくても
0417デフォルトの名無しさんNGNG
>>414
というか、そもそもスレ違いなので、APIスレで聞いたら?
0418デフォルトの名無しさんNGNG
>>4007>>402

なんだこのやろう!!!!!!!
0419デフォルトの名無しさんNGNG
>>400、>>402
死ねば?
0420デフォルトの名無しさんNGNG
400 デフォルトの名無しさん 04/05/02 17:05
非MFC環境でDateTimePickerに時間を設定する方法
リソースには貼り付けれるけど、表示時間を自由に変更できません
DateTimePickerクラスが使えないし、でもシステムの時間を書き換えるのは却下で

あとスピンコントロールの使い方も
0421デフォルトの名無しさんNGNG
蒸し返すなよ…
0422デフォルトの名無しさんNGNG
402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v

402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v

402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v

402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)

まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v
0423デフォルトの名無しさんNGNG
初心者を餌食にするのって傍から見ててもムカつくんだよね
0424デフォルトの名無しさんNGNG
突然ですが。
いま「プログラミング言語C++第3版」読んでるんですけど、
§13.2(pp. 386)に書いてある
"文字列の定義は、文字をコピーをできるといったごくわずかの内容から構成されている"
ってどういう意味なんでしょう。
0425デフォルトの名無しさんNGNG
>>424
The definition of a string relies on the fact that acharacter can be copied, and littele else.
のこと?コピーできるとかの条件をみたすならそれはstringの要素になりうる、っていう話の
まえふりじゃないの?
0426デフォルトの名無しさんNGNG
>>415
> でもgccではこのconst指定をはずすとまともなコードはきますよ。
だから、 誤解だって。
0427デフォルトの名無しさんNGNG
>>426
だから誤解じゃないよ。-Sつけて確認してみろ。
0428デフォルトの名無しさんNGNG
>>427
> だから誤解じゃないよ。-Sつけて確認してみろ。
>>395見ろ低能。
0429デフォルトの名無しさんNGNG
>>427
389は嘘だよ?
0430デフォルトの名無しさんNGNG
>>428
糞かお前は。メンバ変数のconst削除した場合。
FixedPoint h = f*f*f*f;
がどう展開されるかは、とっくに>>389に示されてるんだよ。
>>353の何回もpush繰り返すコードとは明らかに違うだろうが。
アセンブラも読めない知障は死ねよ。
0431428NGNG
>>430
ったく・・・・・・。
mainにreturn文がないから0を返却してる。
最適化でfとhは綺麗さっぱり消えている。
だからなにもしてないように見えるだけ。

アセンブラ読めないのは お・ま・え☆
ったく糞が。

0432デフォルトの名無しさんNGNG
>>430
ワロタ
0433デフォルトの名無しさんNGNG
242 名前:名無しさん@恐縮です :04/05/02 22:55 ID:7ffryccT
ここまでのネタ職人の仕事ぶりのまとめ

http://cgi28.plala.or.jp/ll/lll/img20040502212012.jpg#pc5.2ch.net(元画像)
http://ahiru.zive.net/joyful/img/1095.mpg#pc5.2ch.net(元動画)

http://fetish-onsen.com/cgi/upload/source3/No_2179.jpg#pc5.2ch.net(一塁が観客席側に移動)
http://up.nm78.com/data/up004929.jpg#pc5.2ch.net(一塁が本塁側に・・・)
http://fetish-onsen.com/cgi/upload/source3/No_2181.jpg#pc5.2ch.net(一塁手が観客席側に・・・)
http://up.nm78.com/data/up004948.jpg#pc5.2ch.net(神隠し・・・)
http://sumire.sakura.ne.jp/~hatomune/cgi-bin/imgboard/img-box/img20040502214930.jpg#pc5.2ch.net(一塁が分裂して・・・)
http://a.jmpd.com/upload/show_img.php?pid=946-A&db=hige1128&type=2(飛脚・・・)
http://fetish-onsen.com/cgi/upload/source3/No_2183.jpg#pc5.2ch.net(一塁がジャンパイアの手元・・・)
http://sumire.sakura.ne.jp/~hatomune/cgi-bin/imgboard/img-box/img20040502224028.jpg#pc5.2ch.net(ファミコンで再現・・・)

http://www.chugoku-np.co.jp/Carp/2003/Cs03060501.html(関連ニュース)
0434デフォルトの名無しさんNGNG
まさしく

「環境によるだろ」

みたいなw
0435デフォルトの名無しさんNGNG
まぁg++3を仮定しての話ってことで。
VC++は最強すぎるし。
0436デフォルトの名無しさんNGNG
それを認められない人がいるわけで
0437デフォルトの名無しさんNGNG
430は引き篭もったのか?
0438デフォルトの名無しさんNGNG
春だねえ…
0439424NGNG
>>425
サンクスです。
よく分かりました。

私が読んでるのは訳書なんです。
日本語がひどいです。
誤)2つの補い合う16ビット整数でintを表現するマシンでは
正)16ビットの2の補数でintを表現するマシンでは
とか...
0440デフォルトの名無しさんNGNG
http://www.nminoru.jp/~nminoru/programming/x86-cc.html#benchmark
icc が最強 > gcc3 >= MVC
ってところだな。
0441デフォルトの名無しさんNGNG
>>439
何頁?
0442デフォルトの名無しさんNGNG
>The definition of a string relies on the fact that acharacter can be copied, and littele else.

string の定義はコピーできるってこととほんのわずかのほかのことに依存している。
0443デフォルトの名無しさんNGNG
little はもうちょっと否定的につかった方がいいかな?
意味はコピーできることが一番大事で、それ以外のことはささいなこと
っていうことじゃないの?
0444デフォルトの名無しさんNGNG
>>443
> little はもうちょっと否定的につかった方がいいかな?
もっと否定的で「ほとんど〜ない」っつーぐらいに訳すのが一般的。

 string の定義は、ほぼ (sting を構成する要素である) 文字が複製可能であるという
 事実のみに依存している。
0445439NGNG
>>441
108ページです。

↓は正誤表のURL(訳者のWebページ)です。
ttp://www.longtail.co.jp/errata/
0446デフォルトの名無しさんNGNG
>事実のみに依存している。
こういう訳語に相当するのはonlyだよ。and little else を無視してるな。
0447デフォルトの名無しさんNGNG
「ほぼ」って書いてる
0448デフォルトの名無しさんNGNG
「ぼぼ」に見えた。
0449デフォルトの名無しさんNGNG
まんこ。
0450デフォルトの名無しさんNGNG
英語以前に
ほぼ文字
こういう形容の仕方より
ほぼ依存している
とするのがbetterだろ?
0451デフォルトの名無しさんNGNG
べっちょ
0452デフォルトの名無しさんNGNG
>>445
昔そこをみたとき掲示板に痛い書き込みがあったなーと思いながら
いってみたらまだあった
0453デフォルトの名無しさんNGNG
>>452
どれさ
0454デフォルトの名無しさんNGNG
>>453
非終端子
0455デフォルトの名無しさんNGNG
>>430
> >>428
> 糞かお前は。メンバ変数のconst削除した場合。
> FixedPoint h = f*f*f*f;
> がどう展開されるかは、とっくに>>389に示されてるんだよ。
> >>353の何回もpush繰り返すコードとは明らかに違うだろうが。
> アセンブラも読めない知障は死ねよ。


>>431
> >>430
> ったく・・・・・・。
> mainにreturn文がないから0を返却してる。
> 最適化でfとhは綺麗さっぱり消えている。
> だからなにもしてないように見えるだけ。
> アセンブラ読めないのは お・ま・え☆
> ったく糞が。
0456デフォルトの名無しさんNGNG
gcc厨が暴れているスレはここですか?
0457山本五十六NGNG
いい加減目を覚ませ…
C++は時代遅れなんだ、と
0458デフォルトの名無しさんNGNG
>>457
では逆に聞くが、時代に沿った言語とは?
まさかC#なんて言うなよ。
0459デフォルトの名無しさんNGNG
>>457
それからD言語というのも無しだ。
0460デフォルトの名無しさんNGNG
マジレス(・∀・)カコイイ
0461デフォルトの名無しさんNGNG
>>458
C#は時代に沿ってないの?
つまり、Windowsがなくなると思ってるってことになるけど
君は本気でそう思っているわけ?
0462デフォルトの名無しさんNGNG
>>461
そうは言ってない。WinFX APIを備えたLongHornが主流になれば
最先端だと言えるかもしれないが、今の段階では糞重たくてC++
より遅くて効率が悪い言語としか言えない。

そういう俺も仕事で無理矢理C#をちまちま触っているが、まだ
まだだねえ。この言語。次のバージョンに期待しよう。
0463デフォルトの名無しさんNGNG
双方うざい
〓〓〓〓〓〓〓〓〓〓 終了 〓〓〓〓〓〓〓〓〓〓 
0464デフォルトの名無しさんNGNG
チッ!Winのプログラマやってる能無しかい?
0465デフォルトの名無しさんNGNG
↑チッ!Winのプログラマもできない能無しかい?
0466デフォルトの名無しさんNGNG
Winのプログラマのほうが勝ち組。だってWinだから。
0467デフォルトの名無しさんNGNG
PCFX最強
0468デフォルトの名無しさんNGNG
>>465
プログラマやってること自体恥じろ!タクシー運転手と同じ人生の掃溜め職業ってことを自覚しろ!
0469デフォルトの名無しさんNGNG
>>379
> >>376
> 恐れおののいた。ICCだともっと凄いのかな。
iccでやってみたけど、VC++と同様の結果だった。まぁさすがという漢字かな。
0470デフォルトの名無しさんNGNG
>>468
タクシー運転手に失礼
0471デフォルトの名無しさんNGNG
class A { int a1; char a2[10]; };
class B { int b1; char b2[10]; };
class C {int c1; char c2[10]; }; (実際には同じパターンとは限らないですが。)

class All {
A a;
B b;
C c;

void init();
}

とかやって、init()に渡す引数の型によって、その型に応じてclass Allの
特定のメンバの初期化をしたいのですが、一つには、各引数を取った
時のinit()メソッドを各々書けばいいのですが、メンバの数が多くなった時
にずらーっとinit()が並んでしまうので、もっとスマートにかけないでしょうか?
0472デフォルトの名無しさんNGNG
すみません。void init()は、publicでつ。
0473デフォルトの名無しさんNGNG
>>471
ABCに共通のスーパークラスを作って、そのクラスでvectorに放り込んでおくとかは?
初期化はループの中で順次にやる。
0474473NGNG
勘違いしたかも。

引数をフラグにして、どのメンバを初期化するか選択するということ?
もしそうなら、テーブルかな・・・。
0475デフォルトの名無しさんNGNG
どういうことがしたいんだかわからん
0476デフォルトの名無しさんNGNG
A, B, Cそれぞれにinit()を持たせる。
0477473NGNG
情報が足りないね。
どういう風に書いたら、冗長になるのか提示してみそ。
0478471NGNG
>>474
>>475

例えば、main で

All database;

A default;
default.a1 = 0;
memset(a2,0,sizeof(a2));
とかやって、

database.init(&default);

とやると、Allクラスのdatabaseインスタンスのメンバー a の部分が指定した値で初期化されるという
感じです。
0479デフォルトの名無しさんNGNG
>>478
残りのフィールドは大量にメンバとしてあるけど初期化しないわけ?
0480デフォルトの名無しさんNGNG
>>478
memset萎えー
0481デフォルトの名無しさんNGNG
オーバーロードしかない
0482471NGNG
>>479
別途コンストラクタで全体の初期化はしますが、databaseの更新途中で、
特定のメンバーだけデフォルト値に戻したいんですが。

>>476
むむ、なるほろ

>>480
memsetじゃ駄目なんでしょうか?
0483デフォルトの名無しさんNGNG
ABCとも、ぜんぶそれぞれのコンストラクタで0クリアしておいて、
All::init()で特定のメンバにデータをセットする、っていう仕様じゃだめなのか?
0484デフォルトの名無しさんNGNG
>>482
それなら、ABCそれぞれにデフォルト値を別途持たせておいて、
A::setDefault() で、デフォルト値に戻すとかは?
0485デフォルトの名無しさんNGNG
typelistを使ったtupleで
0486471NGNG
>>476
>>484
そうですね、これが一番いいかも。
0487デフォルトの名無しさんNGNG
>>468
誰もが知ってる電気メーカに勤めてるが、確かにそれ言えてるな。ソフト担当させるのは電気系以外の専攻者か
電気系なら学卒者、ただ、後者の場合は将来のソフト部門の責任者として育成するけど。それ以外はキーマンとして
は期待できないから兵隊としてソフト担当にアサインする。
0488デフォルトの名無しさんNGNG
487の要約
> 誰もが知ってる電気メーカに勤めてる
0489デフォルトの名無しさんNGNG
作ったのを実行しようとしても、.exeファイルが見つかんないとか言われて
出来ないんですけど、どうしたれいいんですか?
0490デフォルトの名無しさんNGNG
なんだ、>>487もプログラマか。( ´,_ゝ`)プッ
0491デフォルトの名無しさんNGNG
それと、あんたの言うキーマンって何?ピーマンの変種か?
0492デフォルトの名無しさんNGNG
>>489
> 出来ないんですけど、どうしたれいいんですか?
タレ(・∀ (ry

0493デフォルトの名無しさんNGNG
プログラマ:奴隷
管理職:奴隷の雑用係

技術者なんてそんなもん
0494デフォルトの名無しさんNGNG
489に誰か答えてください
0495デフォルトの名無しさんNGNG
こうしたれ
0496デフォルトの名無しさんNGNG
>>494
自分が何をしたかスクリーンショットを交えてどこかにウプしろ。
それから、ソープに逝って女を2-3人抱いて来い。
話はそれからだ。
0497デフォルトの名無しさんNGNG
まぁプルグルマが自身を奴隷だと認識していない職場も結構あるけどな。いい給料もらってたりもする。
そういうのはプロセスが存在しない職場ともいう。

どちらが幸せかは謎。そういう職場は往々にしてデスマ(ry
0498489NGNG
誰か教えて
0499デフォルトの名無しさんNGNG
>>498
氏ね
0500デフォルトの名無しさんNGNG
500
0501デフォルトの名無しさんNGNG
>>498
多分ネタだと思うが、一応マジレスすると、スレ違い。
0502デフォルトの名無しさんNGNG
>>491 わからなけりゃプログラマやるのががちょうどいい。早くから将来が見えちゃやる気もなくすだろうしな。
0503デフォルトの名無しさんNGNG
で、お前の年収は?

( ´,_ゝ`)プッ (<=先読み)


0504デフォルトの名無しさんNGNG
マ板でやれ
0505デフォルトの名無しさんNGNG
いま504が良い事を言った
0506デフォルトの名無しさんNGNG
別々のクラスをvectorに格納したいのですが、どういうふうにしたらいいのでしょうか?
同じ基底クラスを継承して、基底クラスへのポインタをvectorに格納するというの
ぐらいしか思いつかないのですが。
例外安全の関係でメモリの管理が大変になりますし、継承階層が
一つ増えてしまいます。
0507デフォルトの名無しさんNGNG
>>506
http://www.kmonos.net/alang/boost/classes/any.html 使ったら?

> 例外安全の関係でメモリの管理が大変に
ここもちっと詳しく教えて。
0508デフォルトの名無しさんNGNG
>>506
> 例外安全の関係でメモリの管理が大変になりますし、
ふつー boost::shared_ptr とか使う。
0509デフォルトの名無しさんNGNG
便利な言葉ですね>ふつー
0510デフォルトの名無しさんNGNG
>>503 トータルで10M 円弱。
0511デフォルトの名無しさんNGNG
( ´,_ゝ`)プッ
0512デフォルトの名無しさんNGNG
M=MAN=万か。
0513デフォルトの名無しさんNGNG
>>510
マジレスするとただのリーマン風情はム板に逝ってくれ。
迷惑。
0514デフォルトの名無しさんNGNG
>>513
typo。
マ板な。
0515デフォルトの名無しさんNGNG
この板は只今より、研究者用の板になりました。
0516デフォルトの名無しさんNGNG
ム板はここだが…
0517デフォルトの名無しさんNGNG
頭の中でこんがらがっていたのはタイプミスとは言わないな。
0518ただのリーマン風情NGNG
呼ばれて来ました。
0519デフォルトの名無しさんNGNG
↓>>506が本題に戻します
0520デフォルトの名無しさんNGNG
>>518
シッ!シッ!
0521デフォルトの名無しさんNGNG
配列を参照渡しできたら便利だと思うのですが。
みなさんはどう思いますか?
0522デフォルトの名無しさんNGNG
>>521
できるけど?
0523デフォルトの名無しさんNGNG
>>522
//もしかしてやり方間違えてますか?
//↓みたいなの
func01(int&a[]){
}
main(){
int a[100];
func01(a);
}
0524522NGNG
>>523

int func01(int(&a)[100]){}
template<unsigned N>
int func02(int(&a)[N]){}
main(){
int a[100];
func01(a);
func02(a);
}

このどっちかでどーぞ。
0525デフォルトの名無しさんNGNG
>>523
配列を参照渡しすると、template引数に配列のサイズを受け取る
事が出来て、便利な事がある。普通のポインタ渡しだと配列の
大きさに関する情報が変換時に失われてしまう。
0526524NGNG
まぁstd::vector<>でも使っときなさいという気もするが。
0527デフォルトの名無しさんNGNG
>>524
おぉそんな方法があるんですね。
templateはまだ勉強してないんで分かりませんでした。
thxでした。ノシ
0528デフォルトの名無しさんNGNG
>>527
& と [] では []のほうが結合優先だから括弧で & を先に結合させる
0529デフォルトの名無しさんNGNG
class D : B {};
って書いたときって、
class D : private B {};
と等価でしたっけ?
おしえてください。
0530デフォルトの名無しさんNGNG
>>525 ハァ?配列へのポインタを知らんのか?
0531デフォルトの名無しさんNGNG
>>530
あんたの方が、はぁ?じゃないか。
固定長配列へのポインタなら呼び出される側が配列のサイズを知ってる事になるし、
そうでないのなら配列のサイズを渡す手段はないぞ。
0532デフォルトの名無しさんNGNG
微妙に話題がループしてるな・・・
あ、こないだはtemplateスレか。
どちらにしろウザ。
0533デフォルトの名無しさんNGNG
>>529
同じ。
0534デフォルトの名無しさんNGNG
>>533
サンポスペ
0535デフォルトの名無しさんNGNG
>>531
>>524にあげられてるテンプレート引数使えば配列へのポインタ使っても同じだろ?
というか(*a)[N}の意味知ってるよね?
0536デフォルトの名無しさんNGNG
>>535
憶測でものを言うな!
やってみてから書いたらどうなんだ。
0537デフォルトの名無しさんNGNG
>同じだろ?

この辺りから自信のなさが感じられる。
0538デフォルトの名無しさんNGNG
>>537
> >同じだろ?
>
> この辺りから自信のなさが感じられる。
昔のOOスレのジョソを思い出した。
お前らスライムか?の。
0539デフォルトの名無しさんNGNG
ホレ。わざわざ書かすな!
int func01(int(*a)[100]){}
template<unsigned N>
int func02(int(*a)[N]){}
main(){
int a[3][100];
func01(a);
func02(a);
}
0540デフォルトの名無しさんNGNG
>>539
> ホレ。わざわざ書かすな!
スゲーワラタ。[3]ってなんだよ[3]ってw
0541デフォルトの名無しさんNGNG
ていうかね。テンプレート引数使うならわざわざ参照つかわなくても
いいんだが。
int func01(int a[100]){}
template<unsigned N>
int func02(int a[N]){}
main(){
int a[100];
func01(a);
func02<100>(a);
}
0542デフォルトの名無しさんNGNG
>>541
わざわざ<100>って書きたい香具師は少ないと思うが…
0543デフォルトの名無しさんNGNG
>>540 [3] が嫌なら
int (*pa)[100]=(int(*)[100])a;
func01(pa);
func02{pa);
でもいいぞ。
0544デフォルトの名無しさんNGNG
>>543
荒らしは他所でやってよ。
0545デフォルトの名無しさんNGNG
このスレにはtemplate初心者が大勢いるのはよく分かった。
0546デフォルトの名無しさんNGNG
言いたいことはそれだけか?
0547デフォルトの名無しさんNGNG
本当はそれすら言いたくなかったのでは?
そもそも初心者が勘違いしたレス書くの自体迷惑なんだし。
0548デフォルトの名無しさんNGNG
だから関係ない話は他所でやれって。
0549デフォルトの名無しさんNGNG
お願いですからtemplate初心者厨はこの勢いで
templateスレまで荒らさないで下さい。
0550デフォルトの名無しさんNGNG
>>542
大抵の場合、配列サイズ >= 処理サイズであればいいだろ。むしろ関数側で勝手に処理サイズを
決められてしまうことの方が迷惑なことの方が多いだろ?この場合は

int func01(int *a, size_t N ){}
main(){
int a[100];
func01(&a{5], 30);
}

一番シンプルでいいやろ?男は黙ってポインタ使え。処理サイズは自分で責任を持て!
0551デフォルトの名無しさんNGNG
ところでさっきから無意味に中括弧を混ぜてるのって同一人物?
0552デフォルトの名無しさんNGNG
int func01(vector<int>& v){}
main(){
vector v(100);
func01(v);
}

俺はこれが一番シンプルで安全だと信じて疑わないから、
>>521以降の、テクニックを駆使したいろんな渡し方は
覚えようとも思わん。
0553デフォルトの名無しさんNGNG
上のをこぴぺしたんれすが・・
0554デフォルトの名無しさんNGNG
どうでもいいけど
さっきから提示されてるソースコンパイルすると
エラー発生しまくりなんだよなぁ。
漏れのVCが可笑しいのか。
0555デフォルトの名無しさんNGNG
ふーん。じゃそれで、リングバッファ作ってくれよ
0556デフォルトの名無しさんNGNG
無意味な中括弧ってなに?
0557デフォルトの名無しさんNGNG
>>550
> 一番シンプルでいいやろ?男は黙ってポインタ使え。処理サイズは自分で責任を持て!
ならC++使うなよw
一生C爺やってろ


0558デフォルトの名無しさんNGNG
>>557
お前はCスレから出てくるなw
0559デフォルトの名無しさんNGNG
>>558
ポカーン
0560デフォルトの名無しさんNGNG
んなこたぁない。C++はCも包含したマルチパラダイム言語だ。
言ってるだろ。リングバッファこさえてみろって。
逆にハードウェアに密着したことをする必要がなけりゃJavaなりC#なり使え。
0561デフォルトの名無しさんNGNG
一応C++スレなんだからC++をメインにした流れにしようyp
0562デフォルトの名無しさんNGNG
でもlistやbitsetはうれしいが、教科書通りにvector使う椰子いたんだ。
一体なにがうれしくてvectorなんか使うの?
0563デフォルトの名無しさんNGNG
>>562
> でもlistやbitsetはうれしいが、教科書通りにvector使う椰子いたんだ。
> 一体なにがうれしくてvectorなんか使うの?
煽りにマジレスするけど、
そういうときはまず、自分が何がうれしくなくてvector使わないのか書かないと。
0564デフォルトの名無しさんNGNG
>>563
ハァ!!!!????
0565デフォルトの名無しさんNGNG
これが火病ってやつか・・
0566デフォルトの名無しさんNGNG
>>557
エンディアンをアプリベースで自動判定したいんですがどうやったら委員ですか?
0567デフォルトの名無しさんNGNG
int n = 1;
char* pn=&n;
if (1==*pn){ /*リトル*/}
else{/*ビッグ*/}
0568デフォルトの名無しさんNGNG
ポインタを使わずお願いします。
0569デフォルトの名無しさんNGNG
>>568
なんで?
0570352NGNG
352です。

>>352の件、結局g++ではうまく最適化されないことを皆さんのご協力で理解したんで、
別の方法(>>359で書いたような方向)で書き直してみました。

一応貼っておきます。どうですかね....
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1083458467&res=3&fi=no
g++/icc/vc++で動作確認しました。どのコンパイラでもコンパイル時計算になりました。

なお、誤差はひどいわ、すぐオーバーフローするわで実用性はゼロですw
こういう種類のコードは初めて書いたんでアホな事沢山やってるかも。

0571デフォルトの名無しさんNGNG
char* pn=&n; はふつー error か warning にならない?
char *pn = (char *)&n;
0572デフォルトの名無しさんNGNG
>>568
typedef union {
int i;
char c[4];
} U;
U u;
u.i=1;
if(u.c[0]==1) {
//リトル
} else {
//ビッグ
}
0573デフォルトの名無しさんNGNG
>>572
激しくワラタ
0574デフォルトの名無しさんNGNG
>>569
> なんで?
http://www.radiumsoftware.com/0304.html#030408
とか。
0575デフォルトの名無しさんNGNG
charならOKのはずだが。
駄目ならmemcpy等は書けない。
0576デフォルトの名無しさんNGNG
>駄目ならmemcpy等は書けない。
等は、Cネイティブで書けない
0577デフォルトの名無しさんNGNG
>>570
あれあれ?信号処理の世界では、普通2の補数FixedPointっていうのは
絶対値として1以下を主に扱って、
16bitの場合なら
0x7fff = 1-ε
0x0000 = 0
0x8000 = -1
と対応させることなんだけどね。で、大きさが1を越える部分に
3〜8bit程度をextend bitとして持たせるのが一般的。
±5VのA/Dを±1Vに規格化して扱うといえばイメージしてもらえるかな?
0578570NGNG
>>577
> あれあれ?信号処理の世界では、普通2の補数FixedPointっていうのは
あースミマセン、FixedPointって語はあまり考えずに使ってしまいました。
http://lists.boost.org/MailArchives/boost/msg34685.php あたりを見たの
だったかな。間違ってそうですねw

自作のクラスが抱えてる整数に四則演算してどこまで最適化かかるか
見たかっただけ、ということでご勘弁を(苦笑



0579デフォルトの名無しさんNGNG
それと例えば16bitの固定小数点演算をする場合。掛けると必ず32bitになるので
できるだけぎりぎりまで32bit+extend bitで計算しないと精度は無茶苦茶になるよ。
例えば
Σa(i)b(i)
の計算で32bit精度がほしいのはa(i)b(i)の部分|a(i)|<=1,{b(i)}<=1だから
1以下の制度として32bitが必要。そしてextend bitが必要なのはそれらを
加算Σ
どっかに固定小数点クラスは転がってると思うけど、一応DSPの仕様を確認することを勧めるな。
0580デフォルトの名無しさんNGNG
>自作のクラスが抱えてる整数に四則演算してどこまで最適化かかるか
>見たかっただけ、ということでご勘弁を(苦笑
あ、そういうこと?了解。実際に仕事とか学生実験でもいきなりDSPで書くより
C/C++でシミュレートしてからというのが普通のアプローチで、それをしようと
してたのかな?と思ったもので・・
0581デフォルトの名無しさんNGNG
>>572でFA?
0582デフォルトの名無しさんNGNG
実際は[4]いらないけど。
0583デフォルトの名無しさんNGNG
>>574のリンク先
> 同一のメモリ領域に対して2種類の型でアクセスすることを禁じているようだ。

それでは共用体が存在し得なくなるが。
0584デフォルトの名無しさんNGNG
未定義でしょ。禁じているならエラーになる筈。
問題の性質上、厳密に ISO C 規格に従って (未定義なしで)
エンディアンを判別することは難しくない?

> If the value being stored in an object is accessed from
> another object that overlaps in any way the storage of the
> first object, then the overlap shall be exact and the two
> objects shall have qualified or unqualified versions of a
> compatible type; otherwise, the behavior is undefined.

オブジェクトに格納されている値が、任意の方法で第1のオブジェクトの
ストレージにオーバーラップする別のオブジェクトからアクセスされる場合、
オーバーラップは正確であるべきである。また、2つのオブジェクトは、
互換性をもつタイプの資格があるか無条件のバージョンで行う。
そうでない場合は、未定義である。
0585デフォルトの名無しさんNGNG
>>583
共用体経由は問題なしと規格の別のとこに書いてあるよん。

0586デフォルトの名無しさんNGNG
#include <stdio.h>
class ShowAdd
{
private:
int Add (int num1, int num2){
return num1 + num2;}
public:
void Show (int num1, int num2){
printf ("%d + %d == %d\n", num1, num2, Add( num1, num2) );}
};
int main(void)
{
ShowAdd showAdd;
showAdd.Show (5, 10);
//ShowAdd::Show (5, 10);
return 0;
}
このクラスは、関数をまとめる機能中心で、
構造体の機能は持たない(publicメンバー変数が無い)ので、
コメントの部分みたいに宣言をせずにクラスを使いたいのですが、
できるならやり方を教えてください。
0587デフォルトの名無しさんNGNG
>>586
#include <cstdio>
class ShowAdd
{
private:
static int Add (int num1, int num2){
return num1 + num2;}
public:
static void Show (int num1, int num2){
std::printf ("%d + %d == %d\n", num1, num2, Add( num1, num2) );}
};

0588デフォルトの名無しさんNGNG
>>586
メンバにアクセスする必要がないものをクラスのメンバに入れるなよ。
名前空間にでも入れとけ。
0589デフォルトの名無しさんNGNG
>>587
ありがとうございます。できました。

staticを使うということは、クラスを宣言しないで使うやり方は
普通は余りやらないのでしょうか。
また、こういう関数をまとめるだけの時は別のものを使うのでしょうか。
0590デフォルトの名無しさんNGNG
>>588
Add()の事でしょうか。詳しくお願いします。
0591デフォルトの名無しさんNGNG
>>589
> staticを使うということは、クラスを宣言しないで使うやり方は
> 普通は余りやらないのでしょうか。
Javaだと「関数」が作れないからよくやるけどね。三角関数とかさ。

> また、こういう関数をまとめるだけの時は別のものを使うのでしょうか。
588が言ってるのは下記

namespace /* anonymous */
{
int Add (int num1, int num2){
return num1 + num2;}
}
namespace ShowAdd
void Show (int num1, int num2){
std::printf ("%d + %d == %d\n", num1, num2, Add( num1, num2) );}
}
0592586NGNG
>>591
ありがとうございます。思ったようにできました。

後、Addをprivateみたいにしたいのですがどうすればできますか。
0593586NGNG
すいません途中でした。
>>588の文章と関連があると思うのですが。
普通に記述するとエラーになってしまいます。
0594デフォルトの名無しさんNGNG
>>592
> >>591
> ありがとうございます。思ったようにできました。
>
> 後、Addをprivateみたいにしたいのですがどうすればできますか。
伝わらなかったか。

[foo.h]
namespace ShowAdd {
void Show(int num1, int num2);
}

[foo.cpp]
#include <cstdio>
namespace
{
int Add (int num1, int num2){
return num1 + num2;}
}
namespace ShowAdd {
void Show(int num1, int num2) {
std::printf ("%d + %d == %d\n", num1, num2, Add( num1, num2) );}
}
0595デフォルトの名無しさんNGNG
[main.cpp]

#include <foo.h>
int main(void)
{
ShowAdd::Show (5, 10);
return 0;
}

とすればよろし。
0596デフォルトの名無しさんNGNG
俺はねるぽなのであとはガンガレ
0597588NGNG
>>594-595
関数をプロトタイプ宣言をしていないと
使うとエラーになるみたいな感じの意味ですか?
0598588NGNG
>>596
ありがとうございました。おやすみなさい。
0599デフォルトの名無しさんNGNG
なんじゃあこりゃあ?C++のスレなのにCの流儀を強引に押し通そう
としたり、クラスの意味も分からない香具師が出没してる・・・・・
GWもあと2日だぜ。せいぜい暴れてくれ。
0600デフォルトの名無しさんNGNG
【初心者歓迎】C/C++室 Ver.6【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1082182233/

こういうスレもあるので、こっちの方が回答を得られやすいかもね。
0601デフォルトの名無しさんNGNG
ぬるぽ
0602デフォルトの名無しさんNGNG
ガッ
0603デフォルトの名無しさんNGNG
>>599 Cもまともに書けないおまえにゃJavaがお似合い
0604デフォルトの名無しさんNGNG
struct PIXEL16_60K
{
 unsigned int b :5;
 unsigned int g :6;
 unsigned int r :5;
};

これのサイズ 5+6+5 で 16bit だから2バイトだろうと思ってたんですが
sizeof(PIXEL16_60K)で調べてみたら 4 とでました
これって2バイトにする方法はありませんか?
環境は Win2K Visual C++6.0 です。
0605デフォルトの名無しさんNGNG
>>604
#pragma pack(1)
0606デフォルトの名無しさんNGNG
>>604
int じゃなくて short にする
0607デフォルトの名無しさんNGNG
>>606
shortにしてもだめだろ。
その前に仕様的にはintにしとかないと未定義。
0608デフォルトの名無しさんNGNG
>>603
いいから藻前はCスレに(・∀・)カエレ!!
0609デフォルトの名無しさんNGNG
>>608
Cのコードし掛けないお前にC++を語る資格なし。
0610デフォルトの名無しさんNGNG
>>609
そんなDQN、いくらでもいそうだが。
0611デフォルトの名無しさんNGNG
>>609
>Cのコードし掛けないお前に
頭大丈夫か?それとも日本語が不自由な知障か。( ´,_ゝ`)プッ
0612デフォルトの名無しさんNGNG
Cのコードも書けないお前にC++を語る資格なし。ポインタのキャストぐらい覚えとこうな。
0613デフォルトの名無しさんNGNG
>>612
CのキャストなんかC++のキャスト覚えたら危なくて使って
られねーよ。あっそうか、君はC++については全くの素人
だったね。これは失礼。
0614デフォルトの名無しさんNGNG
( ´,_ゝ`)プッ!出来るようになってから言え。逆にポインタを用意してる限り、
型に依存せずにアドレス指定できることは当然だしC++もwarningは出すが禁止してない。
ポインタいじることにびびってるやつはC#がお似合い。
ごめん、触ろうとする前にその知識もなかったんだね。
0615デフォルトの名無しさんNGNG
はいそこの電波飛ばしまくってる二人。(?)
他行ってやりなさい。
0616デフォルトの名無しさんNGNG
>>614
>C++もwarningは出すが禁止してない。
まさに君のような馬鹿のためにこのような措置が取られているのを
知らないのかい?
迷惑だから早く氏んで下さい。
0617604NGNG
pragma pack(1)でも4バイトのままだし、
試しに1ビットのメンバしかない構造体を作っても4バイト。
困った。。。
0618デフォルトの名無しさんNGNG
馬鹿はハードウェアをまったく知らないお前。
逆にこの機能がなくなればハードウェア開発にC++は使えないことも
わからないのか馬鹿が。
0619デフォルトの名無しさんNGNG
>>613 そうだねー
floatからintとか、longからcharにキャストしたら・・・
const_cast、static_castを使おう
でも、結構ウザいからCキャストも結構使うな・・・
printf()も使いまくる。cin/coutは使いにくい

>>617
#pragma pack(push,1)
...
#pragma pack(pop)
0620デフォルトの名無しさんNGNG
struct PIXEL16_60K
{
 unsigned int b1 :5;
 unsigned int g1 :6;
 unsigned int r1 :5;
 unsigned int b2 :5;
 unsigned int g2 :6;
 unsigned int r2 :5;
};
とでもしとけば?あるいは、C++スレなんだから、
class PIXEL16_60K{
unsigned short rgb;
void r( char r ) { ... }
void g( char g ) { ... }
void b( char b ) { ... }
};
とか。
0621デフォルトの名無しさんNGNG
> floatからintとか、longからcharにキャストしたら・・・
> const_cast、static_castを使おう

const_cast?
0622デフォルトの名無しさんNGNG
intが2byteの環境でがんばる
0623デフォルトの名無しさんNGNG
>>618
reinterpret_castがあれば困ることはないんじゃ?
0624デフォルトの名無しさんNGNG
>>620
#define RGB16_R(rgb) (unsigned char)((((rgb) >> 10) & 0x1f) << 3)
#define RGB16_G(rgb) (unsigned char)((((rgb) >> 5) & 0x1f) << 3)
#define RGB16_B(rgb) (unsigned char)(((rgb) & 0x1f) << 3)

unsigned short rgb;
...
unsigned char r = RGB16_R(rgb);
unsigned char g = RGB16_G(rgb);
unsigned char b = RGB16_B(rgb);
でいいんでわ?
オーバーヘッド嫌だぽ


>>621
const int abc = 12345;
int a = const_cast<int>(abc);
0625デフォルトの名無しさんNGNG
>>624
いや、1行目と関係ないじゃないかって思って。
0626デフォルトの名無しさんNGNG
>>624
const intからintには暗黙の変換があるぞ。
0627デフォルトの名無しさんNGNG
>>626 そうですた、例が悪いですな
0628デフォルトの名無しさんNGNG
>>617
なにが困るんだ?
15bitづつパックされてるわけではないだろ?16bitごとじゃないのか?
0629デフォルトの名無しさんNGNG
ところで、ビットフィールドの型はCでもcharとか使えたんだっけ?
0630デフォルトの名無しさんNGNG
ダウンキャストやconstキャスト使う場合は仕方がないが
static_cast<abc>()なんて長ったらしい書式をぐちゃぐちゃ書いてるのか。
0631デフォルトの名無しさんNGNG
>>630
みだりにキャストするもんじゃありません! という戒めのために、
あのように長ったらしい書式なのですよ。と俺は思ってる。
0632マイク ◆yrBrqfF1Ew NGNG
当たり前だろ
ぐちゃぐちゃなんか書いてねーよ。
0633デフォルトの名無しさんNGNG
>>631 キャストしないとエンコードされたデータとかは展開しにくくない?
オレそういうとこは殆どC構文になっちゃうなあ
0634デフォルトの名無しさんNGNG
>>633
また出たよ、脳内男。
0635マイク ◆PbfAC65QoU NGNG
トリップ変更します。
0636634NGNG
俺Cがまともに書けないんだよ。人がCコード書いてるとついつい嫉妬心から切れちゃうんだよ。
許してくれ。ついでにポインタもよくわかってないんで誰か教えてくれ。
0637634NGNG
ポインタがあるとおつむがハレーション起こします
0638デフォルトの名無しさんNGNG
>>636-637
ここはC++スレだからw
Cならこっちでね。
http://pc5.2ch.net/test/read.cgi/tech/1083651280/l50
って、Cも分からないのか...じゃぁこっちへでも。
http://pc5.2ch.net/test/read.cgi/tech/1034505166/l20
0639デフォルトの名無しさんNGNG
君はここからやり直したほうがいいよ。紹介しとこう。
http://www2s.biglobe.ne.jp/~thoikuen/
0640デフォルトの名無しさんNGNG
わざわざ検索したのか。キモイなw
0641デフォルトの名無しさんNGNG
脳内アゲ
0642デフォルトの名無しさんNGNG
とにかくC厨がC++のスレまできて自分の脳内のC知識を
さもありがたそうに披露するのは目障りだ。
それともCスレで間違った発言をして叩かれたくやしさを
晴らしにこのスレに来ているのか。それだったら場違い。
君がPGに向いていないはっきりとした証拠だから早めに
転職して下さい。
0643デフォルトの名無しさんNGNG
とにかくC厨がC++のスレまできて自分の脳内のC知識を
さもありがたそうに披露するのは目障りだ。
それともCスレで間違った発言をして叩かれたくやしさを
晴らしにこのスレに来ているのか。それだったら場違い。
君がPGに向いていないはっきりとした証拠だから早めに
転職して下さい。
0644デフォルトの名無しさんNGNG
2回言わんでも…
0645デフォルトの名無しさんNGNG
>624
オーバーヘッド?最適化のかかり具合にもよるけど、
ほとんどインライン展開されると思うけど。
0646デフォルトの名無しさんNGNG
>>642-643
ワロタ。お前PGってプログラマのことかい。下らん職業にエベレストより高いプライド持ってるんだねぇ。
をー!よちよち。
0647デフォルトの名無しさんNGNG
>>646
ちょっと、低脳さんはもういいでつから。
0648デフォルトの名無しさんNGNG
向き不向きとプライドの高低は別の話だよな。

つーかマ板でやれよ。
0649デフォルトの名無しさんNGNG
>>643
喪前はここの社員だろ? http://www.pg.com
0650デフォルトの名無しさんNGNG
>>646
不幸な奴だな。自分の職業にプライドも持てんとは・・・・・
どうせお前は「俺は本当ならばもっとエリートコースを歩いて
いるはずだ。こんなくだらん仕事をしているはずがない」とでも
勘違いしているだけだろう。自分の能力のなさを人のせいにして
一生そうやって社会を恨み続けて生きるんだな。
0651デフォルトの名無しさんNGNG
>>650
残念だったな。プログラマだけがこのスレに来てると思ってる時点でバカなんだよ。
プログラマ -> 他に何もできない技術屋(エンジニアといえる奴らかどうかわからんが)だろ?
プログラマなんて呼ばれることを恥と思えよ。
0652デフォルトの名無しさんNGNG
反応したくてしたくてしょうがないのは分かったから
マ板でやれよ。
0653デフォルトの名無しさんNGNG
広義のプログラマ(プログラミングする人)でない人が何の目的で
C++スレなんか見るんだ?
0654デフォルトの名無しさんNGNG
GWだからな!
0655デフォルトの名無しさんNGNG
>>651
アホか。俺だってSEなんだが。まあいいや。お互いの顔も知らず
何をやっているかも全く知らずにこうやって言葉遊びを繰り返して
いるだけじゃ埒があかないね。いつまでもそうやってなさい。

>>652
正直すまんかった。刺々しくて香ばしい香具師がいるもんだから
つい相手をしたくなっちまった。普段ならバカバカしくて「また痛い
香具師がいるなあ」ぐらいで反論すらしないが。GWだし(w
0656なんちゃってSENGNG
ですか。
0657デフォルトの名無しさんNGNG
っていうか、そのプログラムすらできないSEに設計なんかして欲しくなおのだが。
0658デフォルトの名無しさんNGNG
×なおのだが ○ないのだが
0659デフォルトの名無しさんNGNG
PGの次はSEか。便利だよなシステムって言葉。
0660デフォルトの名無しさんNGNG
>>656-659
相当頭カッカしてるな(w
typoするなんて(w
0661デフォルトの名無しさんNGNG
「(w」←注目


頭カッカするも何も、俺>>646からしか読んでないし。
で、お前がアホっぽかったからいじめただけ。
0662デフォルトの名無しさんNGNG
>>661
俺もお前がアホっぽかったからいじめただけ。
0663デフォルトの名無しさんNGNG
追い詰められるとレスが鸚鵡返しになってしまう。
0664デフォルトの名無しさんNGNG
>>663
( ‘∀‘)オマエガナー
0665デフォルトの名無しさんNGNG
馬鹿とアホの共演は終わりましたか?
↓ではC++の話に戻ってください。
0666デフォルトの名無しさんNGNG
│     _、_
│  ヽ( ,_ノ`)ノ 残念 それは私のおいなりさんだ
│ へノ   /
└→ ω ノ
      >  
0667デフォルトの名無しさんNGNG
ワロタ
0668デフォルトの名無しさんNGNG
PGがアフォだとエライ目にあうよ、マジで。
つかPGの能力を判断してこき使うSEの能力こそが大事なわけだが。
0669デフォルトの名無しさんNGNG
>604
ここらでちょっとまとめてみる。

多分、unsigned short にしないと 2 バイトにならないと思うが unsigned short の
bit-field が使えるかは規格上保証されない。
実装で規定されていればその実装では使える。
(14882:1998-9.6/1, 9899:1999-6.7.2.1/4)
Cygwin 上の gcc では unsigned short で 2 バイトになった。

ただ漏れもついこの間まで知らなかったんだが、bit-field のメモリ上への割り当ては
非常に実装依存な領域で、上位から割り当てられるか下位から割り当てられるかも
決まっていないし、割り当て単位をまたいで確保されるかどうかも決まってない。
(14882:1998-9.6/1, 9899:1999-6.7.2.1/10)
実際、gcc には割り当てを Visual C++ 互換にするオプションがあるようだ(-mms-bitfields)。

ということで、メモリ上の割り当てを気にするならば >624, >620 後半のように自前で
処理する方がいいんじゃないかと思う。
0670デフォルトの名無しさんNGNG
まぁまぁ。荒れてばっかりいないでこれでも見て楽しくやろうyo
http://www.arabtimes.com/mixed3/2.jpg
http://www.arabtimes.com/mixed3/1.jpg
http://www.arabtimes.com/mixed3/3.jpg
http://www.arabtimes.com/mixed3/4.jpg
http://www.arabtimes.com/mixed3/5.jpg
http://www.arabtimes.com/mixed3/6.jpg
http://www.arabtimes.com/mixed3/7.jpg
http://www.arabtimes.com/mixed3/8.jpg
http://www.arabtimes.com/mixed3/9.jpg
http://www.arabtimes.com/mixed3/10.jpg
0671デフォルトの名無しさんNGNG
>670
グロ画像

>666
ハゲワラ

0672デフォルトの名無しさんNGNG
>>670
楽しそうだな。
0673デフォルトの名無しさんNGNG
>>670
思わず射精してしまった。
0674デフォルトの名無しさんNGNG
>>669
まぁここはC++のスレだからな。C++だと整数系の型だとOKのようだ。規格は見てない
けどVCのヘルプにはそー書いてあった。VCではMS独自仕様でLSBから詰めるそうだ。
0675デフォルトの名無しさんNGNG
>>674
あと、サイズ0(:0)だと次のアライメントまで飛ばすそうだ。#pragma packで指定された
やつな。
0676デフォルトの名無しさんNGNG
blitzで逆行列はどうやって計算するのですか?
0677デフォルトの名無しさんNGNG
>>670
ハマス指導者ヤシン師の痛い写真だな。
車内でRPGでもぶち込まれたか。
0678デフォルトの名無しさんNGNG
いま、トランプゲームを作っています。
idはシャッフルのされ方の確認用に。
struct Card{
int val; int suit;
// int id;
} card[54];
でalgorithmのなかのramdom_shuffle()を使うと、
Card構造体のval suit idについてそれぞれごちゃ混ぜにされるようです。
本当は、val-suit-idをセットにして混ぜたいのですが、どうしたらいいですか?
0679デフォルトの名無しさんNGNG
>>678
書いたコード貼れ
0680676NGNG
テンプレートスレに行きますでの放置してください。
0681デフォルトの名無しさんNGNG
>>678だが、
書いたコードで ジョーカーの初期化を忘れていたことに加え、
random_shuffleの使い方を間違っていたようです。

random_shuffle( card , card+54);
みたいにしたら上手くいきました。

random_shuffle( &card[0].num , 略);
見たいなのがまぎれてました。

# かちゅ〜しゃ よりブラウザから書き込んだほうが
# 規制で書けない率が低い木がする
0682デフォルトの名無しさんNGNG
意味不明萎え
0683デフォルトの名無しさんNGNG
とんだ勘違いでスマソ。

int hoge1[500];
int hoge2[500];
int hoge3[500];

random_shuffle( hoge1 , hoge3 );

ってしたらどうなるんだろう?hoge1の先頭からhoge3の先頭の位置まで
メモリ鍋状態ですか?
0684デフォルトの名無しさんNGNG
>>683
構造体ではなくローカル変数とかだと
hoge1とhoge2, hoge3のメモリ配置がどんな関係かはまったく予断してはいけないが。
構造体の中ならhoge1の先頭からhoge2の最後までが混ざるだろうな。
メモリ鍋って言葉は意味不明だが
0685デフォルトの名無しさんNGNG
今2chで話題のA何とかの中の人のMFC講座!
みんないっちゃだめだよ〜wwww
http://www.geocities.jp/aransk88/contents4.html
0686デフォルトの名無しさんNGNG
>>685
いってほしくないならURL晒すんでねえ
0687デフォルトの名無しさんNGNG
>>685
それなりにワラタ
0688デフォルトの名無しさんNGNG
C++にJavaのプロパティクラスに代わるものってありますか?
0689デフォルトの名無しさんNGNG
>>688
ない
0690デフォルトの名無しさんNGNG
>>689
どっかに落ちていない?ですか?
0691デフォルトの名無しさんNGNG
落し物は2chではなく警察に届けてください。
0692デフォルトの名無しさんNGNG
しかし昨晩は粘着C厨に占拠されて困ったな。
余程Cスレで相手にされなくなっていたのだろう。
このスレで言いたいだけ言って消えたな。
どこで覚えたのかネット上だけで通用する喧嘩論法で
人を追い込んだ気になって満を持して悦に入っていた。
リアルじゃ友達も彼女もそりゃいないだろうな。あれだけ
人に嫌われる内容の言葉を垂れ流しているんだもの。
0693デフォルトの名無しさんNGNG
>>690
どうしてもというなら、とりあえず
ttp://d.hatena.ne.jp/shinichiro_h/20040503#p6
あたりかな
0694デフォルトの名無しさんNGNG
>>692
さんざんやりこまれて、消えたころに悪態つくしか脳の無い間抜けかい?君
0695デフォルトの名無しさんNGNG
(ノ∀`)アイタタタ
0696デフォルトの名無しさんNGNG
C++builderでボタンクリックで実行を
キーボードのF1キーでも実行できるようにするのと
while文を実行中にF2キーで抜けたいけど
どうしたらいいですか?
調べてもわからないのでどなたか教えてくれませんか
0697デフォルトの名無しさんNGNG
   692↓      , -ー,
           /   |  
   /⌒ヽ  /    |  
  / =゚ω゚)/.       | 
  |  つ'@      /⌒ヽ 
  〜_`)`).     /  =゚ω゚) ←694
 ̄ ̄ ̄しU      |  U /
     |       ( ヽノ
〜〜〜〜〜〜〜〜〜〜〜〜
0698デフォルトの名無しさんNGNG
>>696
まず質問するのに適切なスレを見つけることから。
0699デフォルトの名無しさんNGNG
>>696
さっきんとこでどなたか教えてくれてましたぜ。
0700デフォルトの名無しさんNGNG
>>692
精神科通いの前科歴のある人間は相手にしないように。
>>694
目障りだから他スレ行ってやってくれ。これ以上荒らすとアク禁要望出すよ。
0701デフォルトの名無しさんNGNG
>>694
> 脳の無い
0702デフォルトの名無しさんNGNG
>>701
>>694は知障かよ。さすがアニキ
0703デフォルトの名無しさんNGNG
>>698
そうですか...bcb対応スレ探してきます
>>699
教えてくれてありがとう
0704デフォルトの名無しさんNGNG
社内情報システムを開発しています。

ソースを変更されないようにするには(もしくは変更されたら動かなくするには)?
どのような方法があるでしょうか?

いまの管理はずさんでソースは誰でも改修できるように公開を求められます。
運用上問題があったら運用担当者が見ようみまねでソースを改修しコンパイルします。
手に負えない改修は開発者に依頼されます。(すでに弄くられているソース)
どの時点でも責任は開発者にあります。
CVSからエクスポートして公開しているソースに対して勝手に改修を掛けられます。
ルールもへったくれもありません。
0705俺用しおりNGNG
ヘ_ヘ ____________________________
ミ・・ ミ
( ° )〜 ここまで読んだ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0706デフォルトの名無しさんNGNG
stringクラスのメンバ関数begin()なんですが、
begin()をオーバーロードしているメンバ関数で
引数が同じvoidで、リターン値がconst_iteratorというのが別にありますけど
これって仕様的にマズくないですか?
パラメータの仕様が全く同じ関数はオーバーロードできないと思うんですが
0707デフォルトの名無しさんNGNG
>>707
同じじゃないじゃん
0708707NGNG
>>706へのレスですた。
0709デフォルトの名無しさんNGNG
>>707
レスさんくす

今ぐぐって自己解決しました
暗黙的な第1引数thisポインタの型が違うわけか・・なるほど
0710デフォルトの名無しさんNGNG
>>704
板違い
0711初心者NGNG
Visual C++ を使ってデータをファイルから読み込んグラフを表示する
プログラムを作成してますが、データの読み込みはできましたが
グラフの表示のしかたがわかりません。

0712デフォルトの名無しさんNGNG
>>711
君が無能だという事はよくわかった。
0713デフォルトの名無しさんNGNG
cctypeの各判定関数のリターン値の型ってintですか?
0714デフォルトの名無しさんNGNG
boolです。
0715Windowsプログラム初心者NGNG
VisualC6でプログラミングしています。
一時ファイルを環境変数TMPで指定されている場所に
作成したいのですが、環境変数の値をプログラム内で
使用する方法を教えてもらえないでしょうか?

あと、
アップロードボタンを押すたびに、<wininet.h>を
使用してFTPでファイルアップロードをする
プログラムを作っているのですが、
アップロードボタン3回までは正常に
動作するのですが、4回目から接続に
失敗してしまいます。
このような状況をご存知の方おられましたら、
解決法を教えてもらえないでしょうか?
0716デフォルトの名無しさんNGNG
>>715
スレ違い
VCスレかWinAPIスレに移動。場所は>>7
0717Windowsプログラム初心者NGNG
>>716
誘導thx
そちらで聞いてみます
0718デフォルトの名無しさんNGNG
C→C++→STL
とやってきて次何すれば良いか分からない・・
0719デフォルトの名無しさんNGNG
>>718
STLはC++の一部でしかないのになぜ別項目
というかそもそも言語は道具であって
何かを作るためにあるわけだが
0720デフォルトの名無しさんNGNG
>>718
テンプレートでMLの処理系作成

0721デフォルトの名無しさんNGNG
次はD言語
0722デフォルトの名無しさんNGNG
Dはまだ仕様も策定中だし実装もまだだろ。
GCCにもVSにもないしなぁ。
0723デフォルトの名無しさんNGNG
>>722
てか、DってC++'程度なんじゃねーの?
0724デフォルトの名無しさんNGNG
>実装もまだだろ。
既にコンパイラができてること知らないのか?
仕様がきっちり決まった頃にはいろいろあらが見えてきて次の言語の模索が始まるのがこれまでの繰り返し。
0725デフォルトの名無しさんNGNG
WINAPIでもやりたいけど
もうすぐWin→Ronghornだろ
互換性あると思うけどなんとなく・・・な
GUIも買わないとダメだ、
それ以前に俺のOSだと.netインスコできないか(わらい
0726デフォルトの名無しさんNGNG
C#-> 見るからにJava
D -> C/C++と一見差が無い asmも埋め込める。ポインタもそのまま残ってる。
  多重継承が消えてすっきり
Dはいいことずくめ。
0727デフォルトの名無しさんNGNG
C++のフロントエンドとして使えるから、すぐに実行速度の比較もできる。
0728デフォルトの名無しさんNGNG
誰かC++とD言語のベンチマーク取って見れ。
そんなに大差なかろう。D言語が流行ってくるとすれば、
C→C++に進もうとして挫折した香具師用だな。
0729デフォルトの名無しさんNGNG
↑アフォ丸出し。
>C→C++に進もうとして挫折した香具師用だな。
自分のこと宣伝してうれしいか?
0730デフォルトの名無しさんNGNG
>>729
うれしいってもんじゃないねえ。D言語マンセー!!
0731デフォルトの名無しさんNGNG
>>726>>729>>730
D言語厨は自分のレスから外に出るな。C++スレを汚染しないでくれ。
この奇人変人が!!
0732デフォルトの名無しさんNGNG
>自分のレスから外に出るな
0733デフォルトの名無しさんNGNG
>>732
コンパイラみたいな奴だな。シンタックスエラーってか。
0734デフォルトの名無しさんNGNG
C系のプログラマがわざわざD覚えるメリットはあるのか?
これからって奴にはいいのかもしれんが
0735デフォルトの名無しさんNGNG
>>734
お前のおつむは鎖国状態か?スペクトルの範囲が極些な使えない奴だな。
爺はプログラミングなんかせずに養老院でもいって日がな一日刻数えてろ!
0736デフォルトの名無しさんNGNG
>>734
LongHornが出る頃には、.Net対応でないと少なくともWindowsでは
主導権が握れなくなっているだろうな。D言語とかD言語とかD言語とか。
C++か?C++は特別なんだよ。ネイティブでも可。
0737デフォルトの名無しさんNGNG
win の上でGUI書いてるだけの糞プログラマがほざいてるな。
その割りにC++が主導権とってると思ってるお前はホント痛いな。
0738デフォルトの名無しさんNGNG
>>737
まだベータ版の域も脱し切れてないD厨よりは100倍増しさ。
0739デフォルトの名無しさんNGNG
けんかすんな
0740デフォルトの名無しさんNGNG
>>736
managed c++いじってるだけならC#使うほうがよっぽど生産効率高いし、実行速度も差が無い。
少なくともWindowsのアプリ開発ではC++からC#にほぼ完全に移行した。C++の優位性を主張する上で
Windows開発持ち出しちゃ逆効果でしょ。
0741デフォルトの名無しさんNGNG
>>740
だな
0742デフォルトの名無しさんNGNG
VSをデフォルトインストールしようとすると既にC++はインストールされないしな。
これって、敢えて使ってくれるなってことだよな。J#よりも使ってくれるなという意思表示。
0743デフォルトの名無しさんNGNG
>>740
そこで、C++/CLI ですよ。
http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1557.pdf

Sutter 先生乙
0744デフォルトの名無しさんNGNG
Cしゃーぷ厨は満足して巣に帰ったか?
0745デフォルトの名無しさんNGNG
>少なくともWindowsのアプリ開発ではC++からC#にほぼ完全に移行した。

これはいったいどこの話なんだろう・・
いくつか、すでにC#で開発してるという話を耳にしたことはあるが、
完全というには程遠い状況のようなんだが・・
まだ、(.NET)じゃないVBの方が需要ありそうだ。
0746デフォルトの名無しさんNGNG
.Netをlinuxで動かすプロジェクトがβリリースした。
6月30日に正式リリース。
0747デフォルトの名無しさんNGNG
>>745
そうだな。少なくともlonghornが出るまでは.Netの優位は感じられない。
標準で搭載されている訳じゃないし。
longhornになればGUI周りが一変されるから.Net移行してもいいとは思うが。
0748デフォルトの名無しさんNGNG
>>745
それは君が現状知らないだけでしょ?学生さん?もちろんアプリの話であって、ハードウェアのドライバはC/C++だよ。
うーん。でも、ドライバはほぼCに限定してもいいかもね。
0749デフォルトの名無しさんNGNG
ここはWindowsのパシリプログラマのスクツでつか?
0750デフォルトの名無しさんNGNG
Winアプリ・・・Csharp
それ以外のソフトウェア・・・C/C++
この言語3つで将来食っていけますか?
0751デフォルトの名無しさんNGNG
環境: Win+もうひとつ
言語: C/C++/C#(.NET)

マトモにできているなら重宝するよ
0752デフォルトの名無しさんNGNG
ドライバ書いたり、組み込み系やるなら何かひとつのCPUを勉強してアセンブラ書けないとだめ。
そうすりゃCでもC++でも見違えるぐらい効率的なコードが書けるようになる。
0753デフォルトの名無しさんNGNG
というか、一言にアプリといってもフリー、シェアなどの個人ユーザーレベルから
業務で使うリッチクライアントやサーバー関係など多種多様にある。
それを一つの言語だけということはあり得ない。

>>750
言語がどうこうよりもプログラマーとしてのレベルが大事。
仕事の場合、どんな言語、環境が使われるかわからない。

C/C++でも環境依存なと事かあるし
APIなんてAPIプログラムというのが必要になって来るし。
変に固執するよりもしっかりと地力をつけるのが大事。
0754デフォルトの名無しさんNGNG
>>752
今の時代は効率よりも保守性。
それぐらいは常識ですが?
まあ、高速性などが必要な場合は除く。
0755デフォルトの名無しさんNGNG
>>752
8086マシン勉強して
アセンブリは一応読めるレベルだけど
書く気は起きないっすよ・・・
0756デフォルトの名無しさんNGNG
C/C++できtりゃC#習得は簡単だが、
一行プログラムでもっと重宝できるのがawkあとperl。アプリ書くわけじゃないけど
C系だと面倒なファイルの読み書きや正規表現を手っ取り早くこなして
Post Programming作業が楽になる。
0757デフォルトの名無しさんNGNG
>>752
じゃ!君にはC#がぴったりだな。このスレから出て行ってくれ。
0758デフォルトの名無しさんNGNG
間違えた >>752じゃなくて
>>754
じゃ!君にはC#がぴったりだな。このスレから出て行ってくれ。
0759デフォルトの名無しさんNGNG
>>しっかりと地力をつけるのが大事。
その地力とは何かを聞いてるんだよッ。
0760デフォルトの名無しさんNGNG
プログラムの世界ではこれをやっとけば大丈夫っていうのがない。
様々な言語が生まれ消えていくから。
そしてそれを採用する企業がいる限り・・・

まあ、個人が趣味でやる分には何をやろうとかまわないけど。
Delphiも.netに移行しちゃったし。
速度を必要としなければVB,C#でもかまわない。

俺はGUI部をdelphiでつくって基幹部をC++でDLLとして作ってる。
0761デフォルトの名無しさんNGNG
>>759
学生の俺がレスしてやろう
多分、逆汗してネイティブコードを見ることだろう
0762デフォルトの名無しさんNGNG
>>759
プログラムに対する考え方とかそういうの。
結局プログラムはロジックの固まりだから論理思考とかね。
ようするに言語に依存しなく、かつ言語の基礎になるもの。

いろんな言語にふれるのもいい。
あとはどれかをとことんやり込む。
0763デフォルトの名無しさんNGNG
>結局プログラムはロジックの固まりだから論理思考とかね。
じゃ詰め将棋でもいいっすか?
それか、徹底的に論理思考を鍛えてる
数学者は最高のプログラマということなんだな?
0764デフォルトの名無しさんNGNG
>逆汗してネイティブコードを見ることだろう
それは相当アセンブラで書き込んでないと難しいぞ。
どんな言語でも人のコード読んで理解するには相当書き込んでないとだめ。
特にアセンブラはコードのつながりとか構造が理解しづらいよ。
0765デフォルトの名無しさんNGNG
>>763
> 数学者は最高のプログラマということなんだな?
別に論理思考だけじゃないから。
他にもいろんなものが必要になってくる。
それぐらいもわからないお前は
最低のプログラマーであることは間違いないがな。

CPUは計算機ですよ?
0766デフォルトの名無しさんNGNG
だな?
から。
くる。
がな。
ですよ?
0767デフォルトの名無しさんNGNG
>それぐらいもわからないお前は
わからなから聞いてるんだよッ。

>最低のプログラマーであることは間違いないがな。
おちょくってたら思惑通り切れてやがんの。ギャハハハ。ばーか

>CPUは計算機ですよ?
それがどないした?
0768766NGNG
一番上は引用か。
0769デフォルトの名無しさんNGNG
しかし、今の言語の流れって小学校の学習指導要綱みたいだな。
昔はCとかだったのが今はゆとり教育でJAVAとC#とか。

ここで名言。
「楽をするのはかまわない。ただ、なぜ楽ができるかを知っていなければならない」
0770デフォルトの名無しさんNGNG
名言だって・・・(笑)
0771デフォルトの名無しさんNGNG
「楽をするのはかまわない。ただ、なぜ楽をしないといけないかを知っていなければならない」

自分のせりフを名言とかいうな。恥ずかしい。普通一句とかいいたいが句になってないしな。
0772デフォルトの名無しさんNGNG
>769 デフォルトの名無しさん sage New! 04/05/07 14:14
0773769NGNG
ごめんゆとり教育受けてきたんで言葉知らないんだよ。
0774デフォルトの名無しさんNGNG
>>767
> >それぐらいもわからないお前は
> わからなから聞いてるんだよッ。
わからないから考えるんだよ。
考えることをやめたら人間終わり。
まあ、お前はすでに終わってるから関係ないか。

> >最低のプログラマーであることは間違いないがな。
> おちょくってたら思惑通り切れてやがんの。ギャハハハ。ばーか
普通の成り行きだろ。お前が「最高」といったから「最低」で返した。
思惑通りの反応でやんの。ギャハハハ。ばーか

> >CPUは計算機ですよ?
> それがどないした?
ない頭をふりしぼって意味考えろ。
って考える力がないんだったね、ごめん。
0775デフォルトの名無しさんNGNG
>>774
また例のC厨か?
さっさとCスレに帰れ。
0776デフォルトの名無しさんNGNG
>>771
いや、誰が言ったか忘れたが引用。
個人的に衝撃受けたもので。
0777デフォルトの名無しさんNGNG
糞スレで777ゲット
0778デフォルトの名無しさんNGNG
どこぞのPG募集広告見ても、C・C++(java)は必須つうか前提のように書かれているから
事実上、ゆとり教育は現場で通用しないというか、現場の入り口にさえ入れないという現実がある
0779デフォルトの名無しさんNGNG
>>778
今の教育もそうだよな。小学校でなにをやろうと大学が変わってないから
結局苦労する・・・
0780デフォルトの名無しさんNGNG
フォルダに保存したexeファイルから実行するとすぐに画面が消えてしまうんだけど、どうすればいいですか?
0781デフォルトの名無しさんNGNG
>>780
system("PAUSE");
これでも使え
0782デフォルトの名無しさんNGNG
>>781
だからC厨は(ry
0783デフォルトの名無しさんNGNG
>>780
ウイスルかDOSプログラム。
DOSプログラムならDOSかあ起動すればいいし、ウイルスならなもうだめだな。
0784デフォルトの名無しさんNGNG
バカにされてるのもわからずマジレス返してる時点で恥の上塗りだな。こいつ女じゃねぇか?
0785デフォルトの名無しさんNGNG
>>774
茶化されてることに気づかず。まじめーにレス返してて、気づいた時点での激高振り。
まさに、厨中の厨。先のC厨はまじめなレスなんかはじめから返してなかったんじゃねぇの?
0786774NGNG
いや、暇だから・・・
反論に反論で返したかったのよ。
ちなみに他にもいろいろ書いてるよ。
ID制じゃないからわからないだろうけど。
0787C厨晒しage!NGNG
C厨晒しage!
0788デフォルトの名無しさんNGNG
どうして君たちってこんなに頭が悪いんだろうね。
食生活のせいかなぁ・・・。
0789774NGNG
>>788
教育のせい
0790デフォルトの名無しさんNGNG
自己責任

なんでも親のせい、大人のせい、教育のせい、社会のせいに
してはいけない
0791デフォルトの名無しさんNGNG
>>790
その自己は誰が育てると思う?
0792デフォルトの名無しさんNGNG
人生の敗北者でしかないプログラマが人に敗北者への道を説いてどうすんの?
0793デフォルトの名無しさんNGNG
>>791
自然淘汰圧と個体の環境適応戦略と順応能力
0794デフォルトの名無しさんNGNG
黄金虫が湧いてるだけなのか?
それともGW終わって嫌々仕事してるPGの悲鳴?
0795デフォルトの名無しさんNGNG
プログラミング初心者です。
じゃんけんのフローチャートってどうなりますか?
0796デフォルトの名無しさんNGNG
D言語嫌われてるね。
C#やJava厨ならともかく
C++厨がD言語嫌う理由は何だ?
0797デフォルトの名無しさんNGNG
>>796
> C++厨がD言語嫌う理由は何だ?
1. ここが C++ 相談室スレだから。
2. さすがに、まだ仕事には使えない状況なのだけど、その現状を無視して D, D やかましい
 輩が数人いるから。
0798デフォルトの名無しさんNGNG
>>796
そりゃまぁ、メーカーがね(ry
0799デフォルトの名無しさんNGNG
>>795
[かけ声にあわせて、グー、チョキ、パーのいずれかを出す]
↓               ↑
<判定をする>→あいこなら↑
どちらかが勝てば
↓
(終了)
0800デフォルトの名無しさんNGNG
3.ようやく、死に物狂いでC++覚えたのに、また新しい言語が出てきてしかも、
C++でできることはすべてできてしかも生産性が高そうなことに嫉妬して。

ま、C厨と同じく向上心のかけらも無い奴は死になさいって琴田
0801デフォルトの名無しさんNGNG
>>800
D厨は氏ね。
0802デフォルトの名無しさんNGNG
>>799
二人ならね。
3人以上の場合はまずあいこか調べそのあと
架空の相手(誰も出していない手)と対戦させ
そいつに負ければ勝ち、勝てば負けとなる。
0803デフォルトの名無しさんNGNG
>796
Dが嫌われてるというより、D厨がC++スレ荒らしにきてるだけだろ
0804デフォルトの名無しさんNGNG
>>800
あのさあ、D覚える方が、C++覚えるよりずっと簡単なんだけど。
嫉妬なんかしてないんだけど(仕事でC#使ってる)。

向上心というより、どう考えても幼稚化なんだよなあ、Dは。
未来のない会社の株は誰も買わないでしょ。それと同じなんだよ。
0805デフォルトの名無しさんNGNG
Dってもともとお手軽なC++って感じで設計されたんじゃないの?
触ってる奴らでまともにC++の代替って考えてる奴なんかいるか?
0806デフォルトの名無しさんNGNG
D使ってないから知らないがC,C++,JAVAのいいとこ取りで設計されてるんじゃないの?
0807デフォルトの名無しさんNGNG
>>805
俺も全く同感なんだが、どうもD厨の中には甚だしく勘違いをして
いる香具師がいるらしく、「新しい物ほど偉い」と思っているらしい。

俺はそういう香具師に「C++に挫折したC厨が次に飛びつくのはDだ」
と揶揄したつもりだったんだが。ほとんどの人はDを遊び道具としか
考えてないはずなのに、>>800みたいなD狂信者がいて、しかもC++
スレを荒らしに来るので困っているのだ。
0808デフォルトの名無しさんNGNG
なんかJAVAの時もこういう議論あったよな。
0809デフォルトの名無しさんNGNG
>>806
本当に「いいとこ取り」なら互換性を捨てたりしないだろう。Dは一番
美味しい所を捨てているように思えるが。
0810デフォルトの名無しさんNGNG
ttp://www.sun-inet.or.jp/~yaneurao/dlang/Chapter-02.html
0811デフォルトの名無しさんNGNG
ttp://www.kmonos.net/alang/d/comparison.html
0812デフォルトの名無しさんNGNG
>>804
あのさあ、ずっと簡単だからいいんだよ。
C#使っててなんでそれ使ってるかわかってないのか?
しかも、幼稚とは思わず使わされて日銭稼いでいる下働きプログラマなんだろが?

>未来のない会社の株は誰も買わないでしょ。それと同じなんだよ。
C++に未来があると思ってる時点でおめでたいことこの上ないな。
Windows以外では別に終わるわけじゃないが、汚前が日々糞coderやってる
WinではC++は終わりなんだよ。
0813デフォルトの名無しさんNGNG
結局言語なんて適材適所。
完璧な言語なんてない。
0814デフォルトの名無しさんNGNG
>結局言語なんて適材適所。完璧な言語なんてない。
激しく同意。所詮ハードウェアの手順なんだからな。
0815デフォルトの名無しさんNGNG
難しいことが美徳と思ってる奴はその都度ロジック回路組め。
0816デフォルトの名無しさんNGNG
>本当に「いいとこ取り」なら互換性を捨てたりしないだろう。Dは一番美味しい所を捨てているように思えるが。
一番おいしい部分のどこを捨ててしまったのか教えてください。
0817デフォルトの名無しさんNGNG
>>816
まあまあ。
味覚なんて人それぞれ違うんだから。
0818デフォルトの名無しさんNGNG
Cだと一筆画きできるがDを一筆書きすると0なのかOなのかわかりにくくなるところ。
0819デフォルトの名無しさんNGNG
>>816
俺も思った。>>811の比較見る限り。
0820デフォルトの名無しさんNGNG
>>816
>>809 は多重継承が何がなんでも必要なんだよ。

言語仕様知らずにこっぱずかしコメント書き込んでるわけじゃないだろうし。
0821809NGNG
待て!今はじめて仕様見て必死になってあら捜ししてるところだ。
よーし。ガベコレけなしたろー。
0822デフォルトの名無しさんNGNG
どーでもいいけど、ここでやらないでくれよ。
0823809NGNG
#ifdef が書けないのが幼稚だ。
0824デフォルトの名無しさんNGNG
>>811
腐るほど読んだよそのページは。
>>812
でもD言語も始まるわけじゃないね。
>>813
まあそうだな。
0825デフォルトの名無しさんNGNG
所詮C++はつぎはぎのキタネー言語だから、
そこにしがみついてる奴の擁護も当然メチャクチャになる。
0826デフォルトの名無しさんNGNG
>>825
C++の最大の失敗はCを引き継いだところ。いいところ悪いところ両方。
0827デフォルトの名無しさんNGNG
一番おいしいとこ=CやC++との互換性って意味だろ。
0828デフォルトの名無しさんNGNG
確かに、C++は、つぎはぎだらけのキタネー言語だけど、
D言語だって良いとこどりのつもりでごちゃごちゃいろんな機能を
取り入れようとしてつぎはぎだらけになってるけどな。w
0829デフォルトの名無しさんNGNG
お前ら、比較叩き煽り何でもありなスレでも立ててそっちでやれよ
ここで下らん叩き合いをするな
0830デフォルトの名無しさんNGNG
>>826
言語として失敗だろうがなんだろうが、これだけたくさん使われている以上、
まだC++の時代は終わらん。
俺はVC++よりマトモなコンパイラが出てこない限り、C++をやめる気はない。
0831デフォルトの名無しさんNGNG
所詮、C++にもC#にもDにもJavaにもSmalltalkやSchemeのような
スマートさがない。
どれも50歩百歩。
それに、実用性は言語の良し悪しじゃ決まらん。
どれだけCに似てるかと、開発環境の性能で実用性が決まる。
よってC++かC#が一番実用的だ。w
0832デフォルトの名無しさんNGNG
C#は一番おいしいとこ捨ててWinのデファクト開発言語となりまつた。
0833デフォルトの名無しさんNGNG
おまえらGWは終わりましたよ。
0834デフォルトの名無しさんNGNG
>>832
デファクト開発言語の割りには、有名なあのフリーソフトも
あのシェアウェアも全部C#じゃないね。w
0835デフォルトの名無しさんNGNG
Win上の開発では未だに圧倒的にC++が優勢だな。
0836デフォルトの名無しさんNGNG
longhornが来たらVB,C#ともに大幅な修正が加わる予感。
0837デフォルトの名無しさんNGNG
>>834
学生ちゃん。
0838デフォルトの名無しさんNGNG
PS、XBOX、DirectXといったゲームプログラムは
C++しか選択肢が無いしな
Win以外の分野ではC#なぞかけらも見ない
0839デフォルトの名無しさんNGNG
>>836
あれだけ環境依存だと
言語仕様そのものに大幅な修正が要るな
今時そんな薄氷のような言語イラネ
0840デフォルトの名無しさんNGNG
ここまで連鎖あぼ〜んで(ry
0841デフォルトの名無しさんNGNG
>DirectXといったゲームプログラムは
>C++しか選択肢が無いし。

さらしあげ。首つって市ね。あほ!
0842デフォルトの名無しさんNGNG
windowsプログラマ戦々恐々だね。あさましい。
0843デフォルトの名無しさんNGNG
新しく普及しそうな言語がでたらそれをえるように対応するだけなのに
C++厨はなんでこんなに他をけなしてしがみついてるの?C厨以下だな。
0844デフォルトの名無しさんNGNG
MSの手のひらの上で仕事させてもらってうれしいか?
0845デフォルトの名無しさんNGNG
>>838
XBoxとDirectXはC#だよ
PSはアセンブラ
0846デフォルトの名無しさんNGNG
>>843
> 新しく普及しそうな言語がでたらそれをえるように対応するだけなのに
いや、大半の人間は「普及したら」で間に合う。とりあえず Visual D 出るまで
待ちでしょ。
0847デフォルトの名無しさんNGNG
>>845
PSはアセも使うがC/C++も使えるぞ。
コードウォーリアーとかあるし。
ミドルウェアも多いし。
0848デフォルトの名無しさんNGNG
>>846
俺もそう思う。VDとか出たら考える。
JAVAだって結局Serverサイドかゲームぐらいしか使われなくなってるし。
0849デフォルトの名無しさんNGNG
>843
よそのスレで他の言語叩いてるC++信者に言ってくれ・・・
ここはC++のスレだからさ・・・
0850デフォルトの名無しさんNGNG
directX・箱はC++でコード書くのがメイン
PS2のエンジン(ライブラリ)はC++で書いて、微調整でアセンブリだろ
0851デフォルトの名無しさんNGNG
>>Visual D 出るまで待ち
反吐が出るね。M$プログラマのレベルなんてこんなもん。お前はM$の下請けか?
0852デフォルトの名無しさんNGNG
>>850
> PS2のエンジン(ライブラリ)はC++で書いて、微調整でアセンブリだろ
VU1 で走らせるマイクロコード (シェーダー) は、専用のアセンブラ言語。

メイン CPU 側で走るコードは大半が C++, コンパイラがサポートしていない
SIMD 命令 (R5900 マルチメディア命令と VU0 マクロモード)、あとは同期
処理などで使うハードに極めて近い命令だけインラインアセンブラで書く、
っつー感じ。

いずれにせよアセンブラは数学関数や描画系などの中で使うのがメインで、
ゲームっぽいコードのほうにはめったに顔を出さない。
0853デフォルトの名無しさんNGNG
>>851
勝手に反吐だしてれば?糞が。
M$は嫌いだが、コンパイラとマウスは出来がいい。
0854デフォルトの名無しさんNGNG
VCも.NETで対応CPU増えたし、コンパイラだけなら配布しだしたしなぁ。
コンパイラはIntel、GCC、VC、Borlandぐらいか?
0855デフォルトの名無しさんNGNG
>>854
ほかにも CodeWarrior とか。

組み込み用途だと CPU ベンダ純正のコンパイラとか、リアルタイム OS 屋
が出してるコンパイラ (Wind River Diab C/C++) とか色々あるよん。
0856デフォルトの名無しさんNGNG
趣味のプログラムならともかく、業務的には
ソフトウェア開発で職業プログラマが同じ処理を書くとき
少なくともC++より高水準なC#を使う場面なんてあるか?
ゲームプログラムだって
より低水準な言語でローレベルな調整したいのが人情
少なくともゲームプログラムではC・C++をメインに
専用アセンブリで痒いところを微調整というのが通常
0857デフォルトの名無しさんNGNG
そんな君はC++なんか使わずピュアC & 汗使えばいいだろ?というか使え。
C++みたいにコンパイル結果が見通しにくい言語使っちゃ、人間が介入するの大変だろうが。
0858デフォルトの名無しさんNGNG
>>855
違う。メジャーどころって意味で。
マイナー含めたらそれこそ山のようにある。
0859デフォルトの名無しさんNGNG
>>856
業務ってもパッケージソフトウェアとシステム開発で全く違うだろ、
ってかC#が台頭してるのはVB使ってたような場所。
0860デフォルトの名無しさんNGNG
>>858
> 違う。メジャーどころって意味で。
組み込み用途は、むしろメジャーだと思うぞ。開発人口も少なくないし。
0861デフォルトの名無しさんNGNG
>>857
C から C++ になって見通しが悪くなったのは、コードの配置ぐらいだと思うが。
あれは inline やら template やらあるから C と違って調整が難しい (命令
キャッシュのヒット率を上げるのが難しい) けど、他はそれほど。

最適化をかけると元のコードとかけ離れたコードをはくのは C も C++ も
大差ないよ。レジスタリネーミングを使うと、かなり追えん。
0862デフォルトの名無しさんNGNG
C#がデファクトとか言ってる人は何を根拠に?
とても信じ難いんだけど。
どういう世界でデファクトなの?
0863デフォルトの名無しさんNGNG
さっきからデファクトといってるがデファクトスタンダードとしないとも間違ってるぞ。
デファクトは「事実上の」って意味だけだ。
0864デフォルトの名無しさんNGNG
>>862
Web がらみの三階層アプリケーションだと、わりと流行ってる感じ。
これまで VBScript, JScript 使って ASP 書いてたところが、C#.net に
乗り換えてる。

でも、そっちも JSP とか ColdFusion なんかもあるし、まだデファクト
スタンダードっつ〜ほどじゃないと思うが。
0865デフォルトの名無しさんNGNG
>>864
C#はJSP,ASPに置き換わるものとして作られたんだろ。
クライアント用にはVBがあるわけだし。
0866デフォルトの名無しさんNGNG
JSPの代わりもVB.netでいいじゃん。
0867デフォルトの名無しさんNGNG
JSP? Japan Stuttering Project のことか?
どもりで困ってるのか?
0868デフォルトの名無しさんNGNG
>>864
M$がらみはデファクトスタンダードはない。
M$がスタンダードを決めてお前らが従うだけ。嫌なら書かなくていーよ。
アプリ書きたい奴はいっぱいいるから。
言語どころか開発環境さえ選択の自由なんかあるかよ。
0869デフォルトの名無しさんNGNG
>>864
それはVBScriptが取って代わってるだけでC++と
取って代わってるわけじゃないだろ。
0870デフォルトの名無しさんNGNG
>>868
> M$がらみはデファクトスタンダードはない。
三階層アプリだと Oracle + JSP や SQL Server + ASP (C#.net) など、
選択肢はいくつかあるよ。クライアントサイドだと Win32 でほぼ決まり
だから、選択の余地は狭いが。
0871864NGNG
>>869
その通り。

っつか、俺は C++ と C# は有効に活用できる対象が明確に違うと思ってる。
ただ今後は Win32 クライアントも C# で書く機会が増えそうだし、これまで
C++ が受け持っていた領域にも少し C# が食い込んでくるかなぁ、とは
考えてるけど。
0872デフォルトの名無しさんNGNG
新しい領域は新しい言語がいいんでない?
C++は従来Cでやってたことを、一歩進めるのに使う。
0873デフォルトの名無しさんNGNG
教えてください。
クラステンプレートにて例えば

template<typename mytype> class test{
test(const mytype &); //コンストラクタ

…
};

としたとして、コンストラクタなんですが、上記とちょっと変えて
test<mytype>(const mytype &);
とするやり方があると本で読んだのですが、いまいちどう違うのか
わかりません。何でもmytypeにそれぞれ固有のコンストラクタが
コンパイラによって生成されるとかなんだそうですが、最初のやり方
でもそんな感じがします。
どう違うのでしょうか?
0874デフォルトの名無しさんNGNG
>>873
違いなんてありません。
0875デフォルトの名無しさんNGNG
そ、そうなんすか?
ということは
test<mytype>というコンストラクタの書き方は意味をなさないと?
0876デフォルトの名無しさんNGNG
http://www.geocities.com/one_mad_alien/perftest.html
こりゃもう乗り換えるしかないだろ。
0877デフォルトの名無しさんNGNG
>>876
まだ言ってるのか・・・。言語論に速度はほとんど関係ないよ。
0878デフォルトの名無しさんNGNG
>>877
技術ばかりに目が行ってると、その辺が理解できなくなる。視野の狭い人間に
何言っても無駄だから、放置しとけ。

俺は Visual D はともかく、プログラミング言語 D と Effective D が出たら
考えるよ。
0879877NGNG
因みに俺はPrologが最高の言語だと思ってる。
0880デフォルトの名無しさんNGNG
>>879 わざわざC++スレでそんな毒にも薬にもならない自己主張などしなくてよい。
0881デフォルトの名無しさんNGNG
C++でCと同程度の速度で巨大ファイルを読み込む方法ってありますか。

ここによると、
ttp://www.gamedev.net/community/forums/topic.asp?topic_id=121193

std::iftream ifs( "filename" );
ifs.rdbuf()->sgetn( (char*)data, size );  // low-level

とするのがいいといってるんですが、
50MBほどのファイル読み込みをCと比較すると3倍ほど遅いです。
0882デフォルトの名無しさんNGNG
なんかC厨を釣るためのネタ質問に見えるなぁ
0883デフォルトの名無しさんNGNG
>>881
比較用のソース晒せ。
0884デフォルトの名無しさんNGNG
perlより速いんだろ?
0885デフォルトの名無しさんNGNG
>>881
その後のデータの使い方による。stream の機能をフルに使いたいなら
そこで示された方法を使うことになるし、単にメモリ上にマップすれば良い
のなら mmap() とか MemoryMappedFile() といった OS の仮想記憶
システムに近い低レベル API を使うことになる。
0886デフォルトの名無しさんNGNG
881です。
>> 883
だいたいこんな感じです。

const int BUFSIZE = 4096;

// C 用
setvbuf(fp, NULL, _IOFBF, BUFSIZE);
clock_t start = clock();
while (fread(buf, 1, BUFSIZE, fp)) ;
clock_t end = clock

---

// C++ 用
ifs.rdbuf()->pubsetbuf(buf, BUFSIZE);
clock_t start = clock();
while (ifs.read(buf, BUFSIZE)) ;
clock_t end = clock、

>>885
Cのfopenとfgesで十分な使い方です。
ただなんでこんなに速度差があるのか疑問だったので。
0887デフォルトの名無しさんNGNG
881です。

まちがえました。

ifs.read(buf, BUFSIZE));
↓
ifs.rdbuf()->sgetn(buf, BUFSIZE);
0888デフォルトの名無しさんNGNG
>>886
なんで部分的に貼るんだよ。テストしにくいだろ。
0889デフォルトの名無しさんNGNG
>886
デバッグビルドしてませんか。
0890デフォルトの名無しさんNGNG
bool aという変数があって、
aがtrueの時はfalseに、falseの時はtrueにするような(反転するような)
代入をしたいのですが、
a=~a;
だと、コンパイラが受け付けてくれません。
どうやったらいいでしょうか。
0891デフォルトの名無しさんNGNG
>>890
a = !a;
0892デフォルトの名無しさんNGNG
C++の仕様を決めるとき、なんで配列のdeleteには[]が必要にしたんだろ?
配列も普通にdeleteだけで開放できても問題ないような。

[]を付け忘れて間違えるデメリットはあっても、付ける事によるメリットって
なんかある?
0893デフォルトの名無しさんNGNG
>>892
ある。

配列を開放する場合、デストラクタを呼び出すために、その配列に格納
されている要素数をどこかに記録しておく必要がある。delete, delete[] を
共通にしてしまうと、常にこの要素数を記録せにゃならんので、その分だけ
メモリが無駄になる。
0894デフォルトの名無しさんNGNG
>>893
でも正直、貧乏臭いよね。
0895デフォルトの名無しさんNGNG
数バイトのメモリケチってdelete/delete[]を誤るほうが怖いな
下手すると豪快にリークしてくれるて本末転倒
0896デフォルトの名無しさんNGNG
>>893
それ本当?

もともとメモリ開放するためには、newで確保したメモリサイズが
なにかしらの管理領域に保持されているはずだよね。
そしたら要素数なんて別に持たなくても、要素数は算出できるはずじゃね?
0897デフォルトの名無しさんNGNG
デストラクタ呼び出しのためじゃないの?
0898デフォルトの名無しさんNGNG
>895
WindowsなどのPC環境でしか開発をしたことがないと
そういう言葉が出てくる
0899デフォルトの名無しさんNGNG
>>897
[ ]あってもなくてもデストラクタは呼ばれる。
0900デフォルトの名無しさんNGNG
>>898
確かにメモリがシビアな状態ではね。
でも、newした時点ですでに保持されてるんじゃないの?
0901デフォルトの名無しさんNGNG
>>896
そのオブジェクトのサイズはね。
だけどポインタが指してる先が一個のオブジェクトか、配列の先頭かは
プログラマにしか分からんよ。
0902デフォルトの名無しさんNGNG
>>901
OSも知ってる。もちろんOSにも寄るけど。
0903デフォルトの名無しさんNGNG
>>896
ttp://www.tietew.jp/cppll/archive/10666

ここを読みんしゃい。

あと、>>896 が言うように計算可能であるかもしれないけど
コストがかかる処理になるかもしれないし
メモリアロケータを設計する上での足枷となりうる。
0904デフォルトの名無しさんNGNG
>>900
メモリアロケータはユーザが override 可能だから、それを仮定することはできない。
0905デフォルトの名無しさんNGNG
>>899
>>899
え?
0906デフォルトの名無しさんNGNG
>>903
うーん、そんなにコストかかるか?
newで確保したメモリ内に管理用領域が付随していて、
それが激しくサイズ不定でとかならわかるが、
普通は引き算がせいぜい数回と、割り算1回発で済むんじゃないの?

>メモリアロケータを設計する上での足枷となりうる。
というのも足かせが思いつかん。
0907デフォルトの名無しさんNGNG
>>906
メモリアロケータは要求されたメモリサイズをそのまま確保するのではなく、
8, 16 バイト単位に切り上げた上でメモリを確保・呼び出し側に渡したり、
一定サイズまではライブラリ内部でプールしておいて、閾値を越えたら OS
のアロケータに丸投げしたりといった細かい工夫が施されてたりする。

確保したメモリサイズ・要素数を生のまま埋め込むことを前提とすると既存の
メモリアロケータを全部捨てて書き直す必要がるし、かといってアロケータが
まったく別の領域で「メモリアドレス先頭」と「要素数」の対応表を管理すること
にすると、そっちのメンテナンス・検索コストが結構かかる。
0908デフォルトの名無しさんNGNG
静的メンバ関数を使うメリットってなんですか?
0909デフォルトの名無しさんNGNG
>>908
何と比較して?
0910デフォルトの名無しさんNGNG
>>899
[]なしだと呼ばれるのは先頭要素だけだよな
0911908NGNG
>>909
普通に関数宣言するのと比べて(クラスのメンバにしないで)
0912デフォルトの名無しさんNGNG
クラスの静的メンバにアクセスできる
0913908NGNG
>>912
即レスありがとうございます。

今のところコールバック関数をメンバにしたいときにしかつかったことないんでどういうときに使うといいのか〜ってのがいまいちわかってないみたいです。
もっと勉強したほうがいいですね。
0914デフォルトの名無しさんNGNG
静的メンバ関数はインスタンスが無くても使えるのが便利。
0915デフォルトの名無しさんNGNG
全てのオブジェクトからアクセスできる。
クラスのオブジェクト生成のカウンタとか、共通で扱うデータなどは静的メンバ変数にする。
0916908NGNG
グローバル変数みたいなものってわりきっちゃっていいかな?
0917デフォルトの名無しさんNGNG
むしろ外部からのstatic変数へのアクセス関数に相当だろ。
0918デフォルトの名無しさんNGNG
>>906
>というのも足かせが思いつかん。

古臭い仕様上の制約というやつだ。合理性を求めても仕方が無い。
0919デフォルトの名無しさんNGNG
win32apiのWINAPIとかCALLBACKみたいに
C++の言語仕様に
関数名に付加する修飾子みたいなのってありますか?
0920デフォルトの名無しさんNGNG
>>919
WINAPIが何で定義されてるかお前は知っているのか?
0921デフォルトの名無しさんNGNG
>割り算1回発で済むんじゃないの?
ヲーヲー!もっともクロック数が必要な命令じゃないか。
0922デフォルトの名無しさんNGNG
>>920
__stdなんたらとかいう記号定数だろ
windows.hで定義されてるやつ

仮にC++のソースに関数名と型の間にひとつトークンを置いたとき
こういうのを関数名を修飾するトークンというふうに
認識してくれるのかなとか、なんとなく思ったので質問した
0923デフォルトの名無しさんNGNG
>>922
> __stdなんたらとかいう記号定数だろ
「記号定数」ってなんだ?

C++の文法と、使っているコンパイラのマニュアルを確認しる。
0924デフォルトの名無しさんNGNG
>>922
お前がそのWINAPIを使うときに使ってる言語は何だと思う?
その言語は「修飾するトークンというふうに認識」してるらしいが、
その言語はなんだと思う?w
0925デフォルトの名無しさんNGNG
春だなぁ・・・
0926デフォルトの名無しさんNGNG
春ですねぇ…
0927デフォルトの名無しさんNGNG
春ではなくただの日曜日だが。

>>919
関数名に付加する修飾子は在るが、呼び出し規約を指定するものはない。
0928デフォルトの名無しさんNGNG
呼び出し規約を指定するものしかないの間違いだろ?
0929デフォルトの名無しさんNGNG
> C++の言語仕様に
0930デフォルトの名無しさんNGNG
>>927
土曜日ですよ。
0931デフォルトの名無しさんNGNG
>>928
inline, virtual, explicit, staticなんだが、これを呼び出し規約と言うのか?
0932デフォルトの名無しさんNGNG
stdcall、cdecl、fastcall
0933デフォルトの名無しさんNGNG
>>930
そうだったか…
0934デフォルトの名無しさんNGNG
呼び出し規約は __stdcall __thiscall __fastcall __cdecl だな。Windows環境だと。
ちなみに先頭にアンダーバーがついてるので処理系依存だな。
0935デフォルトの名無しさんNGNG
呼び出し規約ってDLL作成の時にしか気にしてないが
他になんか必要な場合ある?
0936デフォルトの名無しさんNGNG
食い違ってるとスタティックリンクすらできん。
0937デフォルトの名無しさんNGNG
>>934
__thiscallと書きたい気分はわからんでもないが、とりあえず手元のVC7にそんなキーワードはなさげだったぞ。
あとアンダーバー二つはM$拡張みたいだが、詳しいことは漏れもよくわからん。
0938デフォルトの名無しさんNGNG
>>924
D言語
0939デフォルトの名無しさんNGNG
thiscall
C++メンバ関数用
基本的には__cdeclと同じだが、最後にthisをpushする。
0940デフォルトの名無しさんNGNG
thiscall はキーワードではないので、プログラムで明示的に指定できません。
0941デフォルトの名無しさんNGNG
より詳しくは、それぞれのコンパイラスレでどうぞ。
0942デフォルトの名無しさんNGNG
>>935
APIのコールバック関数。
0943デフォルトの名無しさんNGNG
>>939 わかりやすい誤訳だな。
0944デフォルトの名無しさんNGNG
>>943
はぁ?
ttp://www.microsoft.com/japan/developer/library/vccore/_core_thiscall.htm
でも見てろ。
0945デフォルトの名無しさんNGNG
API絡みぐらいじゃないとやっぱ使わないか。
0946デフォルトの名無しさんNGNG
>>943
じゃあ分かり難い誤訳でもご覧になって落ち着いてください。
http://support.microsoft.com/default.aspx?scid=kb;JA;74586
0947デフォルトの名無しさんNGNG
>>943
ttp://www.microsoft.com/italy/survey/surveycom_jp.aspx
0948943NGNG
thisをスタックに積むのは「vararg 関数」の時だけ。
それ以外の場合はecxレジスタで渡す。

↓原文。この時点でたしかに誤解を招きやすい。
http://msdn.microsoft.com/library/en-us/vccore98/html/_core_thiscall.asp

↓新しく書き直されたのがこっち。だいぶ読みやすくなってる。
http://msdn.microsoft.com/library/en-us/vclang/html/_core_thiscall.asp
0949デフォルトの名無しさんNGNG
Whidbeyがいつの間にかVisualStudio2005に名前決まったんだな。
0950919NGNG
蒸し返すけど要はホスト環境とコンパイラ依存ということですかね
関数の呼び出し規約の修飾子は。
つまり、WINAPI向けにコンパイラの機能を拡張しただけだと
0951デフォルトの名無しさんNGNG
x86以外の大抵のCPUには呼び出し規約は一つしかない。
x86に呼び出し規約がたくさんあるのも、WINAPI向けってわけじゃぁない。

↓ここの"The history of calling conventions"シリーズがかなり詳しい(まだ全部読めてないけど)。
http://weblogs.asp.net/oldnewthing/archive/2004/01.aspx
0952デフォルトの名無しさんNGNG
NULL character を含む文字列 ("aaa\0bbb\0ccc\0\0" みたいなの) を std::string で
扱いたいんだけど、どうやって代入すればいいですか?

string s = "aaa\0bbb\0ccc\0\0";

だと、"aaa" までしか代入できません。
0953デフォルトの名無しさんNGNG
basic_string(const E *s, size_type n, const A& al = A());
basic_string(const_iterator first, const_iterator last, const A& al = A());
0954デフォルトの名無しさんNGNG
\x00は?
0955デフォルトの名無しさんNGNG
>>952
> string s = "aaa\0bbb\0ccc\0\0";
そりゃ初期化だ。初期化なら >>953 の挙げてるコンストラクタ使え。
代入なら同じ引数のassign使え。

リテラルのサイズを取得するのに、templateを使うと幸せになれるかもしれない。
template< std::size_t N > inline std::string& assign_literal( std::string& target , char const ( &literal )[ N ] ){ return target.assign( literal , N - 1 ); }
0956デフォルトの名無しさんNGNG
>>953,955
うわっ、レス早っ!
こんな感じでいいのかな?

char *p = "aaa\0bbb\0ccc\0\0";
string s(p, 13);
string t;

cout << s << endl;
cout << s.size() << endl;

t.assign(p, 13);
cout << t << endl;
cout << t.size() << endl;

どうもでした。
0957デフォルトの名無しさんNGNG
こまかい突っ込みですまんが。
× char *p = "aaa\0bbb\0ccc\0\0";
○ char const *p = "aaa\0bbb\0ccc\0\0";
0958デフォルトの名無しさんNGNG
>>956
>>955の書いたテンプレート関数なら
std::string s;
assign_literal(s, "aaa\0bbb\0ccc\0\0");
で済みますな。長さを別途与えなくてもいい
0959デフォルトの名無しさんNGNG
>× char *p = "aaa\0bbb\0ccc\0\0";
ほんと糞下らんこと言う奴いるな。
いったん初期化したあとで別のアドレス指すのかもしれんだろうが。
0960デフォルトの名無しさんNGNG
>>959
0961デフォルトの名無しさんNGNG
>>957
お前の意図したコードは↓じゃないか?

char const * const p = "aaa\0bbb\0ccc\0\0";
0962デフォルトの名無しさんNGNG
>>959 http://www.kuzbass.ru/docs/isocpp/future.html#depr.string
0963デフォルトの名無しさんNGNG
char const ってあったっけ?
const char *const p = ...
ならあると思うが
0964デフォルトの名無しさんNGNG
chsr constは const char と同意。間違いない。それぐらい調べてからコメントしろ。
というより const が直後を修飾すると考えると
char const の方がbetter だと思う。特にpointerのアドレスか内容かをconst指定する際
char const *p;
はわかりやすいと思う
0965デフォルトの名無しさんNGNG
>>964
> char const の方がbetter だと思う。

そうか、読みにくいから俺はいつも const char だ。
0966デフォルトの名無しさんNGNG
>>964
> const が直後を修飾すると考えると

漏れの場合その道理でいくとconstが*にかかって
ポインタを移動できなくなるんじゃないかと誤解するなぁ。
0967デフォルトの名無しさんNGNG
次スレ?
http://pc5.2ch.net/test/read.cgi/tech/1078193971/
0968デフォルトの名無しさんNGNG
>>constが*にかかって
char *p;
で*pをポインタと考えてるからだろうが!違うぞ pがポインタで*pはその内容を意味する。
だから
char const *p
は p の指す内容を不変とすること。
char * const p;
は p の指すアドレスそのものを不変とすること。
0969デフォルトの名無しさんNGNG
型を修飾すると考えるほうがわかりやすいような希ガス。
0970デフォルトの名無しさんNGNG
>>964
constが直後を修飾するという考えなら
const charでいいだろ。あくまでchar型のインスタンすを定数と
考えるんだからな。
long だってlong int ってするようにな。
0971966NGNG
>>968
> で*pをポインタと考えてるからだろうが!

いや、宣言時には*がポインタを表す装飾だと思って(思い込んで)いるから。
漏れの場合*とpは離して書いてるが、それも宣言専用の装飾だと思っているから。
ちょっと無理のある表現だが
const char pointer p;
みたいな感じかな。

> pがポインタで*pはその内容を意味する。

だとすると、
char *p="null po";
はおかしな表現に思えてしまう。
あくまで宣言のみの表現で*pが内容を意味しないと解釈すると
上のようにpointerに置き換えられるので納得しやすい。

あとは定数の表現をchar constではなくconst charと覚えているから
const charのポインタということでconst char *にしているというのもある。
0972デフォルトの名無しさんNGNG
というか、char constって書き方ができるってのはいいが、
そういう表現を積極的に採用してる書籍ってあるのか?
ストラウストラップだってconst charだろ?
char型の・・・ただのchar型でなくて、定数のchar型・・・
というような順の修飾と考えたほうが自然だと思うけどなぁ。

char constという表現を知らんやつがいても仕方ないぐらい、
特殊な書き方だと思うよ。
0973デフォルトの名無しさんNGNG
アスタリスクを通る縦線を引いて、分類せよ。って書いてあったじゃん。
0974デフォルトの名無しさんNGNG
>char *p="null po";
>はおかしな表現に思えてしまう。

これは、本来は文法的にはあまりよろしくない書き方だ。
初期化が面倒だから、K&Rにもこういう書式を許しているし、コンパイラもOKだが
本来は

char *p;
p="おまえはバカ";


であるからな。厳密に考えるとCにはおかしな書式がいくつかある。
0975デフォルトの名無しさんNGNG
>>974
( ゚д゚)ポカーン
0976デフォルトの名無しさんNGNG
>>972
それはお前がバカだから、

Effective C++

読んでから言え。もっとも積極的に勧めてるわけじゃなく、
両方読める必要があると言っている。
お前はそれを知らなかったんだから、知る必要があったわけだ。
無知をひけらかして恥さらすな。
0977デフォルトの名無しさんNGNG
宣言したインスタンスに対し初期化するという意味なら別におかしいとは
思わんよ。
どんな修飾がついてたって、インスタンスはpであってその内容を代入してる
わけだから。修飾子とインスタンスを切り離して考えれば自然ではある。

char *p = "おまえがバカ";
でいいと思う。
0978966NGNG
>>972
const char *で宣言してもコンパイラのエラー出力ではchar const *になってたりするけどな。

話はちょっと反れて関数のポインタが&をつけなくても
取得できるのがおかしいというのをたまに聞くが、
あれも関数名はポインタそのもので()がポインタを解決する(実際には実行するんだが)為の
operatorと考えていて何も疑問を感じていない。
むしろ関数名に&を付けて関数のポインタを得られることが不思議だったりする。

メンバ関数に対するconstでもないしそろそろCスレ行きか。
0979デフォルトの名無しさんNGNG
ルールを単純にしたいがため、「constは左の型を修辞する」というルール一本にした。
他所から拾ってきたソースや過去の自分のソースで const char とか書いてあるのを見たときに少し考えてしまう。

> そういう表現を積極的に採用してる書籍ってあるのか?
David Abrahamsによるboostのソースはそうなっている。
上記のルールの一本化も彼のコーディングガイドラインによるもの。
少し前のgccの出力がそうなっていたが、最近はconstが右につくようになった。
0980デフォルトの名無しさんNGNG
>long だってlong int ってするようにな。

話にならんな。
この場合 long は int を修飾するだけ

int long x;

とやって long が xを修飾する必要がどこにあるんだ。

char const *p;
の const がポインタ内容を修飾する必要のある場合とは全く意味が違う。

例を持ち出すならもっと的確な事例を挙げてろ
0981デフォルトの名無しさんNGNG
>>978
関数名は関数型を持ち、関数型は関数へのポインタへ暗黙の変換が効く。
関数への参照という型も存在する。
この認識がないと、templateで関数型を扱うものが理解できない。
0982デフォルトの名無しさんNGNG
>>974
> 本来は
> char *p;
> p="おまえはバカ";

と言われても、
char const * const p;
p = "NULLPO";
と書くと警告でちゃうぞ。

>>976
何熱くなってんだ ?
誰も const char と char const のどちらかしか読めないなんて書いてないぞ。
0983デフォルトの名無しさんNGNG
>>976
バカはおまえだ。俺は両方の表現知ってたし、あくまで
const char より char const の方を押してる書籍の話を
言ってんだ。それが積極的ってことだろ。Effe C++だって
char constを押してるわけじゃない。知る必要とかじゃなくて
どっちが一般的かって話してんだよ。それからお前はEffe C++
がすべてか。バ・カ・タ・レ。
0984デフォルトの名無しさんNGNG
>話はちょっと反れて関数のポインタが&をつけなくても

関数のポインタってなんだ?関数へのポインタのことか?

0985デフォルトの名無しさんNGNG
これ以上constの位置について話すのならコチラへどうぞ→http://pc5.2ch.net/test/read.cgi/tech/1078193971/
0986デフォルトの名無しさんNGNG
なにあつくなってんだクズども

class Class { ... } typedef C;
0987デフォルトの名無しさんNGNG
>>986
お前のことだ(w
0988デフォルトの名無しさんNGNG
>>983
お前が何にも知らんことは文面から用意に察することができたのでバカでも知ってる教科書名を挙げてやったのよ。
一通りよんでりゃ、const の前置、後置ぐらいでスレ汚すバカは居ないだろうからな。勉強になったことを感謝しろ。

日 本 海 溝 よ り 教 育 レ ベ ル の 低 い 糞 ガ キ よ 。



0989デフォルトの名無しさんNGNG
>>984
それぐらい理解しろよ。
人と話したことないのか ?
0990966NGNG
>>977
>>971と同じ意見だよな。ありがとう。
が、あくまでソースから受ける印象の話であって何が正しいという話はしていないことに注意。

>>984
すまん。関数へのポインタ。

>>981
恥ずかしながら関数型という言葉を知らないんだが具体例をきぼん。
ということでC++の話題へ。
0991デフォルトの名無しさんNGNG
とりあえず落ち着け。
>>988
海溝は深いと言うべきだな。
0992デフォルトの名無しさんNGNG
>>988
しまいにゃ言えることはその程度かw。死ね。
0993デフォルトの名無しさんNGNG
>>952
最後に'\0'を2回付けたいのなら"〜\0"で十分では?
0994デフォルトの名無しさんNGNG
議論は構わないがそう熱くなるな。
端から見てると単なるケンカにしか見えないから。
0995デフォルトの名無しさんNGNG
まず日本語の読解力を身につけろよ。
0996デフォルトの名無しさんNGNG
>と言われても、
>char const * const p;
>p = "NULLPO";
>と書くと警告でちゃうぞ。

それはね、内容もアドレスも不変と宣言してるのに、宣言した時点より跡で代入してるから。
0997デフォルトの名無しさんNGNG
すいません熱いところ申し訳ないんですが次スレはドコですか
0998デフォルトの名無しさんNGNG
>>984
>それぐらい理解しろよ。
>人と話したことないのか ?

君ポインタの扱いが十分わかってないね。
関数のポインタなんて表現はありえない。
つまり、わかってる奴は絶対こういう表現はしない。
0999デフォルトの名無しさんNGNG
>バカはおまえだ。俺は両方の表現知ってたし、
バーカ。こんなこと知ってるぐらいのことを何宣言してんだ。アホの活造りかおまえ。
1000デフォルトの名無しさんNGNG
1000! って言うか次スレ…
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。