C++相談室 part73
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/10/05(月) 21:47:14ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part72
http://pc12.2ch.net/test/read.cgi/tech/1251773567/
0002デフォルトの名無しさん
2009/10/05(月) 23:49:17環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0003デフォルトの名無しさん
2009/10/06(火) 03:28:03[C++ FAQ]
http://www.parashift.com/c++-faq-lite/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[C/C++ リファレンス]
http://www.cppreference.com/ (英語)
http://www.cppll.jp/cppreference/ (↑の日本語訳だけど最新は反映していない)
[禿 Stroustrup]
http://public.research.att.com/~bs/
[C++ International Standard]
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38110
[JTC1/SC22/WG21 - C++]
http://www.open-std.org/jtc1/sc22/wg21/
ここから規格の最新(2003より新しい)ドラフトがダウンロードできる。
[JIS X3014]
http://www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3014
ISO規格の日本語訳。JIS X 3014:2003はISO/IEC 14882:2003 (E)に対応。
0004デフォルトの名無しさん
2009/10/06(火) 03:30:07amazon.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/
Exceptional C++ Style
http://www.amazon.com/exec/obidos/ASIN/0201760428/
0005デフォルトの名無しさん
2009/10/06(火) 03:31:56Effective 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/
C++ Template Metaprogramming
http://www.amazon.com/exec/obidos/ASIN/0321227255/
0006デフォルトの名無しさん
2009/10/06(火) 04:07:52[Boost]
Boost http://www.boost.org/
(日本語) http://www.kmonos.net/alang/boost/
(日本語) http://shinh.skr.jp/boost/
[標準ライブラリ]
SGI-STL http://www.sgi.com/tech/stl/
STLport http://stlport.sourceforge.net/
GNU libstdc++ http://gcc.gnu.org/libstdc++/
Apache C++ Standard Library (STDCXX) http://stdcxx.apache.org/
STLFilt http://www.bdsoft.com/tools/stlfilt.html
(日本語) http://episteme.wankuma.com/stlprog/ (※1999年発行注意)
[Loki]
http://sourceforge.net/projects/loki-lib/
LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
0007デフォルトの名無しさん
2009/10/06(火) 04:11:08ttp://codepad.org/
長いソースを貼るときはここへ!
0008デフォルトの名無しさん
2009/10/06(火) 04:16:48前スレは Books のリンクがなぜか (Templateまわり) だけになってたんで、
基本の書籍のやつ (>>4) も復活させといた。
Libraries (>>6) では、επιστημηさんの本のサイトが移転してたのを追尾。
あと、角さんの STL のページは死亡確認できたんでリンク削除しました。
http://d.hatena.ne.jp/sumi_wakhok/20090903/p4
0009デフォルトの名無しさん
2009/10/06(火) 04:34:100010デフォルトの名無しさん
2009/10/06(火) 17:37:310011デフォルトの名無しさん
2009/10/06(火) 18:00:070012デフォルトの名無しさん
2009/10/06(火) 18:52:100013デフォルトの名無しさん
2009/10/06(火) 18:57:22悔しいからです
0014デフォルトの名無しさん
2009/10/06(火) 19:07:280015デフォルトの名無しさん
2009/10/06(火) 19:14:59そもそも早さで張り合おうとすること自体が間違い
0016デフォルトの名無しさん
2009/10/06(火) 19:29:260017デフォルトの名無しさん
2009/10/06(火) 19:40:01C++に挫折した人がやってるからじゃないかな?
0018デフォルトの名無しさん
2009/10/06(火) 19:41:190019デフォルトの名無しさん
2009/10/06(火) 20:11:45当たり前のことをやっていても、Javaをやっている人から見れば理解できないことも
多い。基本的にC++は効率重視。大体のことをコンパイルタイムで終わらせようとする。
Javaはポータビリティー重視。誰でもどこでも使いやすいように作られている。
Javaで理解できないのは、RAIIが徹底していなくて、デストラクタがない点。
これで余計に苦労しているし、例外安全にするのが難しい。さらに、
ポリモーフィズムを使わないのにクラスを継承させるのが普通な点。これらが
パフォーマンスに大きな悪影響を及ぼしている。(Javaが起動時に遅いのは
深い階層で継承された各クラスのコンストラクタがひたすら走ってるから)
最近では動的言語が台頭してきたり、他言語がJVMに対応してきたりで、Javaは
中途半端になってしまった感がある。
0020デフォルトの名無しさん
2009/10/06(火) 20:39:54Pascalだけしか知らないかつてのマと同様に
0021デフォルトの名無しさん
2009/10/06(火) 20:53:28予想外に早く頭打ちになったのが計算外だった
0022デフォルトの名無しさん
2009/10/06(火) 21:53:54それを何とかしようとJNI使いすぎで可搬性落ちて仕様も肥大して
最近のJavaは何が売りなのかよくわからん
0023デフォルトの名無しさん
2009/10/06(火) 22:14:590024デフォルトの名無しさん
2009/10/06(火) 22:17:310025デフォルトの名無しさん
2009/10/07(水) 00:34:06むしろ、CPUが十分早くなったらLLのほうが良かった、というオチじゃないかと。
0026デフォルトの名無しさん
2009/10/07(水) 01:27:580027デフォルトの名無しさん
2009/10/07(水) 03:16:320028デフォルトの名無しさん
2009/10/07(水) 03:31:140029デフォルトの名無しさん
2009/10/07(水) 03:35:550030デフォルトの名無しさん
2009/10/07(水) 04:15:490031デフォルトの名無しさん
2009/10/07(水) 07:01:56JavaはもちろんC#, C++/CLIすらスレ違いなんだけど。
0032デフォルトの名無しさん
2009/10/07(水) 09:20:52ディスクを使用して、メモリ量が減らせるmapは無いですか?
たとえば、char [10] -> intにmapを使用した場合、
最も使用量が減らせる場合でも一件登録するのに
8 * 10 + 4 =84バイト必要です。
100万件で84M使用します。これ以上行くと環境によって不安定になりそうです。
テンポラリファイル使えばよさげなんですが。
0033デフォルトの名無しさん
2009/10/07(水) 09:58:290034デフォルトの名無しさん
2009/10/07(水) 10:09:14最低で10バイト + 4バイトでした。
いずれにしても、確保数が多いとメモリを圧迫します。
mapでディスク使用するライブラリなど無いですか?
0035デフォルトの名無しさん
2009/10/07(水) 10:31:060036デフォルトの名無しさん
2009/10/07(水) 10:39:55パフォーマンスが気になります。
こういうのは、C++で自作したとしても同じくらいの探索速度だったりしますか。
速さが大事なんです。
0037デフォルトの名無しさん
2009/10/07(水) 10:43:350038デフォルトの名無しさん
2009/10/07(水) 11:04:540039デフォルトの名無しさん
2009/10/07(水) 12:55:220040デフォルトの名無しさん
2009/10/07(水) 13:12:50100Mや200M程度で不安定になるとかどんな骨董品だ。
0041デフォルトの名無しさん
2009/10/07(水) 13:45:55最低基準に合わした方が良いです。
0042デフォルトの名無しさん
2009/10/07(水) 14:06:15速度重要だけど骨董品対応でSSE命令使えませーん とかもやだし
0043デフォルトの名無しさん
2009/10/07(水) 14:15:16ことやって、ついでにバグ多かった、というのは困るな。
0044デフォルトの名無しさん
2009/10/07(水) 14:18:32> ..., so programmers can store hash containers in shared memory and memory mapped files.
0045デフォルトの名無しさん
2009/10/07(水) 14:47:44手間かけたくないのでライブラリが良いんです。
>>44
メモリアロケータを自作すれば既存のやつがつかえそうですね。
でもやり方が良くわかりません。
0046デフォルトの名無しさん
2009/10/07(水) 14:53:080047デフォルトの名無しさん
2009/10/07(水) 19:46:52入門からテトリスを自作できるまでの知識がすべて入った本ありませんか?
0048デフォルトの名無しさん
2009/10/07(水) 19:47:19メモリ上で動作する事を基本としたライブラリをディスク上で使用するのと、
ディスク上で動作する事を前提としたライブラリをディスク上で使用するのと
どっちが効率がいいと思う?
あと >35 が挙げているのは「データベース」と言った場合に一般的に想起される RDBMS じゃなくて、
キー・バリュー・ストアだから機能としては map とほとんど変わらない。
0049デフォルトの名無しさん
2009/10/07(水) 19:51:45googleで検索して印刷してまとめれば探してる本になるよ
0050デフォルトの名無しさん
2009/10/07(水) 19:53:34天才すぎわろたwwww
天才乙。天才って本当にいるんだな
0051デフォルトの名無しさん
2009/10/07(水) 21:12:240052デフォルトの名無しさん
2009/10/07(水) 21:22:04<body onKeyDown=K=event.keyCode><script>X=[Z=[B=A=12]];h=e=K=t=P=0;function Y()
{C=[d=K-38];c=0;for(i=4;i--*K;K-13?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.round(p/
A)*145)])p=B[i];!t|c+4?c-4?0:h+=d:B=C;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+B[i++]]=1
if(e=!e){if(f|B){for(l=228;i--;)Z[h+B[i]]=k=1;for(B=[[-7,-20,6,17,-9,3,6][t=++t
%7]-4,0,1,t-6?-A:-1];l--;h=5)if(l%A)l-=l%A*!Z[l];else for(P+=k++,j=l+=A;--j>A;)
Z[j]=Z[j-A]}h+=A}for(i=S="";i<240;X[i]=Z[i]|=++i%A<2|i>228)i%A?0:S+="<br>",S+=X
[i]?"■":"_";document.body.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y()</script>
0053デフォルトの名無しさん
2009/10/07(水) 21:23:29てか、買ってみようかな。
0054デフォルトの名無しさん
2009/10/07(水) 21:27:50ゲーム以外の入門書はクリアしたれべるとか。
0055デフォルトの名無しさん
2009/10/07(水) 23:59:44つーかお前の実力の程は?
少なくとも猫のページとか程度はC言語はわかるんだよね?
わずか565バイトテトリスのプログラミング解説
ttp://zapanet.info/blog/item/1125
こういうの見てもめげない?
0056デフォルトの名無しさん
2009/10/08(木) 00:04:230057デフォルトの名無しさん
2009/10/08(木) 01:13:42意味不明です。
0058デフォルトの名無しさん
2009/10/08(木) 02:22:26C++スレでCの理解力、JavaScriptの読解力を求める理由を教えてくれ
0059デフォルトの名無しさん
2009/10/08(木) 04:59:43006055
2009/10/08(木) 11:01:13そんなに知りたい?
0061デフォルトの名無しさん
2009/10/08(木) 11:04:09上記のプログラムですが、入力ファイルより
数値を取り込む際、すべて0として取り込まれてしまいます
原因のわかるかたご教授のほどよろしくお願いします
0062デフォルトの名無しさん
2009/10/08(木) 11:24:13これはひどい。まともに読む気にならない。
まずは int main() に。コンパイルエラーが出るようじゃ話にならん。
次は、 18 とか 5 とか 8640 とかの意味のわからん即値を int const とかの
名前つき定数にする。ループ範囲の間違いがあればこれで見つけやすくなる
だろう。
次は、処理が ////... で区切られてるあたりを目安に関数に分ける。
ひとつの関数内でしか使わない変数はローカル変数に。複数の関数で共有する
変数は引数で渡すのがいいんだけど、難しいようならとりあえずグローバルに
しても、 main() いっこで完結してるこのプログラムならあまり問題ない。
これぐらいやれば、途中で間違いが見つかるんじゃないかなぁ?
少なくとも人に読んでもらえるコードには近づくだろうね。
0063デフォルトの名無しさん
2009/10/08(木) 11:54:09void とか、コードのスタイルとか、CをC++に中途半端に移行させた
ような感じのコードだな。(通す compiler もあるのかな。)
まず、コードを削って、初めの fscanf だけで 66行目までで徹底的に調べたら?
全部0ならそこでわかるはず。
どうでも良いことだけど 61行目は62行めのカッコのあとだろうね。
60,124行目 format が %.1lf に見えるけど、これ平気なのかな。
double なら %lf だし、%.1lf だと g++ なら compile error 出す。
compile しないならわかるんだけどね。
他のところは %lfになってるのかな。
0064デフォルトの名無しさん
2009/10/08(木) 12:53:04sprintf(tmpt, "%s", FILE_NAME_2004)と言う風にしておくべきだし、それくらいなら
fopen(FILE_NAME_2004, "r")でいい。
0065デフォルトの名無しさん
2009/10/08(木) 13:03:45こんなの書くヤツが実在したとは…
0066デフォルトの名無しさん
2009/10/08(木) 13:18:500067デフォルトの名無しさん
2009/10/08(木) 14:04:01BOSS カンコーヒー
0068デフォルトの名無しさん
2009/10/08(木) 14:07:360069デフォルトの名無しさん
2009/10/08(木) 14:28:03それは継承して使うクラスなんだけど、privateメンバを隠蔽したい。
でもヘッダに書かないと
「ヒープが壊れています」
でも書きたくない。
これ、どうすればいいんでしょ。
そもそもムリ?
0070デフォルトの名無しさん
2009/10/08(木) 14:29:300071デフォルトの名無しさん
2009/10/08(木) 14:32:350072デフォルトの名無しさん
2009/10/08(木) 14:34:160073デフォルトの名無しさん
2009/10/08(木) 14:42:07// innerA.h (内部LIB)
class A
{
int b;
public:
A() { /* うんぬんかんぬん */ }
virtual ~A(){ /* うんぬんかんぬん */ }
void Set(int val)
{
b = val;
}
virtual void Override() = 0;
};
// outA.h (公開)
class A
{
public:
A();
virtual ~A();
void Set(int val);
virtual void Override() = 0;
};
で、これを継承してvoid Set(int val)を実行 → ヒープ爆破
実は本格的なLIB作成経験あまりなし
0074デフォルトの名無しさん
2009/10/08(木) 14:48:030075デフォルトの名無しさん
2009/10/08(木) 14:48:48君のやりたいことはFactorパターンとかを調べればおk
0076デフォルトの名無しさん
2009/10/08(木) 14:54:01提供するだけというと?
0077デフォルトの名無しさん
2009/10/08(木) 15:05:14それじゃ違うものに同じ名前をつけているだけ。
そうではなくて、公開しないメンバには違う型と名前でダミーメンバを用意してサイズを合わせるの。
まぁ、>75だな。
0078デフォルトの名無しさん
2009/10/08(木) 15:21:160080デフォルトの名無しさん
2009/10/08(木) 15:25:10008169
2009/10/08(木) 15:34:110082デフォルトの名無しさん
2009/10/08(木) 16:48:250083デフォルトの名無しさん
2009/10/08(木) 17:26:06に円の半径を格納するけれども描画時には
その半径をそのまま使わずに10段階ぐらいに分ける
プログラムを作りたいのですが速度を重視する場合
どのようにするのが良いでしょうか?
例えばraiusを0.0 〜 100.0の範囲に収めるようにして
radius/10をすれば(int)radiusで整数で10段階に分ける
事が可能ですが割り算は使いたくないです。
0.1を掛ければ速いのか・・・
それにしても(int)へ変換すると遅いのかな?
switch使うよりも少数のまま
if(radius < 10.0)
・・・
else if(radius <20.0)
って地味に分ける方がいいのかな?
何か良い方法はあるでしょうか?
0084デフォルトの名無しさん
2009/10/08(木) 17:30:53本当にその割り算がボトルネックであると言う充分な観測が得られたのでなければ、
素直に割り算を使うのがいいと思うよ。
つーか、どうせ定数の割り算はまともなコンパイラなら乗算するコードを出力してくれるし。
0085デフォルトの名無しさん
2009/10/08(木) 17:36:46>の割り算がボトルネックであると言う充分な観測が得られたのでなければ
円の数が多く出せれば多いほど良いという前提でプログラムを組んでいますので
ボトルネックとまで言えなくても最善を尽くしたいです。
0086デフォルトの名無しさん
2009/10/08(木) 17:38:430087デフォルトの名無しさん
2009/10/08(木) 17:41:460088デフォルトの名無しさん
2009/10/08(木) 17:42:180089デフォルトの名無しさん
2009/10/08(木) 17:47:140090デフォルトの名無しさん
2009/10/08(木) 17:50:11n/10 = n*0.1 = (n>>3) + (n>>4) +となる。
大して変わらないとは思うがな。
0091デフォルトの名無しさん
2009/10/08(木) 17:55:06そうです。>>86描画自体はビデオカードが担うのでここでは考慮外で構いません。
>>87
区切り方はアバウトでも良いです。
0092デフォルトの名無しさん
2009/10/08(木) 18:03:321 + (n>>4) + (n>>5) + (n>>8) + (n>>9) となるが、右の方は常に0だから
1 + (n>>4) + (n>>5) だけで正確な割り算なるな。
0093デフォルトの名無しさん
2009/10/08(木) 18:06:00>>90の式の意味が理解できない馬鹿タレですが
floatでも8で割るなら
radius >> 3 でOKですか?
0094デフォルトの名無しさん
2009/10/08(木) 18:07:250095デフォルトの名無しさん
2009/10/08(木) 18:07:59FPSを幾つにするのかも大事。
ここをうまくやらないと、どんな計算したところで無駄。
圧倒的に描写は時間食う。
0096デフォルトの名無しさん
2009/10/08(木) 18:11:27描写間隔が1/60だとして、
工夫なしだと10万個が、工夫したら10.5万個だったら意味あるじゃん。
0097デフォルトの名無しさん
2009/10/08(木) 18:22:09x0.1で終わりだろ。
加減算と乗算の差は高々3クロックぐらいで
それは意味が無い。
0098デフォルトの名無しさん
2009/10/08(木) 18:26:46メモリの量が莫大になるので、バッファを増やすのは
どうでるか分かりませんが試せる事は全部やって見ようと思います。
だいたい分かりました。ありがとうございました。
0099デフォルトの名無しさん
2009/10/08(木) 18:28:39バッファ=メモリに転送するのが、圧倒的に時間かかりそう。
描写という用途では、/10の計算を工夫したところで意味ないだろ。
画面構築を手抜きする方法でも考えた方が良いんでは?
0100デフォルトの名無しさん
2009/10/08(木) 18:37:300101デフォルトの名無しさん
2009/10/08(木) 18:38:53でもないところを無駄に長々と書くのはパフォーマンスが落ちるんだよ
分かったらボトルネック以外は気楽に書け
0102デフォルトの名無しさん
2009/10/08(木) 18:39:07いかに円を多く表示する方法じゃない。
そこんとこ勘違いしないように。
0103デフォルトの名無しさん
2009/10/08(木) 18:39:40確保が圧倒的に時間掛かるだろうが
float10万個をまとめて転送するのとfloat10万個を
それぞれ掛け算するのは・・・ねぇ?
0104デフォルトの名無しさん
2009/10/08(木) 18:43:17256並列とかの計算できるからさ。
ビデオカード直アクセスが一番効果でる。
やったことは無い。
0105デフォルトの名無しさん
2009/10/08(木) 18:49:20ここではGPGPU向け統合環境の一つ、NVIDIAのCUDA(Compute unified device architecture)を使って、大規模並列計算を行ってみる。
NVIDIAによれば、並列度の高い処理ではCPUと比べておよそ10倍以上の速さで処理できるという。
http://tech.ckme.co.jp/cuda.shtml
CUDA技術によるGPUコンピューティングは,数百のオンチップ・プロセッサ・コアが連携して同時に数値計算を行う新しいコンピューティング手法。
演算上の複雑な問題を従来型のアプローチと比べて最大100倍の速度で解決できるという。
http://itpro.nikkeibp.co.jp/article/USNEWS/20061110/253263/
0106デフォルトの名無しさん
2009/10/08(木) 19:09:07CUDAは環境依存だしグラフィクスプログラムとの相性も悪いかも。
まぁ、計算量が増えて尚且つ並列性が確保できているなら
シェーダーでの演算とかから試してみるつもりです。
0107デフォルトの名無しさん
2009/10/08(木) 19:09:080108デフォルトの名無しさん
2009/10/08(木) 19:19:38>floatでも8で割るなら
>radius >> 3 でOKですか?
ダメです
とりあえず(int)radius/10が妥当に一票
素直に書けばオプティマイザが良きに計らってくれるので
そのあとプロファイラでボトルネックを探せばいいんじゃない?
0109デフォルトの名無しさん
2009/10/08(木) 19:27:53struct range { int lw_, up_; range(bound lw, bound up_) : lw_(lw.val_), up_(up.val_) {} };
range operator , (bound lw, bound up) {
return range(lw, up);
}
class f_array { f_array(range r) {/* rのlw_, up_を境界にもつ配列を作る */;} };
int main(void)
{
f_array fa(3,6);
fa(3) = ・・・;
・・・
fa(6) = ・・・;
上のようにカンマ演算子をオーバーロードしたんですが期待した動作をしてくれません
カンマ演算子が働く前にただのoperator ,(int, int)と判断されて片方が捨てられもう片方がintとして残ってしまいます
暗黙の変換を使う前提でint, intよりもbound, boundを優先させる方法は無いでしょうか?
0110デフォルトの名無しさん
2009/10/08(木) 19:29:44マジっすか!!
御指摘ありがとうございました。
0111デフォルトの名無しさん
2009/10/08(木) 19:32:16> floatでも8で割るなら
> radius >> 3 でOKですか?
こういうレベルの人にはゴリゴリの最適化とか無理。不可能じゃないけど、手探り
してる時間があったらハードウェアの勉強をした方が早いくらいに非効率的。
普通に書いてプロファイラで遅いところだけ絞り込む、っていう手法がどうしても
嫌なら、floatの中身は何なのか、そもそもCPUがどうやって動いてるのか、そういう
ところを勉強しなきゃ無理。じゃなきゃ、効率を上げようとしても逆に効率を落とし
かねない。「ここがハードの限界に近いな」ってところを見極められない限り、どこ
で最適化を終了させていいのかも分からないだろ?
0112デフォルトの名無しさん
2009/10/08(木) 19:36:23書き換えたら数十倍速になっちゃったりするって奴だな
0113デフォルトの名無しさん
2009/10/08(木) 19:42:41概ね異論はないです。
floatの中身をきちんと調べます。
地道にやります。サンクス。
0114デフォルトの名無しさん
2009/10/08(木) 20:00:550115デフォルトの名無しさん
2009/10/08(木) 20:02:100116デフォルトの名無しさん
2009/10/08(木) 20:17:210117デフォルトの名無しさん
2009/10/08(木) 20:20:13だけでよくなかったっけ
0118デフォルトの名無しさん
2009/10/08(木) 20:21:32string s(p);
とか教えてやればいいのにw
0119デフォルトの名無しさん
2009/10/08(木) 20:22:23string( p, size ); で出来た気がしてたのに出来ずに質問しました。
unsigned char *だったのが駄目でした。
0120デフォルトの名無しさん
2009/10/08(木) 20:23:52サンクス。
0121デフォルトの名無しさん
2009/10/08(木) 20:25:460122デフォルトの名無しさん
2009/10/08(木) 20:27:51他にもっと突っ込むべきとこがあるだろw
つーかわざとだろ
0123デフォルトの名無しさん
2009/10/08(木) 21:14:42visual studio 2008で開発しているのですが、
ダイアログで設定して、一度変数に代入した値が、
いつの間にか書き換わってしまうのです。
その変数に代入される箇所はすべてブレークポイントを設定して
チェックしたのですが・・・。
ある一つの変数だけでなく、いたるところでそのような現象が見られるのですが
原因は何が考えられるのでしょう。
他で開発されたソフトに付け足して使っているという状態ですが、
それが関係するのでしょうか?
よろしくお願いします。
0124デフォルトの名無しさん
2009/10/08(木) 21:23:17配列のオーバーラン
添え字の範囲を無視して代入してないかい?
それかスタックオーバーフローか
0125デフォルトの名無しさん
2009/10/08(木) 21:23:33配列のサイズをオーバーして書き込んだり、
解放済みのメモリブロックに書き込んだり、
どこを指しているかわからない未初期化のポインタが指している位置に書き込んだり、
といったことをしていると、そういうことが起きる
0126デフォルトの名無しさん
2009/10/08(木) 21:23:38配列やバッファのオーバーラン/アンダーランが発生している可能性。
0128デフォルトの名無しさん
2009/10/08(木) 21:25:12デバッガに、特定の変数が書き換えられたらとまる機能ってなかった?
0129123
2009/10/08(木) 22:18:510130デフォルトの名無しさん
2009/10/09(金) 01:10:42fa(3,6) のカッコ内のカンマは、関数引数の区切り。カンマ演算子じゃない。
fa((3,6)) これだとカンマ演算子。
> 暗黙の変換を使う前提でint, intよりもbound, boundを優先させる方法は無いでしょうか?
無いよ。
っていうか、そんなことができる宣言が可能だとすると、 operator , (int, int) を
使っていた既存のプログラムの意味をこっそりぶち壊すことができてしまう。
そんな危険なことはできないようになっているのが自然。
0131デフォルトの名無しさん
2009/10/09(金) 02:19:29なるのかを正しく理解した上で敢えてやることはある
でも、理解してるようには見えないので、やるな
0132デフォルトの名無しさん
2009/10/09(金) 06:56:24> 正しく理解した上で敢えてやることはある
変態ライブラリの中にはあるよね。
0133デフォルトの名無しさん
2009/10/09(金) 08:44:070134デフォルトの名無しさん
2009/10/09(金) 13:43:12Windowsのキャッシュを通さないほうが速いですか?
キャッシュ通さない場合、
読み込み位置、読み込みサイズ、読み込むバッファ位置が
セクタサイズの整数倍とか条件が面倒なのですが。
やる価値ありげならやろうと思います。
0135デフォルトの名無しさん
2009/10/09(金) 13:46:05スレ違い。
なんで速くなると思うのかの説明を追加して、↓ここらへんにどうぞ。
http://pc12.2ch.net/test/read.cgi/tech/1254843018/
0136デフォルトの名無しさん
2009/10/09(金) 14:46:52将来はゲームプログラマになりたいと思います。
テトリス自作までの学習が効率良くできるサイトありませんか?
(※入門〜)
0137デフォルトの名無しさん
2009/10/09(金) 14:50:06HSPへいけば?
0138デフォルトの名無しさん
2009/10/09(金) 16:25:590139デフォルトの名無しさん
2009/10/09(金) 16:29:13なに言語でも完成品を作れることが大事。
他の言語でも、部品の品ぞれえが悪いかもしれないが、
そこがなんとか出来ればアルゴリズムには違いはないからな
0140デフォルトの名無しさん
2009/10/09(金) 16:34:07http://www.youtube.com/watch?v=UZlTAZABhVk
0141デフォルトの名無しさん
2009/10/09(金) 16:40:15HSP自体が完成してねーじゃんw
0142デフォルトの名無しさん
2009/10/09(金) 16:41:080143デフォルトの名無しさん
2009/10/09(金) 18:25:360144デフォルトの名無しさん
2009/10/09(金) 18:32:39ビット演算とかシフトといかにもCっぽい操作ばかりで作るんじゃん?
0145デフォルトの名無しさん
2009/10/09(金) 18:40:07C++にこだわるな。物には順序がある。
HSPで作れなければプログラム適正がない可能性有り。
早めに見切りが付けられる。
HSPは日本語でゲーム開発するための資料が多いし、材料も揃っている。
これで駄目なら何やっても無理。
0146デフォルトの名無しさん
2009/10/09(金) 18:41:32日本は封建主義的な社会ですので外来種は常に跳ね返す癖が付いています。
- しかし昨今の世相を見渡しますと、食料品から政権交代までダメなものは国産品でも跳ね返しますね(笑)
確かに、実際に機能しないものは実力行使で跳ね返す癖も付いてきたと言えますね。
- そもそもDarkBASICのユーザー層はどこに重点を置いているのですか。
従来の複雑なWindowsAPIに依存しない、手軽で簡素な3Dプログロミングを楽しめるところでしょうね。
これがかなりのウェイトを占めていると思いますし、Linuxのユーザー層にも移管しやすい好材料です。
- APIはそんなに複雑ですか。
いったん理解すれば難しくはありませんが、ある程度の学習とノウハウ蓄積が必要になります。
これが初心者にとっては大きな障壁になります。
- DarkBASICが日本で注目されるようになったのはいつ頃でしょうか。
まだ注目されていません(笑)
DarkBASICを好んで使うと予想されるユーザー層は、現在のところHSPを使っています。
- HSPはフリー(無料、無償)で3Dプログラミングが可能な簡易言語として広く認知、普及していますね。
HSPは国産のプログラミング言語で、API、DLLを組み合わせて広範な3Dプログラミングが可能です。
中学生程度でも柔軟に使いこなしている実例があります。
- ではDarkBASICは日本での必要性を感じないのでは?
ところがそうではない情勢なんですね。
0147デフォルトの名無しさん
2009/10/09(金) 18:59:02っていうことはCやってるこのスレのみなさんは
HSPから始めてるんですか?
0148デフォルトの名無しさん
2009/10/09(金) 19:12:45ゲームプログラマならHSP→…→C++というコースはけっこういると思う
それ以外だとアセンブラかCから来てる奴がほとんどじゃないの
あとは関数型から来てるTMPマニアの変態ども
0149デフォルトの名無しさん
2009/10/09(金) 19:42:04ゲ製作板いけ
おあつらえ向きのスレもあるようだぞ
テトリスを作る
http://pc11.2ch.net/test/read.cgi/gamedev/1033977194/
別にプログラムに限った話じゃないが、まだロクに手付けてないのに
「効率的な学習法」とか考えたり調べたりしてるのが一番非効率だぞ
何でもイイからサッサとヤレ。
0150デフォルトの名無しさん
2009/10/09(金) 20:06:25>>149
ありがとうございます
さっそくゲ製作板に行きたいと思います
とりあえずHSPやってみたいと思います。
0151デフォルトの名無しさん
2009/10/09(金) 20:11:300152デフォルトの名無しさん
2009/10/09(金) 20:15:01ちっちゃなテトリス
HSP3のスクリプトを垂れ流すブログ: バイナリデータの検索 http://rpen.blogspot.com/2007/08/blog-post.html
0153デフォルトの名無しさん
2009/10/09(金) 20:15:45こっちだった
0154デフォルトの名無しさん
2009/10/09(金) 20:31:52ぱっと見た感じ知能指数が弱いように見えます
質問したら叩かれそうです
>>152
え・・そんなスクリプト垂れ流しされても困ります・・><
0155デフォルトの名無しさん
2009/10/09(金) 20:39:34HSPプログラムコンテスト2009
HSPプログラムコンテストは、プログラム言語HSP(Hot Soup Processor)により
作られた作品を募集し表彰するイベントです。
すべての応募作品は無料で公開され、ダウンロードできますので、
作品を見てみたいという人も大歓迎です。
HSPを使っている人も、そうでない人も楽しむことができる自作プログラムの祭典にぜひご参加ください。
詳しくは、下のリンクをご覧ください。
締切りまで1ヵ月になりました
いよいよ10月に入って残り期間1ヵ月となりました。
多くの作品ご応募頂き、ありがとうございます。
ギリギリまで製作されている方は、最後の追い込み頑張ってください。
そして、これから製作する人もまだ間に合いますので、ぜひコンテストにご参加ください。
http://hsp.tv/contest2009/
0156デフォルトの名無しさん
2009/10/09(金) 20:48:48本買おうかな・・
0157デフォルトの名無しさん
2009/10/09(金) 20:53:31今すぐ、ここを出て行きますから許してください
0158デフォルトの名無しさん
2009/10/09(金) 20:53:39hsp\sampleにあるやつ。
HSPTVからもデモみれたとおもうが。
0159デフォルトの名無しさん
2009/10/09(金) 20:57:100160デフォルトの名無しさん
2009/10/09(金) 21:00:35いいですね。
でもHSPって低脳がやってるイメージがあるし、やっぱりやめようかと考えてます。
・・・でもやっぱりHSPから入ったほうがいいですかね・・?
最終的には3Dのゲーム製作なんですが・・
0161デフォルトの名無しさん
2009/10/09(金) 21:06:49堀井雄二はドラゴンクエストの制作者だが、
本人はプログラム出来ないし、どんな言語で作られてるかも知らないだろう。
ゲームの面白さは言語に依存しない。
0162デフォルトの名無しさん
2009/10/09(金) 21:08:080163デフォルトの名無しさん
2009/10/09(金) 21:12:05九州の会社だろ。
合併して人材豊富と思うが。
0164デフォルトの名無しさん
2009/10/09(金) 21:13:05重要なのはアイディアですね
ゲームに一番向いてる言語とかあります?
つまり
どの言語でもゲームは作れるし、大差はないってことですか?
0165デフォルトの名無しさん
2009/10/09(金) 21:14:56確かにC言語の衰退は避けられない事実です。
- それはどうしてですか
趣味でC言語を体得しようとするプログラマがいないからでしょうね。
- 会社で使ってるのに趣味で使いたくない?
そうでしょうね。
そもそもC言語は生産効率向上には寄与しなかったと言う事実があります。
仕様書を噛み砕くだけの、馬耳東風な感覚では愛着が湧かないでしょう。
- 将来的にCプログラマは切り捨てられる?
すでに旧来のCプログラマは他の言語に移管してると思います。
職業的にもCでは使えない状況ですし。
- 加速するIT化に対応できないと言うことですか。
他の言語群がCを包括的に上回っています。
- BASIC言語の台頭の可能性はあると思いますか。
あるでしょうね。
言語仕様が簡素化されて生産効率が上がれば可能性はあると思います。
- かつてCはBASICより速い実行コードを生成すると自慢していましたが。
それは過去の幻想でしょうね。
0166デフォルトの名無しさん
2009/10/09(金) 21:16:08知能指数が低そうだから、知能指数が低そうなスレ選んでやったのもわからないくらい知能指数低いの?
0167デフォルトの名無しさん
2009/10/09(金) 21:17:28日本は封建主義的な社会ですので外来種は常に跳ね返す癖が付いています。
- しかし昨今の世相を見渡しますと、食料品から政権交代までダメなものは国産品でも跳ね返しますね(笑)
確かに、実際に機能しないものは実力行使で跳ね返す癖も付いてきたと言えますね。
- そもそもDarkBASICのユーザー層はどこに重点を置いているのですか。
従来の複雑なWindowsAPIに依存しない、手軽で簡素な3Dプログロミングを楽しめるところでしょうね。
これがかなりのウェイトを占めていると思いますし、Linuxのユーザー層にも移管しやすい好材料です。
- APIはそんなに複雑ですか。
いったん理解すれば難しくはありませんが、ある程度の学習とノウハウ蓄積が必要になります。
これが初心者にとっては大きな障壁になります。
- DarkBASICが日本で注目されるようになったのはいつ頃でしょうか。
まだ注目されていません(笑)
DarkBASICを好んで使うと予想されるユーザー層は、現在のところHSPを使っています。
- HSPはフリー(無料、無償)で3Dプログラミングが可能な簡易言語として広く認知、普及していますね。
HSPは国産のプログラミング言語で、API、DLLを組み合わせて広範な3Dプログラミングが可能です。
中学生程度でも柔軟に使いこなしている実例があります。
- ではDarkBASICは日本での必要性を感じないのでは?
ところがそうではない情勢なんですね。
0168デフォルトの名無しさん
2009/10/09(金) 21:17:47まともなプログラミング言語は速度の差こそあれ
「出来ること」は全て同じであることがわかっている
0169デフォルトの名無しさん
2009/10/09(金) 21:20:000170デフォルトの名無しさん
2009/10/09(金) 21:20:08すぐ噛み付くあんたも知能指数低い
0171デフォルトの名無しさん
2009/10/09(金) 21:30:40簡単テトリスはHSP
0172デフォルトの名無しさん
2009/10/09(金) 21:32:53時間が無限に使えれば、アセンブラでもコボルでもフォートランでも3Dゲーム作れるだろ。
ハードウェアにアクセスする部分は、言語単体では無理かもしれないが。そこは自作すれば。
一番、自分がやることが少なくて3Dの勉強になるのは、HSPと思う。
0173デフォルトの名無しさん
2009/10/09(金) 21:33:05堀井雄二はプログラミング「できた」よ。
旧エニックスのホビープログラミングコンテストの佳作獲ったのが縁で
ドラクエ作ることになったんだから。
もちろん、現代のゲームプログラミングの技術を、現役のマと同レベルで
理解しているはずはないけど、言語もわからないような全くのプログラミング音痴ではない。
特に初期ドラクエはメモリ容量との戦いで、あと1KB削るために、1000センテンスある台詞から
平均1文字ずつ削っていったとか、そういう開発してたらしいから。
ディテールは分からずとも、ゲームを組むということの大まかなフィーリングを
マと共有することはできるはずで、それって本当の未経験者にはできない大きなことだと思う。
0174デフォルトの名無しさん
2009/10/09(金) 21:39:27>>173の言うとおり堀井は全くのプログラム音痴なわけじゃない
0175デフォルトの名無しさん
2009/10/09(金) 21:40:540176デフォルトの名無しさん
2009/10/09(金) 21:52:31チュンソフトは敵対的買収されたの? 経営難だったの? 買収されるとは意外だった。
0177デフォルトの名無しさん
2009/10/09(金) 21:58:17ところがそうではない情勢なんですね。
- 具体的にはどういった情勢なんですか。
人的負荷(Human-overhead)の問題を回避できない背景があります。
- 分かりやすく解説して下さい。
ヒューマンオーバーヘッド(以下H.O.H.)の問題は、1つのプログラムを作成する場合に、1つの言語やプラットホーム
の知識だけではなく、複数に跨る言語やプラットホームの知識を必要とする場合によく発生します。
- それがDarkBASICとどう関係するんですか。
DarkBASICはH.O.H.の問題を回避できるようにAPIやハードウェアの個体差を窺いながらプログラミングをする必要が
ありません。
もちろん、すべてではありませんが(笑)
- それはどのような場合に効力を発揮するのでしょうか。
3Dプログラミングにおいて抜群の生産効率を発揮するでしょうね。
- それはCやHSPでもAPIや外部のDLLを使えば簡単にできるでしょう?
確かにそのとおりです、しかしH.O.H.の問題は解決できません。
- 生産効率向上には何が必要なのですか。
体系的に簡素化された言語仕様、これに尽きますね。
0178デフォルトの名無しさん
2009/10/10(土) 00:05:20↓はコンパイルできるんですが、Widget()は左辺値を生じないので
コピーコンストラクタには右辺値が渡され、仮引数型にconstがないので
コンパイルできない筈では?
struct Widget {
Widget() {}
Widget(Widget&) {}
};
int main() {
Widget w(Widget());
}
0179デフォルトの名無しさん
2009/10/10(土) 00:09:05やっぱイテレーターのイテレーターかな
0180デフォルトの名無しさん
2009/10/10(土) 00:13:05const付けなかったらただのコンストラクタじゃん
0181デフォルトの名無しさん
2009/10/10(土) 00:18:37もし、VCなら警告レベルを4にして試してみよう。
0182178
2009/10/10(土) 00:27:39g++ 4.3.3 で -Wall でコンパイルしましたが特に何も出ません。
JISX3014の「8.5.3 参照」の「5 1)」に右辺値の参照適合に関する記述がありますね。
コピーコンストラクタは右辺値でも参照できるということでいいのかなぁ
0183デフォルトの名無しさん
2009/10/10(土) 00:33:360184デフォルトの名無しさん
2009/10/10(土) 00:36:410185デフォルトの名無しさん
2009/10/10(土) 00:40:25コンストラクタの呼び出しじゃなくて関数宣言(Widget を返し、Widget を引数にとる w という関数)だと解釈されてるんじゃないの?
0186178
2009/10/10(土) 00:42:41それだとコンパイルエラーが出たんですよ。
で、「コピーコンストラクタでは?」と試したところ異なる結果が出てここに相談に来た次第で。
「12.2 一時オブジェクト」の「5」の参照が一時変数に結合される場合に当てはまってるのかなぁ
0187デフォルトの名無しさん
2009/10/10(土) 00:42:43Widget w((Widget()));
にして試した。
0188178
2009/10/10(土) 00:44:18読み間違えました。
0189185
2009/10/10(土) 00:46:42「引数なしで Widget を返す関数へのポインタ」を引数にとり、Widget を返す w という関数
Widget w((Widget()));
これでお望み通りエラーが出ると思う。
「C++で最も奇妙な解析」(Effective STL 第6項)ってやつ。
0190178
2009/10/10(土) 00:53:04試しにメンバ変数xを追加してw.xをアクセスすると怒られますね。
./test.cc:11: error: request for member ‘x’ in ‘w’, which is of non-class type ‘Widget ()(Widget (*)())’
Effective STL 読んで勉強してきます。どうもでした。
0191デフォルトの名無しさん
2009/10/10(土) 09:32:14確かにそのとおりです、しかしH.O.H.の問題は解決できません。
0192161
2009/10/10(土) 10:33:560193デフォルトの名無しさん
2009/10/10(土) 10:41:35ここ行って掲示板や、メールして話聞いてくるとか?
このテトリスは良い出来してる。
http://maruchu.nobody.jp/soft/
0194デフォルトの名無しさん
2009/10/10(土) 11:52:37※パソコン(゜Д゜)ぶっ壊れた
0195デフォルトの名無しさん
2009/10/10(土) 11:58:54おれも、壊れた・・・orz
0196デフォルトの名無しさん
2009/10/10(土) 12:01:550197デフォルトの名無しさん
2009/10/10(土) 13:41:150198デフォルトの名無しさん
2009/10/10(土) 13:43:060199デフォルトの名無しさん
2009/10/10(土) 14:11:540200デフォルトの名無しさん
2009/10/10(土) 14:12:350201デフォルトの名無しさん
2009/10/10(土) 15:21:160202デフォルトの名無しさん
2009/10/10(土) 15:27:13なぜここにいるの・・・?(´・ω・)
0203デフォルトの名無しさん
2009/10/10(土) 15:55:150204デフォルトの名無しさん
2009/10/10(土) 16:01:210205デフォルトの名無しさん
2009/10/10(土) 18:15:100206デフォルトの名無しさん
2009/10/10(土) 20:44:520207デフォルトの名無しさん
2009/10/10(土) 21:02:060208デフォルトの名無しさん
2009/10/10(土) 22:25:46(・V・) (ははははは)
p(^−^)q (ヒャ〜 おもしれ〜)
(>、<) (応援ヨロシクっ!)
(M) (マリオが大好きだよ)
(・○・) (鼻がカユイ)
(^U^) (だーい満足)
(^板違い^) (板違いですよ〜)
(==) (最近ゲームつまんないですね)
(l l) (悲しいよ〜)
(・w・) (パズルゲームが好きです)
(’’) (カービィが大好き)
使用例
>>○○
そうですね。(==)
でもマリオなんてどうでしょう?(M)
僕は満足でしたよ。(^U^)
あ、なんか鼻がむずむずしてきた。(・○・)
すみません。
(・V・)
みんなどんどん使ってくださいねー。(>、<)
0209デフォルトの名無しさん
2009/10/10(土) 22:28:190210デフォルトの名無しさん
2009/10/10(土) 22:31:570211デフォルトの名無しさん
2009/10/10(土) 22:51:30(;ω;)
;}
0212デフォルトの名無しさん
2009/10/11(日) 00:07:10( "ω" )
;}
0213デフォルトの名無しさん
2009/10/11(日) 03:12:570214デフォルトの名無しさん
2009/10/11(日) 10:29:45走らすみたいなことってできますか?
スレッドプールを使うしかないような気がするのですが詳しい方教えて。
0215デフォルトの名無しさん
2009/10/11(日) 10:44:13でなければ、begen_threadexを使ってthreadクラスを作る。
0216214
2009/10/11(日) 11:11:57ローカルスコープでnewして放置はc++ではできないですよね。
すると上位スコープにboost::threadオブジェクトのポインタをshared_ptr等で持っておく必要になるかと。
そうなると次回に同じローカルスコープでboost::threadがnewされたときに前回のオブジェクトをjoinして待たねばならない?
join後に新規オブジェクトとswapするような実装だと、ちょっと違うかなと思うのですが。
0217デフォルトの名無しさん
2009/10/11(日) 11:45:420218214
2009/10/11(日) 11:49:550219デフォルトの名無しさん
2009/10/11(日) 12:26:46newして放置というのは、C++では好ましくないと思うよ。
0220214
2009/10/11(日) 13:13:40それをやるとしたらthread_groupは内部で監視用のスレッドを立てているか抱えるthreadとsignal/slotで接続されているかだと思う。
さっきから初心者と思われる人がレスしてくれているけど・・・。
0221デフォルトの名無しさん
2009/10/11(日) 13:15:49どうしてでしょうか。
簡単で手軽、誰にでも学習の機会があることでしょうね。
CやHSPだとこうはいきません。
CやHSPだとAPIのノウハウが必要になりますし、それは大きな障壁となります。
0222デフォルトの名無しさん
2009/10/11(日) 13:22:29DarkBASIC厨うざい
こんな所にまで誤爆すんな
0223デフォルトの名無しさん
2009/10/11(日) 13:23:14確かにそのとおりです、しかしH.O.H.の問題は解決できません。
0224デフォルトの名無しさん
2009/10/11(日) 13:31:24じゃあ、ためしてみれ
0225214
2009/10/11(日) 14:15:02何で試さなきゃいけなかったのw?
0226デフォルトの名無しさん
2009/10/11(日) 14:31:440227デフォルトの名無しさん
2009/10/11(日) 14:55:32boost::threadのデストラクタはdetachするだけで、実行中のスレッドが強制的に終了させられることはないよ。
それが嫌なら、boost::this_thread::at_thread_exitでも使ってスレッド終了時にdeleteするようにするのはどう?
0228デフォルトの名無しさん
2009/10/11(日) 14:56:24...
{ // local scope
boost::thread(f).join();
}
newなんてどこから出てきた?
0229デフォルトの名無しさん
2009/10/11(日) 15:16:490230デフォルトの名無しさん
2009/10/11(日) 15:34:22ようするに214は、そこでjoinしたくないだけだと思う。
newは216で初出。まさかとは思うけど、Javaとか言っているし、
クラスオブジェクトを自動変数にできることを知らない可能性があると感じた。
0231デフォルトの名無しさん
2009/10/11(日) 16:48:320232デフォルトの名無しさん
2009/10/11(日) 16:59:00スレをざっと読んで、C++がプログラミング言語だということは理解できました。
JAVAもプログラミング言語でしょうか、それともダイレクトXのようなアプリケーションなのでしょうか?
0233デフォルトの名無しさん
2009/10/11(日) 17:03:240234デフォルトの名無しさん
2009/10/11(日) 17:06:13スレ違いです。その質問は以下へどうぞ。
スレ立てるまでもない質問はここで 101匹目
http://pc12.2ch.net/test/read.cgi/tech/1254843018/
0235デフォルトの名無しさん
2009/10/11(日) 18:53:500236デフォルトの名無しさん
2009/10/11(日) 19:28:480237デフォルトの名無しさん
2009/10/11(日) 19:34:360238デフォルトの名無しさん
2009/10/11(日) 19:41:470239デフォルトの名無しさん
2009/10/11(日) 20:46:11>さっきから初心者と思われる人がレスしてくれているけど・・・。
>何で試さなきゃいけなかったのw?
人に聞く態度じゃねーだろw
どっちが初心者だよ(;´Д`)
0240デフォルトの名無しさん
2009/10/11(日) 21:09:17C++/CLIを使い続けることに疑問を感じてしまった
0241デフォルトの名無しさん
2009/10/11(日) 21:13:330242デフォルトの名無しさん
2009/10/11(日) 21:14:16乗り換えるとか言ってる奴は同時に使える言語が一個しかないの?
0243デフォルトの名無しさん
2009/10/11(日) 21:17:15T min<T>(T lhs,T,rhs)が作れねえorz
typedefがねえorz
0244デフォルトの名無しさん
2009/10/11(日) 21:20:49typedef std::vector< A > A_collection;
が出来ないだっけ?
だとしたら致命的だったりする。
0245デフォルトの名無しさん
2009/10/11(日) 21:23:480246デフォルトの名無しさん
2009/10/11(日) 21:24:53C++03にtypedefテンプレートがない事にさえ相当苛ついてるのに
C#に移行したら発狂するな。
早く0xに開発環境移行したいよー。
0247デフォルトの名無しさん
2009/10/11(日) 21:26:35そうできないんだ。typedefがないからA_Collection::value_typeのようなこともできないんで、Aを明示しないといけない。
かなり苦戦する。
0248デフォルトの名無しさん
2009/10/11(日) 21:32:360249デフォルトの名無しさん
2009/10/11(日) 21:51:22手広くやってる余裕あるか? ふつー
自らのポテンシャルの限界を晒すようでアレだが
歴史上の各時点では1言語だけ突出してて他は教養程度にならざるを得ない
0250デフォルトの名無しさん
2009/10/11(日) 21:56:31解決のヒントを多く持っておくのは悪いことではないよ。
0251デフォルトの名無しさん
2009/10/11(日) 22:13:000252デフォルトの名無しさん
2009/10/11(日) 22:14:37そこが最大の欠点
0253デフォルトの名無しさん
2009/10/11(日) 22:38:13費用対効果の観点からも勉強する価値はあるよ。
まあ、Javaとか触りたくないというのは理解できるが。AndroidでC++ only開発できないかなぁ
0254デフォルトの名無しさん
2009/10/11(日) 22:42:37クエリ式はどうでもいいが、Enumerable拡張メソッドはSTLアルゴリズムに通じるものがある。
0255デフォルトの名無しさん
2009/10/11(日) 22:50:44だからって書いてるコードの量の桁が簡単には変わらない
0256デフォルトの名無しさん
2009/10/11(日) 22:58:480257デフォルトの名無しさん
2009/10/11(日) 22:59:180258デフォルトの名無しさん
2009/10/11(日) 23:01:05レポートを始末するために各種言語は軽く触ったな
C++はちょっとした作業をしたいときに大掛かり過ぎる
0259デフォルトの名無しさん
2009/10/11(日) 23:04:15それが>>252の言うところだな
0260デフォルトの名無しさん
2009/10/11(日) 23:06:16ならいいんじゃね
C++以外知らないとか学ぶ気すら無いとかじゃないんだし
俺も使うのはダントツにC++が多い
あとはC++を生成するプログラムとか
設定ファイルの文法(最近はXMLが多いけど)とかの
こまごました作業にPerlやLISPを使うくらい
0261デフォルトの名無しさん
2009/10/11(日) 23:06:45簡単なプログラム作るなら組み込みがしっかりしてるjavaとかの方が向いてるって事でおk?
0262デフォルトの名無しさん
2009/10/11(日) 23:09:38Perlは他の似たようなのでもいいと思う(つーかあの辺は何個も覚える必要は感じないし)
0263デフォルトの名無しさん
2009/10/11(日) 23:11:40ごく簡単なプログラムの為にインタプリタやら
VMをセットアップするほうが面倒に感じるよ。
0264デフォルトの名無しさん
2009/10/11(日) 23:17:14アレはC++でのboost.spiritみたいなもんじゃね
0265デフォルトの名無しさん
2009/10/11(日) 23:27:570266デフォルトの名無しさん
2009/10/12(月) 00:10:24一度やろうとしたらすっっっっげえ面倒臭くてかえって時間かかって失敗した
0267デフォルトの名無しさん
2009/10/12(月) 00:14:060268デフォルトの名無しさん
2009/10/12(月) 00:17:100269デフォルトの名無しさん
2009/10/12(月) 00:20:59大体のディストリには最初から入ってるし
WindowsでPerlとか使おうとは思わん
0270デフォルトの名無しさん
2009/10/12(月) 00:24:30OSのインストール時にインストール済の場合も多いし。
0271デフォルトの名無しさん
2009/10/12(月) 00:26:39configure.ac と Makefile.am 書くのがめんどくさいだろ常考。
0272デフォルトの名無しさん
2009/10/12(月) 00:30:04問題無く動くからPerlで済ませちゃってるなぁ。
0273デフォルトの名無しさん
2009/10/12(月) 00:43:050274デフォルトの名無しさん
2009/10/12(月) 00:51:14Makefile.amはまあ仕方ないとして、他はAutotoolsですぐじゃん。
0275デフォルトの名無しさん
2009/10/12(月) 00:53:040276デフォルトの名無しさん
2009/10/12(月) 01:06:48そういうの全てひっくるめて
元々考えなくていいなら、それに越したことないよねえ。
環境作る立場の人は、それが仕事だったり趣味だったりするから
絶対考えてないよね。
0277デフォルトの名無しさん
2009/10/12(月) 01:16:53OS組み込みにしてもらうしか無いと思うが…
さすがにそのレベルだとプログラミングなんかやるもんじゃないと思う
0278デフォルトの名無しさん
2009/10/12(月) 01:33:56static int test = 1;
for(int i=0;i<test;i++){
}
これだと定数ではないのでダメなんだろうけど
(const int test = 1にすると動いたので)
でも
static int test = rand() % 1 + 1;
にすると動くのはなぜ?
0279デフォルトの名無しさん
2009/10/12(月) 01:48:08for(int i=0;i<test;i++){
}
でも動くでしょ。
0280デフォルトの名無しさん
2009/10/12(月) 01:48:16それは本当にダメだったのか?
エラーメッセージは?
0281デフォルトの名無しさん
2009/10/12(月) 02:01:22動かないですねぇフリーズします。
でもこのやり方でブレークポイントで止めて数値を見ると0x01' 'って
数字の横に変な文字化けみたいなのが出てるんですが…
0282デフォルトの名無しさん
2009/10/12(月) 02:09:41多分、testに代入してる
0283デフォルトの名無しさん
2009/10/12(月) 02:16:17Unix系向けのオープンソースをWindowsで無理矢理動かしたり移植品使うと
大体ヘンテコなトラブル起きるし情報も少ないし対応も遅いしロクな事がないから嫌なんだ
いくらインスコが楽になってもそれは変わらない
0284デフォルトの名無しさん
2009/10/12(月) 02:28:16別のプログラムで確認するとどのやり方でも動きました。
つまり、このプログラムだけなぜかおかしな動きをするということっぽいです。
原因か対処方わかります?
0285デフォルトの名無しさん
2009/10/12(月) 02:32:17↓こっちのスレで聞いたほうがよくないか?
http://pc12.2ch.net/test/read.cgi/tech/1187922645/
0286デフォルトの名無しさん
2009/10/12(月) 02:36:22for文の中身が怪しい。少なくともソース書いてくれなきゃ誰もそれしか言えない。
>>283
ActivePerlはWindows専門のメンテナがやってるだけあって、かなりまともに動くよ。
ppmでモジュール自動インストールできたり、この手のモノの中ではかなり便利。
まあposix互換の問題とかはつきまとうけどさ。
0287デフォルトの名無しさん
2009/10/12(月) 02:36:30エスパーっぽいんですが、この部分に関係している部分はなさそうなんです。
というか今確認したんですが、
static int test = 1; for(int i=0;i<test;i++)
とすると今度はフリーズではなくて0x64が代入されてるんですが…
原因が全くわかりません
0288デフォルトの名無しさん
2009/10/12(月) 02:38:300289デフォルトの名無しさん
2009/10/12(月) 02:40:33他ではいじってないです
というより0x64'd'というdという意味不明な文字が出てます。
後for文の中はすべてコメントアウトにしてもなります
0290デフォルトの名無しさん
2009/10/12(月) 02:41:33まあ、一番可能性が高いのはポインタの操作しくって変な所書きまくってるんだろな。
0291デフォルトの名無しさん
2009/10/12(月) 02:41:42それがいやならエスパースレで祈れ。
0292デフォルトの名無しさん
2009/10/12(月) 02:53:57関数の中身ですが、問題のfor文以外全てコメントアウトと
for文の中身もコメントアウトしてもなります…
となると関数以外となりそうなのですが…原因を探してみます。。。
0293デフォルトの名無しさん
2009/10/12(月) 04:27:430294デフォルトの名無しさん
2009/10/12(月) 10:38:28おとなしくJavaかC#に乗り換えることをお勧めします
0295デフォルトの名無しさん
2009/10/12(月) 10:43:580296デフォルトの名無しさん
2009/10/12(月) 11:12:24ほんとに自動変数を知らなかっただけ?
0297デフォルトの名無しさん
2009/10/12(月) 12:04:56#include <stdio.h>
int main(){
static int test = 1;
for(int i=0;i<test;i++){
printf("i = %d, test = %d\n", i, test);
}
return 0;
}
出力結果
i = 0, test = 1
全く問題無く動いたぞ。(VisualC++2008)
0298デフォルトの名無しさん
2009/10/12(月) 12:20:39回答者に対して自分の情報を提示しないことを
頑張って頑張って頑張り抜くんだろうな。
0299デフォルトの名無しさん
2009/10/12(月) 12:37:57または単純に恥ずかしいとかくだらない理由かもしれないが
0300デフォルトの名無しさん
2009/10/12(月) 12:55:23最小限のコードのほうが多分バイト数少ないだろうな・・・。
0301214
2009/10/12(月) 13:21:51いや、Javaは今勉強中で仕事はずっとC++。
>ようするに214は、そこでjoinしたくないだけだと思う。
そう。joinしたら別スレッドでやる意味ないしね。
newせずスタックに作るとスコープを抜けるときにjoinすることになるよね。
伝わってないのかも知れないけどthreadをnewするのは非同期な関数の中でというのを想定してる。
予断だけどQtにグローバルなスレッドプールオブジェクトがあるね。
スレ違いだけどJavaでnewしたThreadはスレッドの停止後にGCがThreadを開放してくれるのかな?
Javaのサンプルには良く載ってるけど。
>>239
Java厨でないって。人に聞く態度じゃないけど聞いてもない人が得意顔でレスしてるからついね。
0302デフォルトの名無しさん
2009/10/12(月) 13:28:14だが、この質問者を見てると、最小限のコードを切り分けるのは無理そうではなかろうか
0303デフォルトの名無しさん
2009/10/12(月) 13:42:13別に俺は回答する知識はないんで、関係ないんだけど
いまいち欲しいものがわからない。
処理が終了したら、自動で消滅するself deleteを持つスレッドが欲しいの?
>threadをnewするのは非同期な関数の中でというのを想定してる。
これもわからない・・
ローカルスコープのスレッドオブジェクトを、非同期な別の関数によって生成する?
なわけないよなあ。
0304デフォルトの名無しさん
2009/10/12(月) 13:44:57C++とC#の両方を使いこなせている奴ならC++を崇拝する道理が無い
0305デフォルトの名無しさん
2009/10/12(月) 13:48:300306デフォルトの名無しさん
2009/10/12(月) 13:58:25知ってる人に直接聞けばいいのに
0307デフォルトの名無しさん
2009/10/12(月) 14:05:12匿名掲示板を使うんだろ。
このシステムは合理的でとても良いと思うんだけど、
残念なことに、使う人間がバカ過ぎてまともに機能しない。
0308214
2009/10/12(月) 14:14:25いや、こっちも大した知識はないよ。
Javaのサンプルを参考に話してたからself deleteするものが理想だということかな。
>これもわからない・・
ボタン押下されたときにイベントハンドラから別スレッド起動して、それに重い処理(画像の加工)を任せて
待機なしでイベントループに戻るとかの良くあるやつを言ってたけど伝わってなかった?
JavaのサンプルだとハンドラでThreadをnewして放置じゃなかったかと思う。
C++の場合、みんなどんな風にやってるのかなと思って聞いてる。
下手すると(前述のlistを使うなど)ボタン押される度にスレッドオブジェクトが増加するでしょ?
>>304が言ってるC#の、BeginInvokeのようなものがあると良いなという話。
今ちょうどC#の解説ページを見ていて思った。
0309デフォルトの名無しさん
2009/10/12(月) 14:24:53専門用語一杯知ってる俺カコイイ!みたいな
0310214
2009/10/12(月) 14:26:27そう聞こえたらごめんなw。
0311デフォルトの名無しさん
2009/10/12(月) 14:28:26それで、>>230の言う>>228のjoinなし
{ // local scope
boost::thread(f);
}
だと何か問題あるの?
0312デフォルトの名無しさん
2009/10/12(月) 14:28:38どこにでもいるよ。
それ自体が「そういうのを鋭く見破って言葉にする俺カコイイ」だったりするんだけど。
0313214
2009/10/12(月) 14:32:51以前に自分でこさえたときはやっぱりスレッドプール使った。
そんときboost::thread_groupも見たので>>219が適当にトンデモなこと言ってるなと思ったしlistがどうとかもね・・・。
苦笑するしかなかった訳。
0314デフォルトの名無しさん
2009/10/12(月) 14:34:01さんざんめんどくせぇ思いをしてるせいで、Javaがどうこう言いながらnewが
どうたら言われると、またその類なんじゃねーのかっていう気持ちになっちゃって
まともに読む気になれないのはある
0315デフォルトの名無しさん
2009/10/12(月) 14:37:14スレ違いだが、C#のデリゲートのBeginInvokeは例外を捕捉するためなどの理由から、
あとでEndInvokeを呼ばないといけないので、C++でdeleteから逃れられないのとそう変わらない状況だよ。
0316デフォルトの名無しさん
2009/10/12(月) 14:40:21{ // local scope
boost::thread th(f);
}
の書き間違いだと思って話すけどfが完了する前にスコープ抜けてthが消えるとどうなるの?
というか、ほぼ100%そうなるだろうけど。
後、基本的にth.join()はした方が良いんでない?
0317デフォルトの名無しさん
2009/10/12(月) 14:42:570318デフォルトの名無しさん
2009/10/12(月) 14:43:34>>214の内容で伝わるわけないだろう…
「ローカルスコープ」という単語の使い方が間違ってるからみんな混乱したんだぜ。
最初に「イベントハンドラでスレッドを生成したい」と言っていれば
こんなに責められたりしてないよ。
0319214
2009/10/12(月) 14:46:24関数 {
{
}
}
0320214
2009/10/12(月) 14:47:30「ローカルスコープ」って使い方間違ってたのか。
関数 {
{
// このスコープってなんていうの?
}
}
0321デフォルトの名無しさん
2009/10/12(月) 14:50:510322デフォルトの名無しさん
2009/10/12(月) 14:51:17delete thisすりゃいいだけなんでないの?
0323デフォルトの名無しさん
2009/10/12(月) 14:54:54>>227で既出。実行中のスレッドが止まることはない。
http://www.boost.org/doc/libs/1_40_0/doc/html/thread/thread_management.html#thread.thread_management.thread.destructor
これが気持ち悪い、または問題があるなら>>322方式でしょ。
0324デフォルトの名無しさん
2009/10/12(月) 15:19:27でもdelete thisするとして実装はどうするの?
Windowなんかはcloseされたときにやれば良いけどね。
struct actor {
~actor() { th_.join(); }
void run() {
... // メインの処理
// 後処理
delete this;
}
thread th_;
};
だとrunを抜けてないときにdelete thisだと~actorのjoin()で無限に待機しそう。
0325デフォルトの名無しさん
2009/10/12(月) 15:26:540326デフォルトの名無しさん
2009/10/12(月) 15:31:17joinは必須だと思うけど。
runの中でjoinするの?
0327デフォルトの名無しさん
2009/10/12(月) 15:48:370328デフォルトの名無しさん
2009/10/12(月) 15:54:52特に今の例みたいな処理を投げっぱなしにする場合なんか使いようがない。
それに最後にjoin必須ならC++的にはとっくにデストラクタでjoinする仕様になるだろjk。
0329デフォルトの名無しさん
2009/10/12(月) 15:55:26でthread::~threadでCloseHandleするのだと思ってたけど。
0330デフォルトの名無しさん
2009/10/12(月) 16:13:050331デフォルトの名無しさん
2009/10/12(月) 16:22:100332デフォルトの名無しさん
2009/10/12(月) 16:31:54デタッチするとスレッド終了時にスレッドのスタックが開放されることが保障されるんだね。
mainが終了するまでにサブスレッドが終了してなくても問題ないの?
0333デフォルトの名無しさん
2009/10/12(月) 16:36:100334デフォルトの名無しさん
2009/10/12(月) 16:51:05どうしたら出来るようになるでしょうか?
http://d.hatena.ne.jp/rayfill/20090304
0335デフォルトの名無しさん
2009/10/12(月) 18:39:08Linux&gccで動くようになったら考えてやってもいい
0336デフォルトの名無しさん
2009/10/12(月) 18:40:59それ以外はPython&C++
全部C++で作ることはなくなった
0337デフォルトの名無しさん
2009/10/12(月) 18:58:40小物って例えばどんなプログラム?
文字列とかファイル操作とか?
0338デフォルトの名無しさん
2009/10/12(月) 20:57:08基本的にはどんなアプリでもC#で作って
どうしてもC++でないと実現出来ないorそうすることで効率がよくなる機能だけを
C++で小さな部品として作る感じだな
もしくはクライアントの環境がC#NGな場合のみ渋々C++で作る感じ
0339デフォルトの名無しさん
2009/10/12(月) 21:10:58使う人増えたほうがM$もうれしいんじゃないのか?
0340デフォルトの名無しさん
2009/10/12(月) 21:12:300341デフォルトの名無しさん
2009/10/12(月) 21:20:28OSを支配することが世界を支配することを意味していたけど
今ではそうでは無くなったから情熱が消え失せたんだろう
M$CEOのバルマーも「M$がGoogleになれなかった」ことが「人生最大の失敗」だったって言っているしな
0342デフォルトの名無しさん
2009/10/12(月) 21:23:400343デフォルトの名無しさん
2009/10/12(月) 21:29:52クライアントには受けが悪いが。
0344デフォルトの名無しさん
2009/10/12(月) 21:35:28C#はC++に比べて標準のライブラリが充実しているのは大きい。C++は開発効率が採用から軌道に乗るまでが大変。
GCがあるのは一見楽なようだけど、リソース破棄があいまいになっていろいろ落とし穴がある。
shared_ptrが正式に仕様入りしたらC++のリソース管理はC#と大差なくなるな。
0345デフォルトの名無しさん
2009/10/12(月) 21:39:07C#アプリは何もしないで動くけど
C++アプリはC++ Redistributable Packageをクライアントに入れてもらわないと動かないからな
どっちがクライアント受けが悪いかは明白だな
0346デフォルトの名無しさん
2009/10/12(月) 21:41:230347デフォルトの名無しさん
2009/10/12(月) 21:56:55Boostのshared_ptrは今のままでも十分現役バリバリで使えると思うし、使ってるけど、
何か問題あるのかな。
0348デフォルトの名無しさん
2009/10/12(月) 21:57:460349デフォルトの名無しさん
2009/10/12(月) 22:03:55いくつも似たようなのがあって良くわからん。
関数内で使用した物はいつも破棄するか、staticか、グローバルで良いだろ。
この三通りの方法で困る場合ってどんなのがあるんだよ?
0350デフォルトの名無しさん
2009/10/12(月) 22:07:180351デフォルトの名無しさん
2009/10/12(月) 22:09:130352デフォルトの名無しさん
2009/10/12(月) 22:12:51>いくつも似たようなのがあって良くわからん。
そりゃお前が分かろうとしてないだけだ…
オブジェクトのライフタイムが明確でない場合なんていくらでもあるだろう。
そんなときstatic変数で全部保持して、使用側にCloseHogeとか呼んでもらったりするワケ?
0353デフォルトの名無しさん
2009/10/12(月) 22:14:52vector<char*>とか? 関数内で破棄しなくても、これならいつでも破棄できるが。
0354デフォルトの名無しさん
2009/10/12(月) 22:17:48俺はもちろんshared_ptr依存症だけど、boostはあくまでも外部ライブラリなんで、導入に渋る人がいるし。
shared_ptrが標準に入れば(年内は無理そうだけど)何処でも気兼ねなく使えるってこと。
0355デフォルトの名無しさん
2009/10/12(月) 22:20:03車の製造工場からネジが1本付け忘れられた車が出荷されないのは
従業員の能力が高いからじゃないんだぞ?
0356デフォルトの名無しさん
2009/10/12(月) 22:20:42了解。まあ、そんなふうに渋る人はC++のことをこれっぽっちも理解していない、
理解する気もない奴なんだろうな。
0357デフォルトの名無しさん
2009/10/12(月) 22:21:36>いつも破棄するが。
当然shared_ptrはそれを間違いなく実行してくれる。100万のnewがあって間違いなく100万のdeleteを人手で書くことができるかってことだ。
>staticとがグローバルとか
そんな使い方はよせ。
0358デフォルトの名無しさん
2009/10/12(月) 22:21:470359デフォルトの名無しさん
2009/10/12(月) 22:23:08ポリモーフィズムを使用するときは、値でなくポインタを使わなければならない。
スマートポインタは確かに何種類かあるが、それらの一つ一つの違いを理解できない
なら、C++は止めたほうがいいよ。
0360デフォルトの名無しさん
2009/10/12(月) 22:23:26俺にはshared_ptrみたいなRAII無しに
例外安全なコードを書ける気がしないなあ
0361デフォルトの名無しさん
2009/10/12(月) 22:24:34これだったらauto変数やSTLで出来るんだが。
オーバーヘッドは、汎用性のあるhared_ptrより小さいだろう。
0362デフォルトの名無しさん
2009/10/12(月) 22:25:29GCとスマートポインタは全く別概念。スマートポインタはオブジェクトの破棄時に
deleteしてくれるから、newされたオブジェクトの破棄時をコントロールできる。
GCはできない。リソースはファイル、ソケット、スレッド等、メモリだけではないので、
GCだけでは不備。
0363デフォルトの名無しさん
2009/10/12(月) 22:31:56autoがdeleteしてくれるの?
STLがdeleteしてくれるの?
0364デフォルトの名無しさん
2009/10/12(月) 22:33:19shared_ptrの構築・破棄におけるパフォーマンス測定
http://www.cycleof5th.com/tips/index.php?date=2009-02-26
パフォーマンス測定では、RdTscを使って平均的なクロック数を測定する。
測定は、Windows XP/Core 2 DuoのPCで行った。
shared_ptrに付け加え、自動変数・new/delete・auto_ptr・CAutoPtr・vector<shared_ptr>・CAutoPtrArrayについて
CStringのオブジェクトの構築・破棄に対して調査した。
一つのオブジェクトの構築・破棄
自動変数として使用する場合と比べ、shared_ptrの構築・破棄に10倍以上のクロック数がかかっている。
また、CAutoPtrやauto_ptrに比べ2.3倍のクロック数がかかっていることがわかる。
複数のオブジェクトの構築・破棄
CAutoPtrArrayと比べvetor<shared_ptr>の構築・破棄に約3倍のクロック数がかかっていることがわかる。
結果としては、何度も構築・破棄するようなオブジェクトは自動変数で割り当てるのがもっとも速度が早いことがわかる。
0365デフォルトの名無しさん
2009/10/12(月) 22:35:24aruclass *A = new aruclass; → aruclass A;
char *p= new char [100]; → string p(100,'\0');
でOK
0366デフォルトの名無しさん
2009/10/12(月) 22:39:37もっともshared_ptrのオーバーヘッドが問題になるような使い方をしているかは知ったこっちゃないが
次期標準にはunique_ptrっていう原理的にはゼロオーバーヘッドなスマートポインタも入るんだぜ
自動変数で十分って言ってる人は、C++でOOPをしたことがないのが明らか
自動変数だけでどうやってファクトリ書くんだ?
0367デフォルトの名無しさん
2009/10/12(月) 22:40:090368デフォルトの名無しさん
2009/10/12(月) 22:40:110369デフォルトの名無しさん
2009/10/12(月) 22:45:49仮に10倍以上のクロックがかかっても(実際にはauto_ptrと比較するべきなので数倍)、
それはアプリケーション自体の実行時間のいったい何%かが問題。はっきりいって誤差レベル。
newやdeleteの実行時間に比べればわずかなものではないかな。
0370デフォルトの名無しさん
2009/10/12(月) 22:49:03C++にてGUIを作成することは可能でしょうか
目的は簡単なタブ選択から、あるテキストファイルに書式通りに出力することなのですが。。
linux環境で使えるものを作る必要があり、なにかないかと探しているところです。
すいませんがよろしくお願いいたします
0371デフォルトの名無しさん
2009/10/12(月) 22:49:050372デフォルトの名無しさん
2009/10/12(月) 22:49:520373デフォルトの名無しさん
2009/10/12(月) 22:51:03Qtとかfirefoxが使ってるのとか。
0374デフォルトの名無しさん
2009/10/12(月) 22:51:17QtやwxWidgetsのスレを見ると作れるようになります。
0375デフォルトの名無しさん
2009/10/12(月) 22:54:21A関数を呼ぶ前にB関数を必ず呼ぶ必要があるっていうルールを平気で作っちゃう人なんだろうな
0376デフォルトの名無しさん
2009/10/12(月) 22:54:56アトミック操作がある割には速いと思うよ。
0377デフォルトの名無しさん
2009/10/12(月) 22:55:55そこんところの速度が気になるなら、メモリプールくらい使うでしょ普通。
vectorだって、reserve()とかするだろうしさ。
0378デフォルトの名無しさん
2009/10/12(月) 22:56:30実体メンバで済むのをコンストラクタで new する奴なら腐るほどいるが根は同じだな
C でも固定でいい配列をいちいち malloc するガイキチいるし
0379デフォルトの名無しさん
2009/10/12(月) 22:59:240380デフォルトの名無しさん
2009/10/12(月) 23:00:44pimpl とかインターフェースクラス継承とか。
0381214
2009/10/12(月) 23:02:43mainが終了するまでにサブスレッドが終了してなくても問題ないの?
0382デフォルトの名無しさん
2009/10/12(月) 23:07:490383デフォルトの名無しさん
2009/10/12(月) 23:07:52shared_ptrなど使う必要もない。auto_ptrもshared_ptrとは使用する場面が違う。
それなのにパフォーマンスの計測結果を出されても意味がないと思う。
0384デフォルトの名無しさん
2009/10/12(月) 23:10:03君は人に訊かなくても大丈夫だから一人で頑張りなよ。
0385デフォルトの名無しさん
2009/10/12(月) 23:10:17つーかぶっちゃけお前がどういう構造の中でどこでワーカー走らせてどこでどう
終わらせたいのかわかんね
0386デフォルトの名無しさん
2009/10/12(月) 23:13:06つうかprivateの完全隠蔽とかそんな気にするもんなのかな?
どうせtemplate使うとそんなのできないんだし気にしてもしゃーないと思うんだが
もちろんヘッダ依存やクラスサイズが気になる場合はpimpl使うこともあるけど徹底するほどでもないと思う
0387デフォルトの名無しさん
2009/10/12(月) 23:13:32不要に使うのは損というのが判明する。とりあえず付けとくとパフォーマンスが悪い。
0388デフォルトの名無しさん
2009/10/12(月) 23:14:030389デフォルトの名無しさん
2009/10/12(月) 23:15:310390デフォルトの名無しさん
2009/10/12(月) 23:15:51それは自明だと思っていたが、世の中にはそうではない人もいる、だから、計測結果を
出すことにも意味はあるということは分かった。ありがとう。
0391デフォルトの名無しさん
2009/10/12(月) 23:18:54って教えてくれるドラクエの町人程度には有意義だ。
0392デフォルトの名無しさん
2009/10/12(月) 23:19:40JavaやC#の処理速度に対するアドバンテージが唯一のアイデンティティとして染みついているんだろう
0393デフォルトの名無しさん
2009/10/12(月) 23:20:08・例外安全を保ちたいとき
・単純に参照構造が複雑で管理がめんどくさいとき
・コンテナに入れるとき
・返り値でnewして返すとき
↑このへんはsmart_ptrで後は生ポインタかな
0394214
2009/10/12(月) 23:21:26joinしなくてもスレッドのスタックは開放されるけど、サブスレッドが終了する前に
メインスレッドが終了した場合はサブスレッドのスタックに積まれたオブジェクトは
デストラクタが呼ばれないよ。それが何を意味するかはご存知だろう。
つまり基本的にboost::threadはjoinすべき。
スレッドプールを利用した方が良いってこったね。
スレッドプールは最後に必ずthreadをjoinできるからね。
0395デフォルトの名無しさん
2009/10/12(月) 23:23:110397デフォルトの名無しさん
2009/10/12(月) 23:24:120398デフォルトの名無しさん
2009/10/12(月) 23:25:020399デフォルトの名無しさん
2009/10/12(月) 23:30:020400デフォルトの名無しさん
2009/10/12(月) 23:31:21JAVAやC#を使ってるとリソースの管理があやふやになってスレッドで悩むしな。
0401デフォルトの名無しさん
2009/10/12(月) 23:31:520403デフォルトの名無しさん
2009/10/12(月) 23:39:57スレッドっていう現c++と無関係な仕様の言葉が
一緒に出てくると猛烈に楽しいです
もう少しヲチしたいのでがんばってください
0404デフォルトの名無しさん
2009/10/12(月) 23:40:17ヘッダ依存性
ヘッダ1つ変更しただけで全部のオブジェクトコンパイルしなおしとか嫌じゃない?
0405デフォルトの名無しさん
2009/10/12(月) 23:40:40後で試してみるわ。
0406デフォルトの名無しさん
2009/10/12(月) 23:41:44privateに何があるか知っていると解析しやすいとか
0407デフォルトの名無しさん
2009/10/12(月) 23:42:33スレッドを言語仕様に入れるとなると、今とは全く別の言語になるだろう。
というわけで、C++ではこれからもスレッドはライブラリのままだろうと予想。
0408デフォルトの名無しさん
2009/10/12(月) 23:44:03Pimplイディオムはヘッダの依存性問題を解決するためにある。そのために実行時の
パフォーマンスがやや低下するのがあまりC++的ではない気もする。
0409デフォルトの名無しさん
2009/10/12(月) 23:44:20なるへそ
0410デフォルトの名無しさん
2009/10/12(月) 23:45:38>何で試さなきゃいけなかったのw?
だろ・・・
0411214
2009/10/12(月) 23:46:33void func() {
A a;
...// すごく重い処理
}
int main() {
thread(&func).detach();
}
だとするとfunc内のaはデストラクタが呼ばれないよ。
ただしメインスレッドが終了する前にfuncを走らすスレッドが終了しなかった場合だけども。
0412デフォルトの名無しさん
2009/10/12(月) 23:46:53d-torもクソもあるかってのw
0413デフォルトの名無しさん
2009/10/12(月) 23:50:17別に変わらないと思うけどな。
0414デフォルトの名無しさん
2009/10/13(火) 00:04:100415デフォルトの名無しさん
2009/10/13(火) 00:04:230416デフォルトの名無しさん
2009/10/13(火) 00:10:25スレッドの終了とプロセスの終了の違いを勉強して出直してこい
0417デフォルトの名無しさん
2009/10/13(火) 00:44:20どっちかっつーと、そっちの方が間違ってない?
0418デフォルトの名無しさん
2009/10/13(火) 00:49:220419デフォルトの名無しさん
2009/10/13(火) 00:49:330420デフォルトの名無しさん
2009/10/13(火) 00:52:34スレッドじゃなくてforkとかで別プロセスにやらせないと
0421デフォルトの名無しさん
2009/10/13(火) 00:56:36そうか?
main()が起動したら、早々にワーカースレッドに仕事を投げて、
自身は終了するって設計はありだと思うが。
main()自体が各ワーカースレッドの結果に関与しないなら尚更だ。
大体、mainだって1スレッドに過ぎないし、スレッド間で親子関係も無い訳だから
mainが終了した時点で問答無用でプロセスが終了するのは、強引すぎる気がする。
0422デフォルトの名無しさん
2009/10/13(火) 00:56:370423デフォルトの名無しさん
2009/10/13(火) 01:04:35だとしても、プロセス全体の終了を申告する何かがいないとOSが困るだろ
いつプロセスを破棄していいかわからん
それがmainである必要はないのかもしれないけど
0424デフォルトの名無しさん
2009/10/13(火) 01:07:49誰も知らない新事実発見おめでとうございますwwwwwwwww
0425デフォルトの名無しさん
2009/10/13(火) 01:08:45わざとのらりくらりと道を逸らす池沼っぷりは天才的だなw
0426デフォルトの名無しさん
2009/10/13(火) 01:09:32Windowsは
>If the thread is the only active thread in the process, the process is terminated.
と、あるから全てのスレッドが終了するまでプロセスは終了しないっぽいけど…
タメスノハメンドクセ
0427デフォルトの名無しさん
2009/10/13(火) 01:10:31どんな時でも行ける汎用的な物の話をしようとするからまとまらないんだろ。VM
じゃねーんだから。
で、分かってない奴も出てきてるし、相談者はそいつらの粗探しにばかり熱中して
まともな意見には全然反応しないし。
0428デフォルトの名無しさん
2009/10/13(火) 01:12:26だからmainを作って、それの終了==プロセスの終了処理に入るように今どきのOSはなってんの
ワーカースレッドはmainスレッドの子供。親子関係は存在する。
0429デフォルトの名無しさん
2009/10/13(火) 01:14:490430デフォルトの名無しさん
2009/10/13(火) 01:15:23threadの終了云々の時点でこのスレの話じゃねーだろ
0431デフォルトの名無しさん
2009/10/13(火) 01:17:570432デフォルトの名無しさん
2009/10/13(火) 01:23:17先に来たらアウトかと。
つーか、>>218がそもそもよく分からんけど、listの何が悪いんだろう。スレッドプール
なんかより気楽でいいんじゃね?
0433デフォルトの名無しさん
2009/10/13(火) 01:27:34シグナル全部マスクして、Termが来たときだけハンドラでjoinするような?w
0434デフォルトの名無しさん
2009/10/13(火) 01:41:11struct S{ A(){ A(); /*上のAを呼びたい*/ } };
これどうやって名前解決を上の方にもってかせることができますか?
0435デフォルトの名無しさん
2009/10/13(火) 01:42:050436デフォルトの名無しさん
2009/10/13(火) 02:00:330437デフォルトの名無しさん
2009/10/13(火) 02:07:120438デフォルトの名無しさん
2009/10/13(火) 02:31:26「俺以外みんな馬鹿」特性も相性がいい
0439デフォルトの名無しさん
2009/10/13(火) 02:37:37struct A {
void gay() {
std::cout << reinterpret_cast<uintptr_t>(this) << std::endl; // 1192
}
};
main() {
uintptr_t val = 1192;
A *a = reinterpret_cast<A*>(val);
a->gay();
}
こんなことをしたいのですが、規格の範囲内で問題ありませんか?
Aは継承関係、メンバ変数および仮想関数は持たないものとします。
(申し訳ないですが、ケータイからの投稿なのでコードが雑になっているかもしれません)
0440デフォルトの名無しさん
2009/10/13(火) 02:43:390441デフォルトの名無しさん
2009/10/13(火) 02:45:04何でそんなことしたいのかは知らんけど
0442デフォルトの名無しさん
2009/10/13(火) 02:56:21farポインタやらなんかが混じってくると怪しそうだ。
uintptr_tとA *を同じようなものとして扱ってくれるという前提がいるかもしれん。
0443デフォルトの名無しさん
2009/10/13(火) 03:07:28「規格の範囲内で」っつーことなら多分未定義なんじゃね?
0444デフォルトの名無しさん
2009/10/13(火) 03:41:20どのように規格で決められてるかの問題に絞られそうだけど、詳しくはシラネ
それに実用目的でもなさそうだし
0445デフォルトの名無しさん
2009/10/13(火) 04:36:44言語仕様という言葉が悪かったかもしれないが、標準ライブラリに入るのは
知ってる。ライブラリでない部分の話。
0446デフォルトの名無しさん
2009/10/13(火) 04:52:26bool Hoge(void)
{
g++;
return true;
}
void Main(void)
{
bool b = Hoge();
if(b || Hoge())
{
g++;
}
return;
}
Main()を1回コールして、Main()のreturnまで処理が流れたとき、gの値はいくつになっているでしょうか?
0447デフォルトの名無しさん
2009/10/13(火) 05:06:16なんで2になになるのかわからないんなら、そうはっきり質問しろよw
0448デフォルトの名無しさん
2009/10/13(火) 05:07:180449デフォルトの名無しさん
2009/10/13(火) 05:13:38オマイラまじ頭いいな、自分は最近まで普通に3だと思っていたぞ。
少なくとも自分が読んだ教科書にはこんな説明は載っていなかった
0450デフォルトの名無しさん
2009/10/13(火) 05:13:50俺もまだ勉強がたりねぇなぁ
0451デフォルトの名無しさん
2009/10/13(火) 05:14:360452デフォルトの名無しさん
2009/10/13(火) 05:22:31誰でも簡単にわかるみたいなペラい本じゃなきゃ、結構罠っぽい所だから載ってそうなんだが。
Cとか他の言語知ってるの前提の本なら載ってないかなぁ。
0453デフォルトの名無しさん
2009/10/13(火) 05:43:170454デフォルトの名無しさん
2009/10/13(火) 06:05:100455デフォルトの名無しさん
2009/10/13(火) 06:40:070456デフォルトの名無しさん
2009/10/13(火) 06:48:52試してみた。たしかにデストラクタは呼ばれなかった。detachはthreadのメンバに
なかった。仕様か。
まあ、素直にjoinするか、重い処理はmainでやりなさいってこった。
ttp://codepad.org/MdHSEBpT
0457デフォルトの名無しさん
2009/10/13(火) 11:02:00main()は状態変数でwaitしてスレッド側が終了したら状態変数に通知すればいいだけじゃないの?
0458デフォルトの名無しさん
2009/10/13(火) 11:32:17それは結局joinしてるのと同じじゃないか? 214は投げっぱなしにしたいみたいなんで。
mainで何も書かずにいきなりreturnを呼びたいんだろう。
0459デフォルトの名無しさん
2009/10/13(火) 18:24:35>>426
mainが終了するとexitが呼ばれて(ここまでは標準の範疇)、
exitの中でExitProcessが呼ばれるので、結局実行中のスレッドは全部終了させられる。
0460デフォルトの名無しさん
2009/10/13(火) 19:05:17親子っていうのに親の方が長生きしなくちゃいけないのがアレだけど。
0461デフォルトの名無しさん
2009/10/13(火) 20:48:53バカが掘り返してきました。
以下、第2回戦の開催です
0462デフォルトの名無しさん
2009/10/13(火) 22:03:53動いてるからいいじゃん、とかいうタイプに思える
0463デフォルトの名無しさん
2009/10/13(火) 22:34:21なんでもかんでも抽象化すればいいと思うなよw
漏れのある抽象化がどんだけひどい事になってるか。まったく。
0464デフォルトの名無しさん
2009/10/13(火) 23:26:42まともにMTで書いたこと無い奴同士が頑張りすぎ
0465デフォルトの名無しさん
2009/10/13(火) 23:34:26さすが釈迦は違う
0466デフォルトの名無しさん
2009/10/14(水) 00:34:55いつから抽象化の話になったんだ。
0467デフォルトの名無しさん
2009/10/14(水) 01:31:25それがたまたまアセンブラでやってるか他の言語かで結局同じことをやっているかって違いだけだろ
ちょっと入り組んでくるとみんな自分の得意分野にタコツボを始めやがるから無用な混乱が際限なく続くわけで
はっきり言ってタコツボに食われてるような連中の無軌道な煽りはうるさいだけで、ちゃんと理論たてて襲ってこいよって感じでさー
0468デフォルトの名無しさん
2009/10/14(水) 01:38:560469デフォルトの名無しさん
2009/10/14(水) 01:56:420470デフォルトの名無しさん
2009/10/14(水) 02:21:23麻呂が猿だというでおじゃるか!?
麻呂は、麻呂は!
…ぐぅぅ、、さ、さるじゃ。。。
0471デフォルトの名無しさん
2009/10/14(水) 02:24:010472デフォルトの名無しさん
2009/10/14(水) 05:26:030473デフォルトの名無しさん
2009/10/14(水) 06:15:100474デフォルトの名無しさん
2009/10/14(水) 06:22:45LinuxではGCCをコンパイラとして使っています。
このプログラムをWindowsのMinGWでもコンパイル・実行できるようにしたいのですが
Windowsのシェルでは mv → move のため、そのまま流用ができません。
なので、プリプロセッサ または 実行時にWindowsであることを認識し
実行するコマンドを変えたいと思うのですが、何か方法があるでしょうか?
(ヘッダに自分で #define MINGW とか書いてifdefで判定というのは無しで)
0475デフォルトの名無しさん
2009/10/14(水) 06:26:24それかmvの実行前にmvの存在確認。
0476デフォルトの名無しさん
2009/10/14(水) 06:30:22実行時にWindowsであることを認識するなんて意味あるのか
0477デフォルトの名無しさん
2009/10/14(水) 07:13:34まあ #ifdef _WIN32 で条件コンパイルが必要になるケースももちろんあるけどな。
0478デフォルトの名無しさん
2009/10/14(水) 07:17:050479デフォルトの名無しさん
2009/10/14(水) 07:45:280480デフォルトの名無しさん
2009/10/14(水) 07:56:49int i;
i = 0;
func( &i );
func(int *i){...}
一応思ったとおりに動いてくれるけれど、こういう書き方ってどうなのかな?
int i;
int *p;
p = &i;
func( &p );
ってやらないといけないの?
0481デフォルトの名無しさん
2009/10/14(水) 07:59:28え?
0482デフォルトの名無しさん
2009/10/14(水) 08:21:540483デフォルトの名無しさん
2009/10/14(水) 08:25:26質問するなら相手がわかりやすいように書けよ
0484デフォルトの名無しさん
2009/10/14(水) 08:45:47iのアドレスを他の変数を経由してfuncに渡したいってんなら
func(p);
ポインタについての理解が足りてない。
0485デフォルトの名無しさん
2009/10/14(水) 10:37:05後者の最後は>>482だから>>484のように書き換えたとして、後者は冗長なだけ。
というか前者だけiに0を代入しているのが意味不明。>>483に同意。
0486デフォルトの名無しさん
2009/10/14(水) 10:39:34例の中の注目点が誰の目にも一箇所になるようにしてくれないとな。
0487485
2009/10/14(水) 10:40:58でもfunc(p);にしないと期待する動作にならない。
0488デフォルトの名無しさん
2009/10/14(水) 11:08:48仮引数、実引数ともにポインタ変数でなきゃダメなのかっていう質問じゃない?
どっちでもいいけど、普通後者みたいな回りくどいことはしない。
0489デフォルトの名無しさん
2009/10/14(水) 11:14:01なるほどそういう意味だったのか
0490デフォルトの名無しさん
2009/10/14(水) 11:55:08>コンパイルエラーにはならないか。
なる。int* が欲しいところに int** 渡してんだから。
0491デフォルトの名無しさん
2009/10/14(水) 14:59:48いるってことがよくわかった。
0492デフォルトの名無しさん
2009/10/14(水) 15:06:53この流れはそんなことがわかっちゃう流れとは程遠いということと、
普通の知能の人間はそんなこと小学校に入る頃にはわかるということと、
自分のその結論こそ、物分かりが悪く、相手が何を言っているのか
分かろうとしていない結果かもしれない可能性を疑う心が無いこと。
0493デフォルトの名無しさん
2009/10/14(水) 15:10:280494デフォルトの名無しさん
2009/10/14(水) 15:11:14なにがいいたいのかわからない
質問するなら相手がわかりやすいように書けよ
0495デフォルトの名無しさん
2009/10/14(水) 15:16:54質問じゃないんで。オウム返しはロボットみたいだよ。
> この流れはそんなことがわかっちゃう流れとは程遠いということと、
自分はすぐ分かったけど、普通はそうじゃないのか。
> 普通の知能の人間はそんなこと小学校に入る頃にはわかるということと、
これは意外。
> 自分のその結論こそ、物分かりが悪く、相手が何を言っているのか
> 分かろうとしていない結果かもしれない可能性を疑う心が無いこと。
言っているのは質問者であって、あとはそれに分からないと言っている
リアクションなんで、理解も何もなく、ああ、分からないんだなぐらい
しか分からない。
0496デフォルトの名無しさん
2009/10/14(水) 15:39:24> 質問じゃないんで。オウム返しはロボットみたいだよ。
質問だし、オウム返しではないね。
> 自分はすぐ分かったけど、普通はそうじゃないのか。
ガムの包み紙を見て、そこに宇宙の真理が書かれていることが突如「分かっちゃう」のと
同じだからなぁ。普通とは言い難い。
0497デフォルトの名無しさん
2009/10/14(水) 15:47:06えっ、そうなの?ってのは意外で驚いてる気持ちを表してるのであって、質問じゃないんだよ。
それで分からなかったら仕方ないけどね。
それと、483と同じ発言なんで、それについてオウム返しと表現しただけなんで。機械的な
繰り返し発言とでも言えば良かったかな。分かりやすいように。
> ガムの包み紙を見て、そこに宇宙の真理が書かれていることが突如「分かっちゃう」のと
> 同じだからなぁ。普通とは言い難い。
488も普通じゃないんだ。まあ、数が多いから普通って言葉を使うのかもしれないね。
0498デフォルトの名無しさん
2009/10/14(水) 15:49:26質問者の意図の推測なんてやっても報われない。
0499デフォルトの名無しさん
2009/10/14(水) 15:58:40ここで使ってる日本語ですら厳密には論理的でないのに、どうやって論理的な
判断ができるんだってこと。
質問者の意図の推測程度のことができないと、日々の業務もできないし、
人間関係も構築できない。
0500デフォルトの名無しさん
2009/10/14(水) 16:01:58低レベルな質問だからしょうがないのでは。
0501デフォルトの名無しさん
2009/10/14(水) 16:05:14ここでトレーニングしとかないと、低レベルな人間になって干上がっちゃうかもね。
0502デフォルトの名無しさん
2009/10/14(水) 16:05:46> 機械的な繰り返し発言とでも言えば良かったかな。分かりやすいように。
いや、この「分かりやすい」は無理に良い方に回ろうとしてるだけで、
正しくは「間違った日本語を使わずに、正しく言えば良かった」。
> 488も普通じゃないんだ。
>>488は推測しているだけで、質問者の質問がわかったわけではない。
簡単な努力で消すことが可能な複数の可能性を、質問者が平然と残していることだけ
なんでそんなに寛大なのかわからんけど。
0503デフォルトの名無しさん
2009/10/14(水) 16:08:06まぁ職場のレベルによるかな。
まず質問者にトレーニングが必要だけど。
0504デフォルトの名無しさん
2009/10/14(水) 16:15:27日本語等自然言語は辞書に載ってない使い方をしても許容されるもんだと思うよ。
似た概念なら読むほうもある程度補える。君が言うほどおかしい表現でもないと
思うが。揚げ足を取ってるつもりなのかもしれないけど。
推測云々の件は、分かったというのはどんなときも主観でしかありえないんで。
>>503
同僚ならトレーニングさせることもできるけど、顧客は難しいかもね。
0505デフォルトの名無しさん
2009/10/14(水) 16:21:49> 君が言うほどおかしい表現でもないと思うが。
基本、いい加減なことを書く側に甘いんだね。
> 同僚ならトレーニングさせることもできるけど、顧客は難しいかもね。
顧客なら、曖昧なところはこちらから聞き返して、意図の解釈を固めるでしょ。
それは、このスレの人間が「わからん」という反応をしたことの丁寧バージョンだ。
まさか、このレベルのいい加減な質問に対して折り返しの確認も取らず、「主観」で解釈して
それに基づいた回答だけして、よくわかってなさそうな先方がわかってないまま
「わかりました」とその話題終えちゃって、後々の負の布石を作るようなことはしないよね。
0506デフォルトの名無しさん
2009/10/14(水) 16:26:25まあ、ここは失敗できない場でもないし。
分かりにくい質問をしてきた相手にある程度推測や予断をして「こうなの?」って
聞き返すぐらいの余裕は欲しいよね。ただ分からんじゃ進歩なさそうだし。
0507デフォルトの名無しさん
2009/10/14(水) 16:38:59C++ とはまったく関係のない、どうでもいい話になると
そうやって湧いてくるのな、君らは。
0508デフォルトの名無しさん
2009/10/14(水) 16:39:55俺が悪かったよ。
以下C++スレに戻ります。
0509デフォルトの名無しさん
2009/10/14(水) 16:46:09そういうのを見ることで自意識が変に刺激されて、
それらのやり取りよりさらに意味の無いレスをしちゃうタイプだな、君は。
0510デフォルトの名無しさん
2009/10/14(水) 16:46:24悪い悪い。頭の固い連中を見てて、いてもたってもいられなくなって。
だが、わざと分からないと言って、質問者をトレーニングしていたのかも
しれないとも思えてきた。そこは反省。
以下、C++の話題をどうぞ。
0511デフォルトの名無しさん
2009/10/14(水) 16:57:55大丈夫よ。俺もすぐ理解した。
というかそうじゃなきゃその二つで悩まないもんな
0512デフォルトの名無しさん
2009/10/14(水) 17:00:320513デフォルトの名無しさん
2009/10/14(水) 17:15:540514デフォルトの名無しさん
2009/10/14(水) 17:25:01駄目な奴は駄目に決まってるんだから、そんなトートロジーを新たに指摘しても
仕方がない。
駄目な点を踏まえて質問に答えるなり、物分かりの悪い応対をして相手を
目覚めさせるなり、無視するなりすればいいんじゃないのか。
自分も本当に物分かりが悪くなってしまったら、相手と同じレベルに落ちてしまう
んで、それはまずいと思う。
0515デフォルトの名無しさん
2009/10/14(水) 17:27:57自分で調べても分からないとき、初めて質問してくるタイプの人間は、質問の仕方もうまい。
ちゃんと質問できる奴は大抵できる奴だと相場で決まってる、これ教える側の人間の常識ね。
0516デフォルトの名無しさん
2009/10/14(水) 17:32:52(自転車の乗りかたなどは文献や動画だけではどうしようもない)で、質問する
のも疑問はある。全部自分でできるのでは。
0517デフォルトの名無しさん
2009/10/14(水) 17:42:15お前宇宙工学の教科書渡されたら宇宙工学出来るようになるわけ?
物性論の教科書渡されたら物性論出来るようになるわけ?
専門的な事が全て自分だけで出来る超人なんてそうそういない。
ある程度までのレベルまでは行けるだろうが、人に頼らないと抜けられない壁もある。
そういう程度以上の質問なら歓迎なんだがな。
0518デフォルトの名無しさん
2009/10/14(水) 17:45:59対象を絞っていることを示してから言及している人に向かって
「そうじゃない分野もあるぞ!」ということをネチネチ語ってどうすんだろ。
0519デフォルトの名無しさん
2009/10/14(水) 17:47:55そりゃ人によるとしか。それに、C++はそれらの分野に比べれば楽なほうではないか?
詳しくは知らないが。
所詮は自分の眼鏡を通して好き嫌いを言っているだけに聞こえるな。その眼鏡は
人それぞれであって、混乱の元。それなら、十把一絡げにあらゆるレベルの質問者を
受け入れたほうが合理的ではないかとも思えるが、2chではそんな合意は無理か。
済まなかった。
0520デフォルトの名無しさん
2009/10/14(水) 17:51:22独学のスーパーハカーさんちーっすw
0521デフォルトの名無しさん
2009/10/14(水) 17:52:200522デフォルトの名無しさん
2009/10/14(水) 17:55:150523デフォルトの名無しさん
2009/10/14(水) 17:56:10両方の意見は一理あると思うけど、汎用的な言いくるめ方はどちらでも不可能だと思う。
0524デフォルトの名無しさん
2009/10/14(水) 18:00:090525デフォルトの名無しさん
2009/10/14(水) 18:06:15内容は全く違うのは当たり前だけど、ここで引き合いに出すのは全く的外れというわけでもない。
0526デフォルトの名無しさん
2009/10/14(水) 18:15:050527デフォルトの名無しさん
2009/10/14(水) 18:21:45そして大抵は興奮状態で用いられるし。
0528デフォルトの名無しさん
2009/10/14(水) 18:33:44意味不明な質問には意味不明だとレスが付くのは当然だよ。
0529デフォルトの名無しさん
2009/10/14(水) 18:49:130530デフォルトの名無しさん
2009/10/14(水) 18:55:160531デフォルトの名無しさん
2009/10/14(水) 18:56:44その読解は、本気で頭を使った本気の内容ですか?
0532デフォルトの名無しさん
2009/10/14(水) 18:59:15理解しようと努力するには頭を使わないといけないよ。
0533デフォルトの名無しさん
2009/10/14(水) 19:00:07結局、「そういう程度」がどういう程度なのか、肝心な点が抜けてるじゃないか
おまえさんの「好み」によらない客観的な基準を言ってみな
C++ は独学では習得できない、ということの証明から必要になるはずだが
0534デフォルトの名無しさん
2009/10/14(水) 19:02:330535デフォルトの名無しさん
2009/10/14(水) 19:03:26何がそんなに悔しかったんだよ
0536デフォルトの名無しさん
2009/10/14(水) 19:04:47意味不明だと言い返さない人がいると聞いて
0537デフォルトの名無しさん
2009/10/14(水) 19:07:06↓
意味不明です
↓
顧客「えっ」
これはないわ。
顧客が意味不明なことを言う
↓
例えばこういうことでしょうか?
↓
顧客「いや違う違う。それは──」
大体こんな感じじゃないの。
0538デフォルトの名無しさん
2009/10/14(水) 19:07:24君は客に向かって「あんたの質問は意味不明だ」と言い返すのかい?
0539デフォルトの名無しさん
2009/10/14(水) 19:15:260540デフォルトの名無しさん
2009/10/14(水) 19:15:29言い方は「もう少しわかりやすく説明してもらえませんか?」とか
「もう少し具体的に言い換えてもらっていいですか?」みたいにはなるだろうけど
意味のわからない質問に適当な答えを返すほど最悪なことはない
0541デフォルトの名無しさん
2009/10/14(水) 19:16:090542デフォルトの名無しさん
2009/10/14(水) 19:18:19金をくれる顧客じゃないから、
「もう少し具体的に言い換えてもらっていいですか?」
のような引き出し方をするのは面倒くさく、意味不明と突っぱねるという話だったようだよ
0543デフォルトの名無しさん
2009/10/14(水) 19:18:20それは状況によるし、はっきり言わないほうがいいときもあるよ。むしろ、
そっちのほうが多いか。推測して「こうですか?」と訊くほうが好ましいのでは。
0544デフォルトの名無しさん
2009/10/14(水) 19:20:280545デフォルトの名無しさん
2009/10/14(水) 19:28:11意味不明は同じじゃないだろ
0546デフォルトの名無しさん
2009/10/14(水) 20:05:37>>483は質問が情報不足である事を言っているし、>>485は1行目で分かる範囲の回答を出している。
一体、回答者にどれだけ求めているんだ?
0547デフォルトの名無しさん
2009/10/14(水) 20:10:04「何が言いたいのか分からない」でいいんじゃないか。
0548デフォルトの名無しさん
2009/10/14(水) 20:11:570549デフォルトの名無しさん
2009/10/14(水) 20:22:43一体、回答者にどれだけ求めているんだ?
→別に求めてはないだろう。各自の自主性を促してるだけで。
こんなの言葉遊びだろw
スレ違いの話をこれだけやっておいて何言っているんだ。
0550デフォルトの名無しさん
2009/10/14(水) 20:29:13レスがあるからレスしたまで。もういいだろ。C++の話に戻ろうぜ。
0551デフォルトの名無しさん
2009/10/14(水) 20:42:02「聞き方の指導」まで始めるから C++ から逸れるんだよ
0552デフォルトの名無しさん
2009/10/14(水) 20:47:580553デフォルトの名無しさん
2009/10/14(水) 21:02:07世話になりますた
0554デフォルトの名無しさん
2009/10/14(水) 21:43:04わかりづらい質問者よりも
意味の無いやりとりを延々と続ける
スレチな回答者ってことで
自重出来ない自称頭いい人は死んで欲しいよ
0555デフォルトの名無しさん
2009/10/14(水) 21:45:490556デフォルトの名無しさん
2009/10/14(水) 22:28:30お、早速バカ1号が釣られてきたな。
0557デフォルトの名無しさん
2009/10/14(水) 22:48:210-origne なのでバカ0号が >>554 になる。
0558デフォルトの名無しさん
2009/10/14(水) 23:02:14釣られボーグ002と003
0559デフォルトの名無しさん
2009/10/14(水) 23:02:58どうでもいいな。だからお前はバカなんだ。
0560デフォルトの名無しさん
2009/10/14(水) 23:03:240561デフォルトの名無しさん
2009/10/14(水) 23:04:290562デフォルトの名無しさん
2009/10/14(水) 23:07:02さて、第三ラウンドの相手はお前でいいのかな?
0563489
2009/10/14(水) 23:13:56俺が変に合いの手入れたから質問者を調子付かせてしまったのかなスマンかった。
0564デフォルトの名無しさん
2009/10/14(水) 23:15:310565デフォルトの名無しさん
2009/10/14(水) 23:18:370566デフォルトの名無しさん
2009/10/14(水) 23:25:580567デフォルトの名無しさん
2009/10/14(水) 23:34:220568デフォルトの名無しさん
2009/10/15(木) 00:24:240569488=508
2009/10/15(木) 00:31:09煽り屋がシャドウボクシングしてるようで訳がわからん。
一体何と戦ってるんだ?
いいかげんスレタイ読み直して、C++の話しようぜ。
0570デフォルトの名無しさん
2009/10/15(木) 01:22:060571デフォルトの名無しさん
2009/10/15(木) 01:38:34書き込み権を取得しないと書き込めないようにしようか
0572デフォルトの名無しさん
2009/10/15(木) 01:46:06信頼の失墜と挽回が蓄積されないから何をやってもリスクにならない
顔写真・住所氏名・クレジットカードの番号を晒さないと書き込めないようにすればマシになるんじゃね
0573デフォルトの名無しさん
2009/10/15(木) 03:08:490574デフォルトの名無しさん
2009/10/15(木) 03:19:39初級から段々レベルアップしていく問題集的なものってありますか?
0575デフォルトの名無しさん
2009/10/15(木) 03:27:06そういう意味では初心者用の本を読めとしか言えないかなぁ
取っつきやすさを求めないのならK&R
0576デフォルトの名無しさん
2009/10/15(木) 03:28:16適当に手広く知識を拾い集めてみてはいかがか。
その後EffectiveC++などに。
0577デフォルトの名無しさん
2009/10/15(木) 03:36:420578デフォルトの名無しさん
2009/10/15(木) 03:40:55C++と同時にC#を勉強することをおすすめします
C++だけやっていると馬鹿になるぞ
0579デフォルトの名無しさん
2009/10/15(木) 03:53:46アセンブラとLispとC++で十分
0580デフォルトの名無しさん
2009/10/15(木) 08:03:130581デフォルトの名無しさん
2009/10/15(木) 08:42:260582デフォルトの名無しさん
2009/10/15(木) 08:43:06まじでこの板はID導入すべきだと思う
0583デフォルトの名無しさん
2009/10/15(木) 08:44:33要はVBみたいなもんだ
0584デフォルトの名無しさん
2009/10/15(木) 09:18:400585デフォルトの名無しさん
2009/10/15(木) 09:19:270586デフォルトの名無しさん
2009/10/15(木) 09:49:59つまり馬鹿でもわかりやすいように作ってある
その為パフォーマンスもでない上MS専用なので
まだJavaやってる方がなんぼかマシ
0587デフォルトの名無しさん
2009/10/15(木) 09:51:220588デフォルトの名無しさん
2009/10/15(木) 09:54:08窓開発者は低レベルな奴が多いから仕方ないが・・・
0589デフォルトの名無しさん
2009/10/15(木) 09:59:220590デフォルトの名無しさん
2009/10/15(木) 10:00:48「馬鹿な僕は理解できませんでした」って意味?
0591デフォルトの名無しさん
2009/10/15(木) 10:21:32単に言語仕様だけをC++とC#で比較したら、どう考えてもC#の方が優れてるだろう
多重継承のような「使いようによっては使えるけど、ミスるとヤバい」的な仕様を
一切削ったC#は素晴らしい。
>>590
「理解出来ませんでした」って奴をバカにしてるようだけど、
凡マに理解出来ない言語仕様こそクソ。生産性を下げるだけでしょ?
今のプロジェクトでいるんだけど、
むしろC++の言語仕様とかには神みたく詳しいんだけど、
OSとかのことを全然知らない奴がいる。
700スレッド立てて通信するような設計をしててビックリしたよ。
IO多重化の概念を知らなかったらしい。
そういう奴に限ってC#、Javaなんかを批判してる。
0592デフォルトの名無しさん
2009/10/15(木) 10:24:210593デフォルトの名無しさん
2009/10/15(木) 10:29:40低レベルなお仲間同士で固まっていて幸せですね
0594デフォルトの名無しさん
2009/10/15(木) 10:43:390595デフォルトの名無しさん
2009/10/15(木) 10:51:09GC とかで喜んでてリソースリークでハマるような、自分を捉えられない痛い連中が後を絶たない
電子土方って何の対価でメシ食ってるんだっけな
〜〜言語は、それを使う人が何を考えることができるかを決めてしまう〜〜
・・・とある有名本に書いてあったような気がするが
子供のオモチャと違ってプロの道具は危なくていいんだよ
根本的に要求が違うんだから
0596デフォルトの名無しさん
2009/10/15(木) 10:54:18仲良くね。
0597デフォルトの名無しさん
2009/10/15(木) 10:55:56でもまぁ、プロも一般道では市販車で移動した方が安心安全なわけで。
0598デフォルトの名無しさん
2009/10/15(木) 11:12:01null pointer
0599デフォルトの名無しさん
2009/10/15(木) 12:20:500600デフォルトの名無しさん
2009/10/15(木) 12:34:420601デフォルトの名無しさん
2009/10/15(木) 12:35:46なるほど宿題スレか その手があったか
ありがとうございました
>>578
同時進行できるほど賢くないけど一応やってみます、ありがとうございました
0602デフォルトの名無しさん
2009/10/15(木) 12:39:060603デフォルトの名無しさん
2009/10/15(木) 12:41:07わかりやすい解説サイトとかないでしょうか?
int a[] = { 10, 20, 30 };
int *p = a + 1;
int b = --*++p;
0604デフォルトの名無しさん
2009/10/15(木) 12:44:47素直に基礎をもっと進めろってことか・・・
0605デフォルトの名無しさん
2009/10/15(木) 12:44:560606デフォルトの名無しさん
2009/10/15(木) 12:45:47それなら、そういうことなんだろう。
0607デフォルトの名無しさん
2009/10/15(木) 12:45:52http://lmgtfy.com/?q=operator+precedence+c%2B%2B
0608デフォルトの名無しさん
2009/10/15(木) 12:49:14ミスるとヤバいって引用を見なかったことにしているならわからんでもないが
エアクッションを GC にでも喩えたかったのかね
0609デフォルトの名無しさん
2009/10/15(木) 12:51:29立ち位置を明確に。C#が安全でないと言いたいのだろうが。
0610デフォルトの名無しさん
2009/10/15(木) 13:00:25なるだけで、流して安全に書くにも問題は無いよ(つーかパレートの法則的に80%
のコードは実際そのように書かれるし)
ただ、ごく簡単な仕事にまで使うと開発コストが高いのは事実
でも、簡単な仕事の開発コストを下げるのはPerlやPythonやRubyの方が遙かに得意
0611デフォルトの名無しさん
2009/10/15(木) 13:05:18互いの長所を十二分に活かせて開発速度が圧倒的に速い
0612デフォルトの名無しさん
2009/10/15(木) 13:05:490613デフォルトの名無しさん
2009/10/15(木) 13:07:51どの程度の信頼性なのかは知らないけど。
0614デフォルトの名無しさん
2009/10/15(木) 13:09:38もう結構前になるから、初物のバグもある程度は取れてそうだし。
0615デフォルトの名無しさん
2009/10/15(木) 13:09:53boost::asio
0616デフォルトの名無しさん
2009/10/15(木) 13:11:29Boostを使ってもいいし、Cと同様にシステムコール直叩きをしてもいい
0617デフォルトの名無しさん
2009/10/15(木) 13:11:48基本スタイルはとりあえず全部Pythonで作成し、高速化したい部分をC++
.NETは全くしらないけど、パフォーマンスが出せるならそれも有りだと思う
0618591
2009/10/15(木) 13:12:490619デフォルトの名無しさん
2009/10/15(木) 13:13:350620デフォルトの名無しさん
2009/10/15(木) 13:25:400621デフォルトの名無しさん
2009/10/15(木) 13:27:33PythonがPerlやRubyよりC++と親和性が高いと言いたいのだろうか?
理由とかある? 参考までに。
0622デフォルトの名無しさん
2009/10/15(木) 13:29:560623デフォルトの名無しさん
2009/10/15(木) 13:33:21俺プロですって言ってるみたいだなw
0624デフォルトの名無しさん
2009/10/15(木) 13:37:170625デフォルトの名無しさん
2009/10/15(木) 13:40:15こぞって集まってる奴は最強環境になってるだろうなぁとは思う
ただ、わざわざ覚えるほどのことではないとも思ってる
0626デフォルトの名無しさん
2009/10/15(木) 13:41:35欧米系とは欧米の技術者たちという理解でよろしいか?
0627デフォルトの名無しさん
2009/10/15(木) 13:42:41うむ
あっちじゃ完全にPython、たまに変わり種がRubyやPerl、って感じじゃね?
0628デフォルトの名無しさん
2009/10/15(木) 13:43:46どんなにぐっちゃぐちゃでもいい、って人達の楽園だったのに
0629デフォルトの名無しさん
2009/10/15(木) 13:45:210630デフォルトの名無しさん
2009/10/15(木) 14:00:50分からなくなったら括弧を付ければいい
0631デフォルトの名無しさん
2009/10/15(木) 14:01:30C++との親和性が高いのは事実だけど他の言語と比較して・・・というのであれば詳しくないのでよくわからんです。
0632デフォルトの名無しさん
2009/10/15(木) 14:28:31ってぐらいの遅さではあるけどな
0633デフォルトの名無しさん
2009/10/15(木) 15:49:56いくらPythonがかなり頑張ってると言ってもねぇ
0634デフォルトの名無しさん
2009/10/15(木) 17:16:49何言ってるんだか(微笑)って感じですかね
0635デフォルトの名無しさん
2009/10/15(木) 18:01:29こういう奴らって頭がおかしいのかな?四則演算より複雑な場合は括弧は必須だろ
コードってのは自分だけが読むものじゃないんだろメカニカルには無意味でも読み手のコストを優先すべき
C++ってのは表現の自由度が高すぎて危険な暗黙的表現をいくらでも使えるってのが言語仕様の大きな欠点の一つなんだろ
言語仕様が糞だからコーダーがいちいち神経を磨り減らして気を配らなきゃいけないのに
>>605>>607>>630こんなお粗末な考えしか出来ない馬鹿はC++を扱う資格なんて無いねおとなしくC#でも使っているべき
0636デフォルトの名無しさん
2009/10/15(木) 18:06:310637デフォルトの名無しさん
2009/10/15(木) 18:06:370638デフォルトの名無しさん
2009/10/15(木) 18:08:020639デフォルトの名無しさん
2009/10/15(木) 18:10:24算術以外の演算子の優先順位を「暗黙的表現」するなってことなら
void (hoge::hage)()
{
}
とか書けって??
0640デフォルトの名無しさん
2009/10/15(木) 18:10:58ややこしくなるからw
0641デフォルトの名無しさん
2009/10/15(木) 18:18:04「分からなかったら括弧を付ければいい」っていう「思想」がどれだけ危険なことであるか
C++を扱う者"だからこそ"よく理解しておくべきだな
そしてこの危険な「思想」の多くを実際に言語仕様が許容している事実もな
0642デフォルトの名無しさん
2009/10/15(木) 18:21:30自分が本当にアホではないのか今一度考えるべきだね
0643デフォルトの名無しさん
2009/10/15(木) 18:22:323ヶ月前に自分が書いたコードなのに
意味がよく理解できないとか普通…^^;
0644デフォルトの名無しさん
2009/10/15(木) 18:23:120645デフォルトの名無しさん
2009/10/15(木) 18:24:51array[index]ではなく(array[index])と書くべきなのだろう。関係演算も四則演算より複雑なので当然にして、
a > bではなく(a > b)と書くことになるだろう。従って、while (array[index] > 0) function();と書く代わりに
while (((array[index]) > 0)) (function(()));と書くわけだな。
0646デフォルトの名無しさん
2009/10/15(木) 18:26:38まさにお前みたいなのを優秀なアホって言うんだよ
プロジェクト全体にとって危険因子でしかない
0647デフォルトの名無しさん
2009/10/15(木) 18:27:13((((;゜Д゜))) っぽいな
0648デフォルトの名無しさん
2009/10/15(木) 18:30:560649デフォルトの名無しさん
2009/10/15(木) 18:36:36ほめてくれてありがとう。
0650デフォルトの名無しさん
2009/10/15(木) 18:36:390651デフォルトの名無しさん
2009/10/15(木) 18:39:12これぐらいほっといてほしいよ。
expression1 || expression2 && expression3 // <-- Warning
0652デフォルトの名無しさん
2009/10/15(木) 18:39:210653デフォルトの名無しさん
2009/10/15(木) 18:43:29ありがとう。出来るだけ()つけるようにします。
もう一つ質問なんですが、enumのint昇格って
ビット数は必ず保持されるものなんでしょうか?
unsigned int a = 0xFFFF;
signed char b = 0xFF;
enum eNUM { c = 0xFF };
const char d = 0xFF;
unsigned int result_b = a & b; //0xFFFF
unsigned int result_c = a & c; //0x00FF << これがコンパイラ依存なのか知りたい
unsigned int result_d = a & d; //0xFFFF
0654デフォルトの名無しさん
2009/10/15(木) 18:49:310655デフォルトの名無しさん
2009/10/15(木) 18:51:490656デフォルトの名無しさん
2009/10/15(木) 19:13:39lisp 、いや、なんでもない。
0657デフォルトの名無しさん
2009/10/15(木) 19:42:13expression1 || expression2 && expression3
だとどういう挙動になるの?
0658デフォルトの名無しさん
2009/10/15(木) 19:45:390659デフォルトの名無しさん
2009/10/15(木) 19:48:46もともとcはintだから整数の昇格は関係ない。
result_bとresult_cは常に同じ結果で、result_dだけが環境依存
0660デフォルトの名無しさん
2009/10/15(木) 19:51:00signed char b = 0xFF; // 未定義
const char d = 0xFF; // charがsingedな場合、未定義
0661デフォルトの名無しさん
2009/10/15(木) 19:55:26expression2もしくはexpression3が評価され、falseなら次にexpression1が評価され式全体の評価が終わり、
trueなら次にexpression2とexpression3で前回評価しなかった方が評価され、falseなら次にexpression1が評価され終わり、trueなら式全体の評価が終わる。
0662デフォルトの名無しさん
2009/10/15(木) 19:55:45コンパイル時の警告メッセージのこと?
-Wallオプション付けたら、
「hoge.cpp:XX: 警告: || と共に使われる && の周りでは括弧をつけることをお勧めします」
こんなのが出る。
0663デフォルトの名無しさん
2009/10/15(木) 20:01:450664デフォルトの名無しさん
2009/10/15(木) 20:02:580665デフォルトの名無しさん
2009/10/15(木) 20:06:45読みやすい書き方を教えてくれ
0666デフォルトの名無しさん
2009/10/15(木) 20:24:45if (true){
}
と
if (true)
{
}
のどちらを選択すべきかを数十ページに渡って解説しているような良書を読めば自ずと設計の何たるかが分かってくる
0667デフォルトの名無しさん
2009/10/15(木) 20:30:240668デフォルトの名無しさん
2009/10/15(木) 20:31:21>>663 の例はその括弧付けで良いと思うけど。
俺は怠惰だからこう書くかはわからんが、
そう書いた人を褒める事はあっても批判はしないな。
0669デフォルトの名無しさん
2009/10/15(木) 20:34:27脳内パーサが a>(b&&b)>c と判断するような人は謎の病気の疑いがある
0670デフォルトの名無しさん
2009/10/15(木) 20:35:37hoge+piyo * fuga+hanya
0671デフォルトの名無しさん
2009/10/15(木) 20:39:23このどちらが正しいかって意味じゃないんだよ
でもお前らだって実際のコードを書く以上
何らかの判断基準があってこのどちらかを実際に採用しているわけだろ?
その結論に至る過程がとても重要なんだよ特にC++という言語にとってはね
0672デフォルトの名無しさん
2009/10/15(木) 20:41:50大事なのはスタイルを選ぶ過程じゃなくて一度選んだスタイルを使い続けることだ
普通の良書にはそう書いてあるはず
0673デフォルトの名無しさん
2009/10/15(木) 20:43:37--
return
((a * ya[klo]) +
(b * ya[khi]) +
(((((a * a * a - a) * y2a[klo]) +
((b * b * b - b) * y2a[khi])) *
(h * h)) / 6.0));
--
まぁ、書き換えても読み難いけどね。
--
return a * ya[klo] + b * ya[khi] +
((a * a * a - a) * y2a[klo] + (b * b * b - b) * y2a[khi]) * h * h / 6.0;
--
0674デフォルトの名無しさん
2009/10/15(木) 20:46:48まあブッチャケこういうのは、括弧がどうこう以前に一行で書くなボケと言いたくなるな俺は。
0675デフォルトの名無しさん
2009/10/15(木) 20:49:25int lo = a * ya[klo];
int hi = b * ya[khi];
double y2 = (a * a * a - a) * y2a[klo] + (b * b * b - b) * y2a[khi]
return lo + hi + y2 * h * h / 6.0;
}
とかにしろと
項ごとにそれぞれなんか意味があるんだろ?
あと(a * a * a - a)は(a * (a * a - 1))にするべき
0676デフォルトの名無しさん
2009/10/15(木) 20:52:400677デフォルトの名無しさん
2009/10/15(木) 21:05:370678デフォルトの名無しさん
2009/10/15(木) 21:07:57そなの?
1が2,3よりも先に評価されそうなもんなのに、そうなっちゃうのか
0679デフォルトの名無しさん
2009/10/15(木) 21:10:16>>661-662
ええと、演算子の優先順位が
&&の方が||より上であるということでしょうか?
0680デフォルトの名無しさん
2009/10/15(木) 21:10:57661は間違ってる
expression1 || (expression2 && expression3)
評価される順序は1,2,3。ただし短絡評価
0682デフォルトの名無しさん
2009/10/15(木) 21:13:250683デフォルトの名無しさん
2009/10/15(木) 21:14:160684デフォルトの名無しさん
2009/10/15(木) 21:27:02/ \
/ ⌒ ⌒ \ 何言ってんだこいつ
/ (●) (●) \
| 、" ゙)(__人__)" ) ___________
\ 。` ⌒゚:j´ ,/ j゙~~| | | |
__/ \ |__| | | |
| | / , \n|| | | |
| | / / r. ( こ) | | |
| | | ⌒ ーnnn |\ (⊆ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二 _|_|__|_
0685デフォルトの名無しさん
2009/10/15(木) 21:29:310686678
2009/10/15(木) 21:30:150687デフォルトの名無しさん
2009/10/15(木) 21:31:33expression2 と expression3を評価せずとも expression1 が評価されて真だった時点で終了できるし
で、評価順は1,2,3
0688デフォルトの名無しさん
2009/10/15(木) 21:43:590689デフォルトの名無しさん
2009/10/15(木) 21:51:47そうなんだ、で痛い目に合うことある。この場合に限ればちゃんとルールが
決まってるし、間違ってるコンパイラは無いと思うが。
ただ、そこまでわかってる人なら知ってるだろうし、ルールすぐ見つけられるだろう。
0690デフォルトの名無しさん
2009/10/15(木) 21:58:15expression1 + expression2 * expression3 なら
普通はexpression2が最初だろ
つまりそういうこと
0691デフォルトの名無しさん
2009/10/15(木) 22:01:03それは評価順序定まってないだろ
0692デフォルトの名無しさん
2009/10/15(木) 22:02:32まともなコンパイラなら
0693デフォルトの名無しさん
2009/10/15(木) 22:02:511-3-2の順でもなんら問題ない。
つまりはそういうこと。
0694デフォルトの名無しさん
2009/10/15(木) 22:08:29VCとICCともに123でした。まともじゃないらしいです。
0695デフォルトの名無しさん
2009/10/15(木) 22:10:420696デフォルトの名無しさん
2009/10/15(木) 22:11:520697デフォルトの名無しさん
2009/10/15(木) 22:14:14知ってるなら見かけ上1-2-3の順であることなど大した問題ではないとわかるはずだ
0698デフォルトの名無しさん
2009/10/15(木) 22:23:50class fuga
{
int a;
public:
fuga()
:a(1)
{
}
int hoge()
{
return a++;
}
};
int main(int argc, _TCHAR* argv[])
{
fuga b;
cout<<b.hoge()+b.hoge()*b.hoge();
}
0699デフォルトの名無しさん
2009/10/15(木) 22:30:560700デフォルトの名無しさん
2009/10/15(木) 22:43:54は
優先順位の高い演算子が結合規則に従って先に評価されるので
*演算子が先に評価され、*演算子は左結合なので、exp2, exp3の順で評価されて演算。
次に、+演算子も左結合なので、exp1と(exp2*exp3)の結果が評価されて演算。
参考:
http://msdn.microsoft.com/ja-jp/library/2bxt6kc4(VS.100).aspx
間違ってるかも知れない・・・
0701デフォルトの名無しさん
2009/10/15(木) 22:44:45これ未定義だよな
0702デフォルトの名無しさん
2009/10/15(木) 22:46:090703デフォルトの名無しさん
2009/10/15(木) 22:54:49みたいなコードは書かない。
0704デフォルトの名無しさん
2009/10/15(木) 22:58:53あらかじめ評価した結果を結合する順序って考えればいいんじゃないかな。
0705デフォルトの名無しさん
2009/10/15(木) 22:59:471. &&の左オペランドがtrueの時、左→右
2. ||の左オペランドがfalseの時、左→右
3. ?:の条件がtrueの時、条件→左、条件がfalseの時、条件→右
なので、明示的に評価順を決めたいときは
一時オブジェクトを生成せよとされています。
規格票の該当番号をコピペするのは
誰かがやってくれマース。
0706デフォルトの名無しさん
2009/10/15(木) 23:01:05演算子の優先順位と評価順序は無関係のはず。
expression1 + expression2 * expression3とかいたとき
(expression1 + expression2) * expression3ではなくexpression1 + (expression2 * expression3)
となる以上の意味はない。
k=e3; j=e2; i=e1; i+j*k;
となる可能性もある。
0707デフォルトの名無しさん
2009/10/15(木) 23:09:14志村カンマ演算子カンマ演算子
0708デフォルトの名無しさん
2009/10/15(木) 23:12:19cout << ++a << ++a << ++a << ++a << ++a << endl;
0709デフォルトの名無しさん
2009/10/15(木) 23:30:04それは未定義
0710デフォルトの名無しさん
2009/10/15(木) 23:37:45cout <<0,++a << 0,++a << 0,++a << 0,++a << 0,++a;
0711デフォルトの名無しさん
2009/10/15(木) 23:39:020712デフォルトの名無しさん
2009/10/15(木) 23:40:10cout <<(0,++a) << (0,++a) << (0,++a) << (0,++a) << (0,++a)<<endl;
0713デフォルトの名無しさん
2009/10/15(木) 23:43:00未定義
0714デフォルトの名無しさん
2009/10/15(木) 23:43:25未定義
0715デフォルトの名無しさん
2009/10/15(木) 23:43:46川端丸太町
0716デフォルトの名無しさん
2009/10/16(金) 00:05:460717デフォルトの名無しさん
2009/10/16(金) 00:13:28ttp://www.ioccc.org/years.html
0718デフォルトの名無しさん
2009/10/16(金) 00:15:46なんじゃこりゃ!!
だめだ笑いが止まらん
0719デフォルトの名無しさん
2009/10/16(金) 00:20:28int main()
{
std::cout << "Hello, C++" << std::endl;
}
これだけでも出場資格ありそうだな
0720デフォルトの名無しさん
2009/10/16(金) 00:38:030721デフォルトの名無しさん
2009/10/16(金) 04:38:38いいえ。不定の動作であって未定義の動作ではありません。
http://www.kouno.jp/home/c_faq/c11.html#33
0722デフォルトの名無しさん
2009/10/16(金) 05:04:560723デフォルトの名無しさん
2009/10/16(金) 05:05:39普段さらっと避けてることだから、定期的な再確認をしとかないと忘れてしまうなぁ
ありがとん
0724デフォルトの名無しさん
2009/10/16(金) 05:37:14>>661を筆頭とする無能な解答者が多くって
。。。
0725デフォルトの名無しさん
2009/10/16(金) 05:40:320726デフォルトの名無しさん
2009/10/16(金) 05:43:11お前みたいに一々煽る奴が居ないのが一番いいんだよ
いい加減にしろ
0727デフォルトの名無しさん
2009/10/16(金) 10:02:270728デフォルトの名無しさん
2009/10/16(金) 13:42:06template class A<int>;と書くところをtemplate A<int>;
と書いてしまったんですけど、VC9 でコンパイル通ります。
なぜですか?
g++4.4.1 ではコンパイルエラーです。
template<class T>
struct A{};
template A<int>; // 明示的なインスタンス化のつもりで書いたがtypo
0729デフォルトの名無しさん
2009/10/16(金) 14:13:46腕に自信のあるプログラマは、以下のコンピュータ大富豪大会に参加しましょう。
ひろゆき杯コンピュータ大富豪大会
http://uecda.nishino-lab.jp/2009/
○What's UECda?
大貧民(または大富豪)は、我が国で最もポピュラーなトランプ・ゲームのひとつでしょう。
このゲームは、1960年頃に日本で生まれたと言われており、海外では、ほとんどプレイされていないようです。
本大会は、その日本固有の人気トランプ・ゲームである大貧民を、人が直接プレイするのではなく、
プレイするコンピュータ・プログラムを作成して持ち寄り、対戦させる大会です。
主催
電気通信大学
0730デフォルトの名無しさん
2009/10/16(金) 15:11:24楽しいぞ。
0731デフォルトの名無しさん
2009/10/16(金) 15:15:080732デフォルトの名無しさん
2009/10/16(金) 15:54:580733デフォルトの名無しさん
2009/10/16(金) 17:03:59>>732
つ[using 別名 = 型];
0734デフォルトの名無しさん
2009/10/16(金) 19:31:18二度と来るな
0735653
2009/10/16(金) 21:32:34enumはintと覚えておきます。
また優先順位の質問ですが、スレを見てて()の重要性がわかった気がしました。
いろいろ情報ありがとうございました。
0736デフォルトの名無しさん
2009/10/16(金) 22:29:02インテル Parallel Studio とインテル C++ コンパイラは別物なんですか。
ここに書いてあるインテル のプロファイラをしたいのですが、C++ コンパイラ評価版では出来ないみたいです。
http://sourceforge.jp/magazine/09/05/25/0921234/3
0737736
2009/10/16(金) 22:31:140738デフォルトの名無しさん
2009/10/16(金) 22:44:270739736
2009/10/16(金) 23:17:370740デフォルトの名無しさん
2009/10/16(金) 23:28:59インテルC++コンパイラ9.0発表!
http://pc12.2ch.net/test/read.cgi/tech/1118850896/
0741デフォルトの名無しさん
2009/10/16(金) 23:39:350742デフォルトの名無しさん
2009/10/18(日) 12:35:29const bool y=bar();
このとき
if(x||y){〜}
と
if(y||x){〜}
はより効率の良いコードに最適化されたりしますか?
0743デフォルトの名無しさん
2009/10/18(日) 12:40:36評価しやすいほうが前方にあれば速度は速くなると思う。
0745デフォルトの名無しさん
2009/10/18(日) 13:30:43どうせほとんど変わらないだろうけど。
0746デフォルトの名無しさん
2009/10/18(日) 13:32:43多い言語だと何とも答えようがないとしか。
0747デフォルトの名無しさん
2009/10/18(日) 13:38:510748デフォルトの名無しさん
2009/10/18(日) 14:04:28ただ1つのintに対してM$は狂ったように無数の別名を与え続けた
1つの言語の世界の中では移植性や汎用性を高める為の技術のはずが
複数の言語の世界にまたがるとただの障壁としかならずまさに本末転倒
C++からCLIを利用する時はすんなりと行けるが
C#からWin32APIを呼び出すとその欠陥っぷりが如実に現れることが全てを証明している
こんなウンコC++に未来はない
みんな大人しくC#に移行しよう
0749デフォルトの名無しさん
2009/10/18(日) 14:07:130750デフォルトの名無しさん
2009/10/18(日) 14:10:04MFCもwindows.hもC++の標準ライブラリじゃないから。
0751デフォルトの名無しさん
2009/10/18(日) 14:10:140752デフォルトの名無しさん
2009/10/18(日) 14:15:24C++を知らないヤツが知ったかぶっちゃって恥ずかしいwwwwwwwww
0753デフォルトの名無しさん
2009/10/18(日) 16:43:31確かに君と同レベルだ
0754デフォルトの名無しさん
2009/10/18(日) 16:45:390755デフォルトの名無しさん
2009/10/18(日) 16:57:06切り返せてねぇけどなww
0756デフォルトの名無しさん
2009/10/18(日) 17:29:14> C#からWin32APIを呼び出すとその欠陥っぷりが如実に現れる
ならC++使いなよっておもうんだが
0757デフォルトの名無しさん
2009/10/18(日) 17:35:03ほしいわ。というか、ほとんどC的な使い方しかしてない。当時はC++も今より
仕様が未熟だったし、仕方ないところもある。
typedefは一つに移植性の向上という目的があるからするんで。そこんとこよろしく。
0758デフォルトの名無しさん
2009/10/18(日) 17:38:48> C++は標準ライブラリがマクロを多用する欠陥言語
> ただ1つのintに対してM$は狂ったように無数の別名を与え続けた
この2つを結びつけるあたり
お前の頭が欠陥だとしか。
0759デフォルトの名無しさん
2009/10/18(日) 18:28:390760デフォルトの名無しさん
2009/10/18(日) 19:27:38整数関係は意外と罠多いからなぁ
0761デフォルトの名無しさん
2009/10/18(日) 19:28:490762デフォルトの名無しさん
2009/10/18(日) 19:34:21(((cout <<(0,++a) ) << (0,++a) ) << (0,++a) ) << endl;
0763デフォルトの名無しさん
2009/10/18(日) 19:43:24何の話をしているのだい?
0764デフォルトの名無しさん
2009/10/18(日) 19:44:02ひとつの文である限り、環境依存。
0765デフォルトの名無しさん
2009/10/18(日) 19:50:12未定義の動作じゃないか?
0767デフォルトの名無しさん
2009/10/18(日) 19:54:51カンマ演算子で区切ってあるから、未定義の動作にはならんのだろう。
>>721 の「不定の動作」になるんじゃないかな?
0768デフォルトの名無しさん
2009/10/18(日) 20:07:15> A:
>簡潔に説明する。実装により定義された動作とは、どう振る舞うかを実装が選択して、その振る舞いを文書にすることを意味する。
>不定の動作とは、どう振る舞うかを実装が選択しなければならないが文書にする必要はないことを意味する。
>未定義とは、本当にどんなことがおこっても不思議ではないことを意味する。
>どの場合にも規格は、必要条件を課していない。
>最初の2つの動作について規格は時々ありそうな振る舞いの集合について少し提案している(その集合から選択しなければならないかもしれない)。
>規格は未定義の動作に直面したときのコンパイラの動作について何も必要条件を設定していないことに注意すること。
> だからコンパイラは本当に何をしてもいいことになる。
0769デフォルトの名無しさん
2009/10/18(日) 20:15:26アホ
0770デフォルトの名無しさん
2009/10/18(日) 20:15:26このとき、
配列nameの要素数を取得するにはどうすれば良いでしょうか?
0771デフォルトの名無しさん
2009/10/18(日) 20:22:10booost::sizeを使う
#include <boost/range/size.hpp>
#include <cassert>
int main(int argc, char *argv[])
{
const std::string name[] = {"aaa" , "bbb" , "ccc" , "ddd" , "eee" , "fff"};
assert( boost::size(name) == 6 );
return 0;
}
0772デフォルトの名無しさん
2009/10/18(日) 20:22:57ありがとうございます。
それで行きます、
0773デフォルトの名無しさん
2009/10/18(日) 20:35:39未規定の動作、ならいいか?
0775デフォルトの名無しさん
2009/10/18(日) 20:53:46template<class T,int N>
int size(T a[N])
{
0776デフォルトの名無しさん
2009/10/18(日) 20:55:15return sizeof(T)*N;
}
確認してないけどこんな感じなのかな?
0777デフォルトの名無しさん
2009/10/18(日) 21:02:360778デフォルトの名無しさん
2009/10/18(日) 21:03:02なるほど、その手があったか
thx
0779デフォルトの名無しさん
2009/10/18(日) 21:05:33しまった、後送信して動転してしまった。
0780デフォルトの名無しさん
2009/10/18(日) 21:06:060781デフォルトの名無しさん
2009/10/18(日) 21:18:53で、最終的に定数(sizeof(なんか)/sizeof(なんか) + 配列の先頭アドレス)と定数(配列の先頭アドレス)になって
コンパイラによる展開、除去ののち定数埋め込みになる…のかな?
0782デフォルトの名無しさん
2009/10/18(日) 21:23:54引数が配列とは限らないからいろいろやってるんだとは思うけど。
たとえばコンテナが渡された場合など、sizeメンバー関数を持つオブジェクトだった場合の切り替えってどうやってるんだろう?
0783デフォルトの名無しさん
2009/10/18(日) 21:28:50stringだと出来ますが。
0784デフォルトの名無しさん
2009/10/18(日) 21:30:070785デフォルトの名無しさん
2009/10/18(日) 21:30:090786デフォルトの名無しさん
2009/10/18(日) 21:31:03しかし特定の名前のメンバ関数を持っているかどうかの判定は環境依存しない方法でできるんだろうか
0787デフォルトの名無しさん
2009/10/18(日) 21:32:33c++でもいいです。
char *p が1MBあったとして、それをstringにコピーせず=別メモリの確保無し
でまるまる画面に出す方法ありますか。
0788デフォルトの名無しさん
2009/10/18(日) 21:34:01forで1バイトずつ処理してください。
0789デフォルトの名無しさん
2009/10/18(日) 21:38:010790デフォルトの名無しさん
2009/10/18(日) 21:39:31これを真似する方法でできないでしょうか。・
0791デフォルトの名無しさん
2009/10/18(日) 21:40:270792デフォルトの名無しさん
2009/10/18(日) 21:40:290793デフォルトの名無しさん
2009/10/18(日) 21:44:320794デフォルトの名無しさん
2009/10/18(日) 21:44:54stdoutにしてバイナリ出力したらいいんですね。
サンクス
0795デフォルトの名無しさん
2009/10/18(日) 21:47:36あと、耳栓だな。
0796デフォルトの名無しさん
2009/10/18(日) 21:54:26C++ の流儀では、それはコンパイルエラーで対応する範疇のことで
どうしてもランタイムでっていう場合はインターフェースと dynamic_cast だろ
0797デフォルトの名無しさん
2009/10/18(日) 22:14:25実体持たずにポインタ保持してるみたいですね。
char * strをUnicodeStringに代入してから
空きができたとおもい別用途で使用したらデータ消えてるみたいです。
0798デフォルトの名無しさん
2009/10/18(日) 22:31:360799797
2009/10/18(日) 22:33:070800デフォルトの名無しさん
2009/10/19(月) 00:15:460801デフォルトの名無しさん
2009/10/19(月) 00:25:10C++0xならできる
0802デフォルトの名無しさん
2009/10/20(火) 04:03:03http://koreawatcher.at.infoseek.co.jp/janexeno.htm
・正式版として最初のリリース。
・Jane終了時の挙動のみ091015試作品から変更された。
───────────────────────
予告どおり、正式版をリリースしました。×ボタンのツールチップ
ヒントに関して、真魚のソースを参考にして修正を試みました。
JaneNidaの開発は事実上終了です。2chの仕様変更などで
対応するかもしれません。
0803デフォルトの名無しさん
2009/10/20(火) 04:23:570804デフォルトの名無しさん
2009/10/20(火) 05:24:23確か2chでは宣伝には相応の対価を払わされるんだよな。
それは非営利目的でも、だ。
0805デフォルトの名無しさん
2009/10/20(火) 05:30:24ttp://pc12.2ch.net/test/read.cgi/tech/1254829314/
こいつ、ここでも宣伝していやがる。
こりゃあ通報かな。
0806デフォルトの名無しさん
2009/10/20(火) 05:50:12http://pc12.2ch.net/test/read.cgi/tech/1255709298/102
ここもね。
0807デフォルトの名無しさん
2009/10/20(火) 06:41:340808デフォルトの名無しさん
2009/10/20(火) 07:42:150809デフォルトの名無しさん
2009/10/20(火) 09:43:180810デフォルトの名無しさん
2009/10/20(火) 12:52:080811デフォルトの名無しさん
2009/10/20(火) 20:46:190812デフォルトの名無しさん
2009/10/21(水) 03:21:28template<class T> struct A {
typedef typename T::b_type value_type; // error
void test() { T::b_type n; } // ok
};
struct B : A<B> { typedef int b_type; };
みたいにしたら、
vc2008eeとgccに'b_typeはBのメンバじゃない'って怒られた。
結局、b_typeで渡すのはあきらめて、Aにテンプレート引数を追加して、それで渡すことにしたんだけど、
これはどうしようもない?
0813デフォルトの名無しさん
2009/10/21(水) 03:23:390814デフォルトの名無しさん
2009/10/21(水) 07:53:49template<class T> struct A {
__if_exists(T::b_type){ typedef typename T::b_type value_type;}
__if_not_exists(T::b_type){ int value_type;}
void test() { value_type n; }
};
struct B : A<B> { typedef int b_type; };
struct C : A<C> {};
0815814
2009/10/21(水) 07:59:59__if_existsには型は渡せなかった。
0816デフォルトの名無しさん
2009/10/21(水) 18:16:34C++用にアンマネージドの.NET3.0も作って欲しいくらい
0817デフォルトの名無しさん
2009/10/21(水) 20:59:580818デフォルトの名無しさん
2009/10/21(水) 22:04:560819デフォルトの名無しさん
2009/10/21(水) 22:09:04http://namidame.2ch.net/test/read.cgi/yasai/1223375038/
0821デフォルトの名無しさん
2009/10/22(木) 03:04:45C++は近い将来に必ず滅ぶ
0822デフォルトの名無しさん
2009/10/22(木) 04:19:54何度でも蘇るさ。
それがプログラマの夢だからだ。
0823デフォルトの名無しさん
2009/10/22(木) 05:29:17const string class::STR2("C");
これを関数内でstatic string str3(STR1[2]);
とやるとCが表示されるんだが…なぜ?
こういうやり方はしないほうがいい?char*ですべき?
0824デフォルトの名無しさん
2009/10/22(木) 06:36:360825デフォルトの名無しさん
2009/10/22(木) 07:15:430826デフォルトの名無しさん
2009/10/22(木) 07:35:550827デフォルトの名無しさん
2009/10/22(木) 07:44:560828デフォルトの名無しさん
2009/10/22(木) 08:22:02メインのクラスに巨大な配列(int型の1000*1000*1000ぐらいの配列)を定義していて
ある操作AをするためにクラスAにその配列全体の中身をいちいちクラスAのメンバ配列にコピーして結果をまたメインクラスにコピーしなおすということをしているのですが
さらにその後メインクラス内で別の操作BをするためにクラスBを作りました
この操作をするためにはまたクラスBのメンバ配列にメインクラスの配列をコピーするようなことをしなくてはならないのですが
毎回これをやってると処理が重くなってしまいます
そこでメインのクラスからもクラスAからもクラスBからもアクセスできるような配列を定義したいのですがどうするのがいいのでしょうか?
ちなみに巨大な配列をグローバル配列として定義してみたのですがうまくいきません
(VCのMFCを使っています。グローバル配列はstdaf.hで定義しようとしました。全てのクラスの処理とクラス定義はそれぞれc++ファイルとヘッダファイルを作り分けています)
またそういったどのクラスからもアクセスできる配列っていうのは作ることができるんでしょうか?
0829デフォルトの名無しさん
2009/10/22(木) 09:18:51つーかクラスとインスタンスの呼び分けをしてくれないと何が何だか分からん
「メインのクラス」の意味がまず分からん
0830デフォルトの名無しさん
2009/10/22(木) 09:21:23ここでいちいち教えるにはあまりにも長すぎるから、どっかにいい解説無いかね
0831デフォルトの名無しさん
2009/10/22(木) 09:35:14すいません
書き直してみます
mainインスタンスに巨大な配列(int型の1000*1000*1000ぐらいの配列)を定義していて
ある操作Aを行うクラスAのインスタンスAをmainインタンスで宣言し、mainの配列全体の中身をいちいちインスタンスAのメンバ配列にコピーして結果をまたmainにコピーしなおすということをしているのですが
さらにその後main内で別の操作BをするクラスBのインスタンスBを作りました
この操作をするためにはまたインスタンスBのメンバ配列にmainの配列をコピーするようなことをしなくてはならないのですが
毎回これをやってると処理が重くなってしまいます
そこでmainのインスタンスからも、その中で宣言したインスタンスA・インスタンスBからもアクセスできるような配列を定義したいのですがどうするのがいいのでしょうか?
ちなみに巨大な配列をグローバル配列として定義してみたのですがうまくいきません
(VCのMFCを使っています。グローバル配列はstdaf.hで定義しようとしました。全てのクラスの処理とクラス定義はそれぞれc++ファイルとヘッダファイルを作り分けています)
またそういったどのクラスからもアクセスできる配列っていうのは作ることができるんでしょうか?
>>830
プロジェクト全体で使えるグローバル変数の定義ってどこでやればいいんでしょうか?
0832デフォルトの名無しさん
2009/10/22(木) 09:46:52そんな「巨大な配列」を「グローバル」にして「stdafx.h」に「定義」するって?
もう突っ込みどころしかないんだ。
まさに>>830の2行目なので、できれば成書を読んで基礎理解を深めてほしい。
その質問に対する答えだけほしいなら>>829が1行目で書いてる
0833デフォルトの名無しさん
2009/10/22(木) 10:39:10うん、まぁ、素直に書き直してくれたのはいいんだが…
クラスとインスタンスの意味がちゃんと理解できてないようにしか見えないっつーか
結局意味分からん…
0834デフォルトの名無しさん
2009/10/22(木) 11:16:10どうやら、最初の方は無意識に補っていたらしい。
0835デフォルトの名無しさん
2009/10/22(木) 12:04:00つまり、mainクラスとはCWinAppの派生クラスであり、
mainインスタンスとはその唯一の実体、theAppの話だな。
…普通、そういう呼び方はしないが。^^;
それはともかくとして、やっぱり>>829の一行目が答え。
0836デフォルトの名無しさん
2009/10/22(木) 20:53:18fuga(piyo());
hoge fuga(piyo *p);
shared_ptr<piyo> foo();
fuga(foo().get());
↑のように一時的な参照タイプの引数を関数に渡した場合、インスタンスの寿命はどこまで保証されるんでしょうか?
0837デフォルトの名無しさん
2009/10/22(木) 21:02:570838デフォルトの名無しさん
2009/10/22(木) 21:34:28レスありがとうございました
0839デフォルトの名無しさん
2009/10/22(木) 21:39:15参照の右辺に一時オブジェクトは置けないよ。
hoge fuga(piyo &p);
fuga(piyo());
も禁止。ポインタにしましょう。
0840デフォルトの名無しさん
2009/10/22(木) 21:47:00fuga(&piyo());
ならいいって?
0841デフォルトの名無しさん
2009/10/22(木) 22:03:06「Crypt: bitwise not / Password: nYXR-lZml-yZXd-hbGw-1a2c 」から連想されるアプリ(偽装解除ソフト)を探しています
お分かりになる方、いませんでしょうか?
0842デフォルトの名無しさん
2009/10/22(木) 22:09:300843デフォルトの名無しさん
2009/10/22(木) 23:31:56それを言うならconst参照にしましょうだろ
0844デフォルトの名無しさん
2009/10/23(金) 00:30:16↑のような感覚でインターフェースの結合と実装の再利用を実現したいのですが、なにかいい手はないでしょうか?
0845デフォルトの名無しさん
2009/10/23(金) 00:34:360846デフォルトの名無しさん
2009/10/23(金) 02:08:16VC++は通っちゃうけど。
0847デフォルトの名無しさん
2009/10/23(金) 03:02:43よれよれの紺のビニールジャンパー、べた付いてそのままよりも少なく
見える髪の毛。猫背。生気のない瞳。ただその存在そのものを見下して
たね。将来自分は絶対に出世するんだって何の根拠もなく思ってたね。
小さい頃からの日々の積み重ねが大人になるまで続いてくなんて夢に
も思わなかったよ。中学生の頃通っていた塾の先生が言ってたな。
「俺はあんまり頭良くないから法政にしか行けなかったんだ、ははは。」
クラスのみんなで大笑いしてたっけ。あの内何人が法政以上の大学に
行けたというのだろうね。毎日会社に通って夜遅くまで働いてるお父
さんがいかに大変で偉大かって、やっと分かりました。
転職を繰り返して人に馬鹿にされて初めて分かりました。生きるって
本当に大変。何をやっても後悔が待ってるもんね。特別じゃない。
自分は特別な人間でも何でもないんだって、20代後半になってやっと
分かりました。あの頃、白い眼で見てしまったおじさん、ごめんね。
あなたのぶんまで生きようと思います。
でも、時間が必要だったことだけは分かって欲しいんだ、おじさん。
さようなら、青い鳥★69羽目
http://gimpo.2ch.net/test/read.cgi/news7/1250876574/
0848デフォルトの名無しさん
2009/10/23(金) 03:06:55>struct impl_ab : public iface_ab, public impl_a, public impl_b
struct impl_ab : public impl_a, public impl_b
iface_abはいらない
0849デフォルトの名無しさん
2009/10/23(金) 04:20:26VC++で通っちゃうのは非 const 参照を一時オブジェクトで初期化するコードだろ。
const 参照なら一時オブジェクトで初期化できるのが標準。
右辺とか変数以外とか言ってるのもよくわからん。
0850デフォルトの名無しさん
2009/10/23(金) 05:21:30お前、理解できてなさすぎるww
>>849の
> VC++で通っちゃうのは非 const 参照を一時オブジェクトで初期化するコードだろ。
> const 参照なら一時オブジェクトで初期化できるのが標準。
これが全て。
0851デフォルトの名無しさん
2009/10/23(金) 06:03:48例えば
MyClass foo(const MyClass&){〜};
この時
const MyClass& x
=foo(MyClass());//一時オブジェクトをconst参照で束縛
foo(x);//参照の参照
この動作が未定義になるんでしょうか?
0852デフォルトの名無しさん
2009/10/23(金) 06:16:55pow関数などで、オーバーロード関数があいまいです
と出るのですが、もちろんキャストしてやるか、powfなどをつかえば
問題はないのですが、できればコードを書き替えずにプリプロセッサなどで
エラーを出さない方法を探しています。
何か良い方法があれば教えてください
0853デフォルトの名無しさん
2009/10/23(金) 06:54:43ならないよ
てか、参照の参照なんて現れて無いじゃん
(そもそも参照の参照なんて文法上存在しないし)
未定義の動作として有名なのはこれだな
const MyClass& foo(const MyClass& n) { return n; }
const MyClass& x = foo(MyClass());
x->hoge();
一時オブジェクト MyClass() の寿命は x の宣言文のところまでなので、
hoge を呼ぶ時には既に寿命が尽きている
戻り値として返してそれを const 参照に入れてはいるけど、
こういう間接的なルートを通ると寿命は伸びない
この例と >>851 との違いは、戻り値が参照かそうでないか
戻り値がコピーになってると、
そのコピーされた戻り値オブジェクト(引数のオブジェクトとは別物)が
const 参照に束縛されるので問題が無い
0854デフォルトの名無しさん
2009/10/23(金) 09:14:24状態をもっていて呼び出すと状態がかわる関数オブジェクト(乱数とか、ストリームへの参照を持ってるとか)を渡したいときに
func(x, func_obj(a, b));
とかやりたい場合はオーバーヘッドはあきらめて値渡しにする(かconst_cast)しかないんでしょうかね
0855デフォルトの名無しさん
2009/10/23(金) 10:02:46なんか何言ってるのか分からなくなってきたが、
基本的に関数オブジェクトは値渡しできるように作らなきゃ駄目
内部に状態を持つ場合も注意深くコピーコンストラクタ定義すれば問題ないはず
0856デフォルトの名無しさん
2009/10/23(金) 10:50:48なんで >>849 の指摘を繰り返したの?
まあ大事なことだけどさ。
0857デフォルトの名無しさん
2009/10/23(金) 12:53:00いい加減C++を使うのは止めにしないか?
0858デフォルトの名無しさん
2009/10/23(金) 12:55:11もはや日常言語なのでそれは無理
0859デフォルトの名無しさん
2009/10/23(金) 13:28:35「コンストラクタ渡す」って何だ?
0860デフォルトの名無しさん
2009/10/23(金) 13:31:590861デフォルトの名無しさん
2009/10/23(金) 13:40:320862デフォルトの名無しさん
2009/10/23(金) 13:59:490863デフォルトの名無しさん
2009/10/23(金) 14:24:00どうすれば生産性の低いC++でも納期を短く出来るのかを考えろよ会社のお荷物どもが
実際にタイムリソースを消費しまくっているだろうが!うちは慈善事業団体じゃねーんだぞ
エンジニアのオナニーに付き合わされるのはもうまっぴらなんだよ!!!
0864デフォルトの名無しさん
2009/10/23(金) 14:26:37じゃあ、慈善事業団体にしちゃいなよ
0865デフォルトの名無しさん
2009/10/23(金) 14:28:370866デフォルトの名無しさん
2009/10/23(金) 14:30:360867デフォルトの名無しさん
2009/10/23(金) 14:57:03うちのチームはJavaチームより遙かに生産性高いよ
Windows組はC#とかつかっているけどJavaチームより出来が悪い
これはWindowsエンジニアでまともなのが少ないからだけどな
0868デフォルトの名無しさん
2009/10/23(金) 16:37:00ぐぐると、コンストラクタで初期値を入れるのがおすすめらしいのですが疑問があります。
初期値はどこに持っておけばいいの???
0869デフォルトの名無しさん
2009/10/23(金) 17:00:23x.hoge();ちゃうんか。
0870デフォルトの名無しさん
2009/10/23(金) 17:00:470871デフォルトの名無しさん
2009/10/23(金) 18:06:430872851
2009/10/23(金) 21:34:26レスが遅れまして大変申し訳ございません。
�@> MyClass foo(const MyClass&){〜};
�A> const MyClass& x=foo(MyClass());//一時オブジェクトをconst参照で束縛
ここまでは仕様上OKだと思うのですが
�B>foo(x);//参照の参照
fooの引数がconst参照となっていますので
x自体が�Aのようにconst参照であるがゆえに
参照の参照になるのではないかと思ったのです。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
そもそも私がこれを気にした理由は
letsboost::call_traits
ttp://www.kmonos.net/alang/boost/classes/call_traits.html
ここに
>「参照型への参照型」はC++的にはイリーガル
という記述を見つけたからなのです。
みなさまどうかご指導よろしくお願い申し上げます。
0873デフォルトの名無しさん
2009/10/23(金) 21:52:07コンパイルエラーになるってだけでは。
template が絡まない限りは関係ない話。
0874デフォルトの名無しさん
2009/10/23(金) 21:58:29ああなるほど、そうでしたか。
const MyClass x;
const MyClass& y=x;//参照
const MyClass& z=y;//参照の参照
これが未定義の動作になるのかと思っていました。
(動作するのは偶然で仕様上はダメなのかと思っていました。)
ありがとうございました。
0875デフォルトの名無しさん
2009/10/23(金) 21:59:51「参照型の参照型」と「参照の参照」を混同してるのが原因
参照型の参照型ってのはポインタでいうとこのT**
T&型の参照型はイリーガルって話。
0876872
2009/10/23(金) 22:05:15それで理解できました。
template <typename T>
class XX{T&うんぬん}
で
XX<std::vector &>とかした場合って事ですね。
ありがとうございます。
0877デフォルトの名無しさん
2009/10/23(金) 22:31:00int x;
int& r(x); xの別名r
int& rr(r); xの別名であるrの別名rr、つまりxの別名
0878デフォルトの名無しさん
2009/10/23(金) 22:54:06それだとまずいこともあるぞ。
別名だとすると処理に一歩時間がかかることが
説明できないし。
0879デフォルトの名無しさん
2009/10/23(金) 22:58:470880デフォルトの名無しさん
2009/10/23(金) 23:00:35いえ、それは独立参照です。
0881デフォルトの名無しさん
2009/10/23(金) 23:08:48>>877の書いてる参照なら時間掛からんけどな
実装面で考えると、>>877のようなのは別名だけど、参照渡しはポインタ的なものだな
0882デフォルトの名無しさん
2009/10/23(金) 23:12:22さらに言うと
現実の実装は別に処理系が好き勝手に決めて良い。
すなわち仕様上は参照渡しがポインタを使って実装されているとは限らない。
0883デフォルトの名無しさん
2009/10/24(土) 01:27:08もしくは本物を直接見るコードに最適化されるか
0884デフォルトの名無しさん
2009/10/24(土) 07:20:110885デフォルトの名無しさん
2009/10/24(土) 12:46:450886デフォルトの名無しさん
2009/10/24(土) 13:37:56定期的に宣伝してるのか?
具体的にどういうところがC++に比べて凄いのか書いたら?
0887デフォルトの名無しさん
2009/10/24(土) 14:03:07マイクロソフトはC++よりもC#を推進しているような気がする。
理由の1つ目はVC++を単体売りしなくなったこと。
理由の2つ目は2010でStandardエディションを廃止して
「誰でも簡単にリッチなアプリを作れるライブラリ」であるところのMFC/ATLを
(以前よりも)手に入れにくくしたこと。
理由の3つ目は2008でモバイル開発環境をProfessional以上に限定したこと。
理由の4つ目はC++/CLIとC#を比較したとき、C#の方が.NETの全機能によりスマートに対応していること。
Windows上でのC++による開発は
高度な技術を持つ職業プログラマだけのものへと押し上げて、
残りはすべてC#やVBで吸収(結果的にネイティブから.NETベースのプログラムに)
指定校というむにゃむにゃ。
0888デフォルトの名無しさん
2009/10/24(土) 14:04:05ええと2ch宣伝は相応の対価を払わされるんだと
何度言えば分かるんだヴォケ!
0889デフォルトの名無しさん
2009/10/24(土) 14:18:08> >>885じゃないけど
お前が>>885じゃなかろうが何だろうが
スレ違いかつ2ch宣伝厨であることには代わりないんだよ。
何でそれが分からないの?
0890デフォルトの名無しさん
2009/10/24(土) 14:20:140891デフォルトの名無しさん
2009/10/24(土) 14:36:400892デフォルトの名無しさん
2009/10/24(土) 15:02:36VC++もVC#も無料で手に入るわけだが?何言ってんの?
0893デフォルトの名無しさん
2009/10/24(土) 15:02:45ホントに書いてきた奴がいるので、今度は「スレ違い」と言ってみた。
0894デフォルトの名無しさん
2009/10/24(土) 15:28:580895デフォルトの名無しさん
2009/10/24(土) 15:32:520896デフォルトの名無しさん
2009/10/24(土) 15:33:42MSがC#に力を入れてるというのは知ってるけど。結局それだけ?
むしろ、その議論だと現MS路線にロックインして他の事、環境には一切
手を出さない人には良いという風にも感じられる。ついでにMSの
気が変わったらどうするんだろう。
言語仕様として凄いところとかは?
スレ違いという人もいるが、C++と他の言語の比較は別にここで
話しても良いのでは。
0897デフォルトの名無しさん
2009/10/24(土) 15:36:370898デフォルトの名無しさん
2009/10/24(土) 15:44:23何とも話しようもない
0899デフォルトの名無しさん
2009/10/24(土) 15:47:03利点とかが話になるのかな。
0900デフォルトの名無しさん
2009/10/24(土) 15:47:53岡三オンライン証券のツールが採用してるけど、
寄り付きでいつも遅延w
トラブルなんて慣れっ子ww
毎週のようにでかいパッチを強制ダウンロード。
凄すぎるぜwwww
0901デフォルトの名無しさん
2009/10/24(土) 15:59:590902デフォルトの名無しさん
2009/10/24(土) 16:19:58Microsoftは今までサンデープログラマのようなアマチュアプログラマのために
VC++を安価に提供してきたけど、2010からはしなくなる。
で、知ってのとおりVC++のExpressエディションではMFC/ATLは使えないので
手の込んだアプリケーションを作るにはC#やVBを使ったほうが断然速い。
そういう層には、VBやC#(.NETベースのプログラム)の魅力は
VS2010でぐんと上がってくることになるだろう、と。
Windowsという開発環境に限って言えば、
VC++はアマチュアプログラマの世界から消えてなくなって
もう誰もC++名にソレ?みたいな世界におまんこ。
0903デフォルトの名無しさん
2009/10/24(土) 16:33:240904デフォルトの名無しさん
2009/10/24(土) 16:36:330905デフォルトの名無しさん
2009/10/24(土) 16:46:36Express がないのと「速い」のと関係あるんか?
それと PC 用の C++ コンパイラが 4 〜 5 万くらい、PC も 20 万以上で、
本来であればワークステーションが必要、という時代にもアマチュアは腐るほどいたぞ
よーするにコンパイラがフリーかどうかってのは言い訳に過ぎないと思うぜ
0906デフォルトの名無しさん
2009/10/24(土) 16:49:41改善予定は結構凄いと思うけどな。
0907デフォルトの名無しさん
2009/10/24(土) 16:51:30まあどっちでもいいや
0908デフォルトの名無しさん
2009/10/24(土) 16:55:52コンパイラの基本部分ではなく部品が足らないから
作業時間が多くかかるって事だろ。
0909デフォルトの名無しさん
2009/10/24(土) 16:56:38C#を推進してるかも知れんが、.NetFrameworkを使う為の言語としてはC++/CLIを推奨してなかったか
0910デフォルトの名無しさん
2009/10/24(土) 16:58:52C++/CLIは暇で作った。
0911デフォルトの名無しさん
2009/10/24(土) 17:01:15どのプラットホームに対応するかはコンパイラの次第で。
C#コンパイラがバイナリを生成してもいいんだが。
0912デフォルトの名無しさん
2009/10/24(土) 17:01:37あんまり良く伝わらなかったみたい。
ニホンゴヘタデゴーメンナサイヨー。
0913デフォルトの名無しさん
2009/10/24(土) 17:01:40C++/CLIつかいなさいよ、程度だろ
0914デフォルトの名無しさん
2009/10/24(土) 17:02:58>>905が読めてないだけだよ
0915デフォルトの名無しさん
2009/10/24(土) 17:04:01MFC(やWTL)なしでドキュメントビューアーキテクチャのアプリを作ってみれば
どんだけめんどいか(これらのライブラリがどれだけ便利か)わかりますです^^
リボンコントロールをAPIと生のCで実現するのもうんこ漏れると思う。
やってないからわからんけど^^;;;;;;;;;
0916デフォルトの名無しさん
2009/10/24(土) 17:10:47GUIとか楽になるのか
http://sourceforge.jp/projects/sfnet_stlsoft/
0917デフォルトの名無しさん
2009/10/24(土) 17:15:460918デフォルトの名無しさん
2009/10/24(土) 17:21:36GUIが楽になるという物でもないように思った。
けど、STL好きにとっては便利そうに見えたな。
0919デフォルトの名無しさん
2009/10/24(土) 17:21:48MFCが無いならQtを使えばいいじゃない
0920デフォルトの名無しさん
2009/10/24(土) 17:24:33アマチュアが COM を憶えるのに ATL は必要ないし、
憶えていくうちに自作のライブラリが充実していくから
結局 Express にそんなものはなくても大した問題じゃない
(ライブラリがコンパイラに付いてないってことが、
そのままライブラリが永久に使えないことを意味する
ような奴はそもそも適性に問題がある)
COM ではなく ATL を憶えたい場合にも授業料としてそんなに高いわけじゃなし
仮にそれらがフリーで手に入っても、自分に投資する気のないような奴は結局実らない
0921デフォルトの名無しさん
2009/10/24(土) 17:28:250922デフォルトの名無しさん
2009/10/24(土) 17:33:04たしかになぁ。
ポインタ周りも自作のライブラリが充実していくから
boostとか無くても大した問題じゃないよな
(boostが禁止されたプロジェクトに配属されたからといって
メモリリークを起こす奴は適正に問題があるよな)
0923デフォルトの名無しさん
2009/10/24(土) 17:33:37マイクロソフトがスタンダードエディションとそれを利用する層に対してどのように振舞うかを見たとき、
VS2010におけるマイクロソフトのVC++へのスタンスをどのように解釈するかって話をしているんだけど
・・・やっぱりまったく伝わってなかたあるよっていうか会話がかみ合って中田アルヨ。
ニポンゴムツカシイネ。ちょわいよん。
0924デフォルトの名無しさん
2009/10/24(土) 17:34:01Qt は良いと思うが、実際 Windows 開発で Qt 使ってる、
ってどの程度の割合いるんだろうね。滅茶苦茶低そう…
0925デフォルトの名無しさん
2009/10/24(土) 17:34:060926デフォルトの名無しさん
2009/10/24(土) 17:35:20充実した自作ライブラリがあるからいらないんだと思うよ
0927デフォルトの名無しさん
2009/10/24(土) 17:37:55俺としてはコンパイラのみ無償提供だった時期が一番よかったように思うけど。
Expressは豪華すぎる。
0928デフォルトの名無しさん
2009/10/24(土) 17:40:290929デフォルトの名無しさん
2009/10/24(土) 17:41:56GUI関係はあまりなかったと思う。
CoInitialize/CoUninitializeをクラスにしたり、
FindFirstFileやToolHelp32をイテレータ化するものだったり、
(いい意味で)誰もが思いつくものをそのままクラスにした感じ。
自作ライブラリと機能かぶるなんて人も多いと思う(自分は自作ライブラリを捨ててWinSTLにした)。
一言で言えば地味。
だから積極的に薦めるという気にならないけど、。使ってみて自分に合うと思ったら使い続けたらいいと思う。
0930デフォルトの名無しさん
2009/10/24(土) 17:45:000931デフォルトの名無しさん
2009/10/24(土) 17:52:430932デフォルトの名無しさん
2009/10/24(土) 17:55:07だからライブラリを憶えたいのかアーキテクチャを憶えたいのか言語を憶えたいのか、何の話をしてるんだよ?
それと、いちいちアンカーつける気がしなくなったが
ゲイツがどういう商売をする気かはゲイツの問題で
気に入らなきゃいつでも離れられるのが C++ を選ぶ理由でもあるわけで
あくまでゲイツと心中って前提がある奴の自分語りをこんなとこで聞きたくねえ
0933デフォルトの名無しさん
2009/10/24(土) 17:57:07そんな中途半端な代物をC++と比較するのはちょっとおかしいんじゃないか?
0934デフォルトの名無しさん
2009/10/24(土) 17:58:04何で俺にアンカーついてんだ
既に作られたライブラリがあるにもかかわらず、自作ライブラリを
充実させることに心血を注ぐタイプなんだろ?
なのにポインタ周りのライブラリが充実してないとか基礎をおろそかにしすぎじゃん。
0935デフォルトの名無しさん
2009/10/24(土) 18:25:16心血を注ぐことに批判的な姿勢を感じるレスだったからアンカーつけたんだよ
既に作られているライブラリでも採用するかどうかはアマであろうとプロであろうと場によるぜ
ライセンスがらみで結局同じものを「あくまでオリジナル」で作るなんて話はそこいら中にあるし、
基礎のできてない奴が増えていることは恵まれすぎている環境を背景としている
おまえさんの論法では Hello, wold でさえ既にあるから自分で作るなってことだろ
0936デフォルトの名無しさん
2009/10/24(土) 18:26:480937デフォルトの名無しさん
2009/10/24(土) 18:28:57Linuxでもwindowsでも動作して、速度はバイナリ並みなんですよ。
初回起動後にバイナリイメージが生成されます。
Javaのような仮想マシーンはないんです、
0938934
2009/10/24(土) 18:33:02俺も>>927でも書いたとおり、Expressは豪華すぎると思うよ。
そこは意見一致してんのにな。
いつでも離れられるために自作ライブラリに固執するのか、郷に入って郷に従うのか、
その差かねぇ。
0939デフォルトの名無しさん
2009/10/24(土) 18:33:480940デフォルトの名無しさん
2009/10/24(土) 18:34:09インタプリタ方式じゃなくてもVMはVM
0942デフォルトの名無しさん
2009/10/24(土) 18:54:47「.NetというよりWPFが凄い」
「具体的にどういうところがC++に比べて凄いのか書いたら?」
であることを忘れている人たちがいるようだ。
終始.NETとC++の比較の話であり、
それ以外の結論は無意味なのである。
0943デフォルトの名無しさん
2009/10/24(土) 18:55:43「正直.NETって凄いよね」
「具体的にどういうところがC++に比べて凄いのか書いたら?」
0944デフォルトの名無しさん
2009/10/24(土) 18:57:130945デフォルトの名無しさん
2009/10/24(土) 19:22:331グラムと1円どっちが熱いかと聞いてるようなもんだ
0946デフォルトの名無しさん
2009/10/24(土) 19:36:01struct Hoge{}Hoge; ○
static Hoge& Hoge = *(Hoge*)0; ×
staticメンバに「.」演算子でアクセスしたいんですが・・・
ていうか、そんなことしたら殺されますか?
0947デフォルトの名無しさん
2009/10/24(土) 19:46:07じゃだめなの?
0948デフォルトの名無しさん
2009/10/24(土) 19:57:23重いクラスとかでもできるようにしたかったんで、参照じゃないとあまり意味がないんです。
それに、ヘッダに書くのであまり、実体を置きたくなかったもんで
0949デフォルトの名無しさん
2009/10/24(土) 19:59:57実際それはそういう風に使われてる。
0950デフォルトの名無しさん
2009/10/24(土) 20:07:35クラス名と同名の変数なら struct Hoge Hoge; でいける。
でもそんな動機でヘッダに宣言するのはいただけない。
0951デフォルトの名無しさん
2009/10/24(土) 20:23:28static struct Hoge& Hoge = *(struct Hoge*)0;
じゃなくて?
0952デフォルトの名無しさん
2009/10/24(土) 21:11:54それの宣言方法がわからなかったんです・・・。
>>950
やっぱりいただけないですよね〜
>>951
できました。C言語のレベルでしたね・・・。精進せねば
みなさんありがとうございました。
0953デフォルトの名無しさん
2009/10/24(土) 21:16:33> 中身のない参照でいいだろ。
そんなん作れないよwwwwww
0954デフォルトの名無しさん
2009/10/24(土) 21:20:54そんなのありか?
0955デフォルトの名無しさん
2009/10/24(土) 21:32:050956デフォルトの名無しさん
2009/10/24(土) 21:39:55ぱっと見はC言語なのに実はC++とか、なんか嫌だ。
0957デフォルトの名無しさん
2009/10/24(土) 21:44:150958デフォルトの名無しさん
2009/10/24(土) 21:57:52自分は>>951のようなのを書くときでもstatic_castを使ってるよ。慣れの問題かも。
0959デフォルトの名無しさん
2009/10/24(土) 21:58:26それにインターフェイスとか関数オブジェクトとかポリシーとか使ってると普通に全公開のクラスもよくあるからstructのほう使いたくなる
0960デフォルトの名無しさん
2009/10/24(土) 22:02:47いざと言う場合に、どこで使っているかを拾う簡単な方法がそうでないと無い。
0961デフォルトの名無しさん
2009/10/24(土) 22:04:30賛成。使うべき。でももうちょっと短いキャスト名にして欲しかった。
0962デフォルトの名無しさん
2009/10/24(土) 22:12:03沢山あると凄く見辛い…
あれか、キャストなんか使うなということか
0963デフォルトの名無しさん
2009/10/24(土) 22:14:16reinterpret_castはいらいらするほど長いから
すごく使いたくなくなる。
それは海洋遭難者のために救命ボートに備え付けられた非常食が
わざとゲロが出るほどまずく作られているのと同じ理由だって。
0964デフォルトの名無しさん
2009/10/24(土) 22:16:39まずそこだよな
static_cast<hoge*>(0) とか・・・
0965デフォルトの名無しさん
2009/10/24(土) 22:33:47これ未定義動作になるよな?
少なくとも Hoge.なんとか で参照したら。
0966デフォルトの名無しさん
2009/10/24(土) 22:45:27せめてstatic_castはもうちょっと短くして欲しかった…。
1文に2個も入ってたりすると、すげぇ横延びて困る。
0967デフォルトの名無しさん
2009/10/24(土) 22:54:49dynamic_castは設計の脆弱さが露呈した結果、
const_castは恋の予感。
0968デフォルトの名無しさん
2009/10/24(土) 23:06:300969デフォルトの名無しさん
2009/10/24(土) 23:56:210970デフォルトの名無しさん
2009/10/25(日) 00:07:46めんどくせえよ
0971デフォルトの名無しさん
2009/10/25(日) 00:14:36Uの方は勝手に推測してくれるんじゃないかな?
0972961
2009/10/25(日) 00:16:27> 沢山あると凄く見辛い…
俺もこっちの意味。
可読性がちょっとアレになっちゃう。
c_castとかにして欲しかった。
>>969
なるほどね。
でも標準でそれを採用してくれていないと、
結局他の人が読んだときに困るだけだから
可読性がさらに悪くなる。
まあ標準仕様に文句付けてもしょうがないんだけどさあ・・・ねぇ。。。
0973デフォルトの名無しさん
2009/10/25(日) 00:18:540974デフォルトの名無しさん
2009/10/25(日) 00:23:46http://pc12.2ch.net/test/read.cgi/tech/1256397778/
0975デフォルトの名無しさん
2009/10/25(日) 00:30:16dynamic_castだらけです。
むしろ愛してます。
0976デフォルトの名無しさん
2009/10/25(日) 00:35:10dynamic_castだらけってのはなんかまずいんじゃないか?
結構欠陥プログラミングに見られる傾向だぞ。
0977デフォルトの名無しさん
2009/10/25(日) 00:39:12どちらかと言えば継ぎ接ぎだらけ。
0978デフォルトの名無しさん
2009/10/25(日) 00:41:440979デフォルトの名無しさん
2009/10/25(日) 00:47:43dynamic_castの多用せざるを得ないという可能性もまだ考えられるぞ。
0980デフォルトの名無しさん
2009/10/25(日) 00:55:210981デフォルトの名無しさん
2009/10/25(日) 01:00:360982デフォルトの名無しさん
2009/10/25(日) 01:26:580983デフォルトの名無しさん
2009/10/25(日) 01:39:290984デフォルトの名無しさん
2009/10/25(日) 01:44:56偉い人が言ってた。
0985951
2009/10/25(日) 01:52:16エイリアス使ってるからC++だよね。お騒がせしました。
>>965
未定義になるの?
C++だと0とnullは違うんだっけ?
0986デフォルトの名無しさん
2009/10/25(日) 02:13:440987デフォルトの名無しさん
2009/10/25(日) 02:14:01ヌルポインタをデリファレンスして使うと未定義動作逝き。
0989デフォルトの名無しさん
2009/10/25(日) 09:06:280990デフォルトの名無しさん
2009/10/25(日) 09:26:060991デフォルトの名無しさん
2009/10/25(日) 10:40:06NULL == (void*)0;
これが違う
NULL == 0
はOK
0992デフォルトの名無しさん
2009/10/25(日) 12:37:080993デフォルトの名無しさん
2009/10/25(日) 12:51:29実装の詳細は各々ベンダの自由であり、
何だっていいんだろう。
0994デフォルトの名無しさん
2009/10/25(日) 12:57:34後でどんな派生クラスが新しく追加されるかわからんから
0995946
2009/10/25(日) 13:55:03staticメンバにアクセスするのが目的なので、基本的には大丈夫です。
あと、非staticメンバにアクセスしたときに起こる問題も把握しております故・・・
ありがとうございました。
0996デフォルトの名無しさん
2009/10/25(日) 14:26:450997デフォルトの名無しさん
2009/10/25(日) 14:41:350998デフォルトの名無しさん
2009/10/25(日) 14:42:160999デフォルトの名無しさん
2009/10/25(日) 14:42:571000デフォルトの名無しさん
2009/10/25(日) 14:43:5310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。