C++相談室 part34
■ このスレッドは過去ログ倉庫に格納されています
0001v(^・^)v
NGNGただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。
過去スレ、関連スレ、関連リンクなどは >>2-20 あたり
0002デフォルトの名無しさん
NGNG2 http://pc.2ch.net/tech/kako/996/996640937.html
3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
14 http://pc5.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc5.2ch.net/tech/kako/1043/10436/1043605481.html
0003v(^・^)v
NGNG16 http://pc5.2ch.net/tech/kako/1045/10457/1045746245.html
17 http://pc5.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc5.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc5.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc5.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc5.2ch.net/tech/kako/1057/10575/1057580107.html
22 http://pc5.2ch.net/tech/kako/1060/10603/1060361082.html
23 http://pc5.2ch.net/tech/kako/1062/10626/1062690663.html
24 http://pc5.2ch.net/tech/kako/1066/10665/1066546387.html
25 http://pc5.2ch.net/tech/kako/1067/10679/1067949669.html
26 http://pc5.2ch.net/test/read.cgi/tech/1070164402/ (迷子)
27 http://pc5.2ch.net/test/read.cgi/tech/1074454641/ (迷子)
28 http://pc5.2ch.net/test/read.cgi/tech/1077985164/
29 http://pc5.2ch.net/test/read.cgi/tech/1082047479/
30 http://pc5.2ch.net/test/read.cgi/tech/1084030770/
31 http://pc5.2ch.net/test/read.cgi/tech/1086185282/
32 http://pc5.2ch.net/test/read.cgi/tech/1088236078/
33 http://pc5.2ch.net/test/read.cgi/tech/1090180012/
0004v(^・^)v
NGNG[C++ FAQ]
http://www.parashift.com/c++-faq-lite/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[禿 Stroustrup]
http://www.research.att.com/~bs/
[C++ International Standard]
http://www.kuzbass.ru/docs/isocpp/
http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110&ICS1=35&ICS2=60&ICS3=
[JTC1/SC22/WG21 - C++]
http://std.dkuug.dk/jtc1/sc22/wg21/
[C/C++ Users Journal]
http://www.cuj.com/
[cppll (ML)]
http://www.trickpalace.net/cppll/ (日本語)
0005v(^・^)v
NGNGamazon.com C,C++関連書籍
http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/
The C++ Programming Language
http://www.amazon.com/exec/obidos/ASIN/0201700735/
http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳)
C++ Primer (3rd Edition)
http://www.amazon.com/exec/obidos/ASIN/0201824701/
http://www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳)
The C++ Standard Library
http://www.amazon.com/exec/obidos/ASIN/0201379260/
http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳)
Effective C++
http://www.amazon.com/exec/obidos/ASIN/0201924889/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳)
More Effective C++
http://www.amazon.com/exec/obidos/ASIN/020163371X/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳)
Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/0201615622/
http://www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳)
More Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/020170434X/
Effective STL
http://www.amazon.com/exec/obidos/ASIN/0201749629/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
http://www.amazon.com/exec/obidos/ASIN/0201704315/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
http://www.amazon.com/exec/obidos/ASIN/0201734842/
0006v(^・^)v
NGNG[Boost]
Boost http://www.boost.org/
(日本語) http://user.ecc.u-tokyo.ac.jp/~s31552/wp/boost/
(日本語) http://www.kmonos.net/alang/boost/
[STL]
STLport http://www.stlport.org/
SGI-STL http://www.sgi.com/tech/stl/
STLFilt http://www.bdsoft.com/tools/stlfilt.html
(日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
(日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
http://www.moderncppdesign.com/
LokiPort-MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
[他]
ACE http://www.cs.wustl.edu/~schmidt/
Blitz++ http://www.oonumerics.org/blitz/
flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
[他ライブラリリンク集]
http://www.trumphurst.com/cpplibs/cpplibs.phtml
(日本語) http://www.kmonos.net/alang/cpp/lib.html
0007v(^・^)v
NGNG【C++】template 統合スレ -- Part4
http://pc5.2ch.net/test/read.cgi/tech/1083550483/
ようかんマンがC/C++の宿題を片付けて見せます 28棹
http://pc5.2ch.net/test/read.cgi/tech/1089974839/
C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc5.2ch.net/test/read.cgi/tech/1049790146/
managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/
ATL 相談室
http://pc5.2ch.net/test/read.cgi/tech/1029029882/
COM の世界を斬る!
http://pc5.2ch.net/test/read.cgi/tech/981823340/
WTLお勉強スレッド
http://pc5.2ch.net/test/read.cgi/tech/1078150663/
0008v(^・^)v
NGNGタダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/(html化待ち)
GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/
タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/
OpenWatcom C++
http://pc5.2ch.net/test/read.cgi/tech/1033433728/
"Code of the Nerds" Digital Mars C/C++
http://pc5.2ch.net/test/read.cgi/tech/1044210976/
0009v(^・^)v
NGNG★初心者にVisual C++を教えるスレ★ Part13
http://pc5.2ch.net/test/read.cgi/tech/1089011118/
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
C++Builder相談室 Part10
http://pc5.2ch.net/test/read.cgi/tech/1089299158/
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/
0010v(^・^)v
NGNGスレが立てられるなら何でも良かった.
今はあらかじめ串を用意しておくべきだったと反省している.
0011v(^・^)v
NGNG0012v(^・^)v
NGNG環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
0013v(^・^)v
NGNGすげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
0014v(^・^)v
NGNGとかいうエラーが出るんだけどこれってどうすればいいの?
0015v(^・^)v
NGNG#include <stdafx.h>
後死ね。
0016v(^・^)v
NGNG言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNGあるイベントに対応するハンドラを関数ポインタで設定しておき、
ウィンドウプロシージャからその関数ポインタを呼ぶようにしてます。
ですが関数ポインタは型に厳しくて、
typedef void (*EventProc)(CEvent&);
これだとクラスのメンバ関数は突っ込めないし。
typedef void (CEvent::*EventProc)(CEvent&);
こっちだとメンバ関数はOKだけど自分以外のクラスの関数ポインタはダメだし。
それに多重継承しているクラスのメンバは型が合わなくてコンパイルエラーになります。
何かよい解決策はありませんか?
0019デフォルトの名無しさん
NGNG処理ごとにハンドラ型をいっぱい用意する
0020デフォルトの名無しさん
NGNG(;´Д`)
002118
NGNG{
CButton btn;
public:
void CMainWindow ::Init()
{
btn.pClickEvent = (CEvent::EventProc)OnClick;
}
void CMainWindow ::OnClick(CEvent& e) {}
};
btn.pClickEvent = (CEvent::EventProc)OnClick;
この部分は関数ポインタでは無理なんでしょうかね・・・。
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG002518
NGNGそれも考えたんですがそれだとハンドラからメンバへのアクセスってコンテクスト経由ですよね。
もっといいアイデアがあるんではないかなーと思ってるんで今の所保留にしてます。
>>24
そうですね。仮想関数なら実装は簡単なんですよね。
でも派生しないとハンドラ書けないじゃないですか。
それにCButtonを派生してハンドラ書いてもはっきりいって不便ですよね?
ボタンのハンドラはやっぱりウィンドウに記述したいじゃないですか。ってわがままかなぁ。
0026デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1091264964/120
http://pc5.2ch.net/test/read.cgi/tech/1091264964/130
0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNGboost::functionとboost::bind、boost::lambdaのあたりを使う
boost.signalsも手か。
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNGstruct A{
A(const A& a) { lock(); assign(a); unlock(); }
~A() { lock(); release(); unlock(); }
};
たとえば上のようにした場合、タイミングによっては破棄されたコンテナを
コピーしようとしてしまう事がありますよね?
コンテナが保持するオブジェクトへのアクセスのみロックで保護して、
コンテナ自体へのアクセスのロックは利用側が気をつけるしかないんでしょうか?
0040デフォルトの名無しさん
NGNG通常のスレッドセーフ対策と同じ。
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGそういわれても分からないから質問してるんです。
通常っていうと、保護したいオブジェクトにアクセスする前後で
lockとunlockをするというだけだと思うのですが、
それはオブジェクトを利用するクライアント側でコードを書かなきゃならないので
言ってしまえば面倒であると言う事なのですが。
STLPORTとかで提供されるスレッドセーフなコンテナと言うようなものは、
コンテナへのアクセス自体は自分で保護しないとならないのでしょうか?
0043デフォルトの名無しさん
NGNG>そういわれても分からないから質問してるんです。
逆ギレ キター。
>通常っていうと、保護したいオブジェクトにアクセスする前後で
>lockとunlockをするというだけだと思うのですが、
そのとおりです。必要な場所でロックするように実装すればOK。
0044デフォルトの名無しさん
NGNGそれはスレッドセーフというよりも寿命管理の問題じゃないの?
>>39 のコードだと「タイミングによっては」完全に破棄された後でコピーされてしまう
ことがあるわけだけれども、それはスレッドの問題ではなく、寿命管理が全くできていない
からだと思うし。
参照カウンタを儲けてアトミックに操作するとか、そういう普通の方法でよいと思うけど。
0045デフォルトの名無しさん
NGNGデストラクタに入った直後にコピーコンストラクタが呼び出されると、
カウント0のオブジェクトをコピーしようとする事になるから
0046デフォルトの名無しさん
NGNGコピーコンストラクタを呼び出す側が参照を保持してるから、
ゼロにならないと思うけど・・・
どういう状況を想定してまつか?
004746
NGNG参照カウンタによる寿命管理って普通そういうものですよね。
強制的に delete したりしたらどうしようもないけど。
0048デフォルトの名無しさん
NGNGvoid assign(const A& a) {p=a;++p->c;}
void release() {if(--p->c){delete p;p=9;}}
struct counter {int c;} *p; };
39の例だと、こうした場合には
(スレッド) 処理 // コメント
(0) A::~A()
(0) A::lock()
(1) A::A(const A&)
(1) A::lock()
(0) A::release() //p->c=0, p=0
(0) A::unlock()
(1) A::assign() // error
ということになる。
・・・と思ったけど、Aのインスタンスをカウンタで管理すると言う事かな?
0049デフォルトの名無しさん
NGNG/p=9/p=0/
0050デフォルトの名無しさん
NGNG>・・・と思ったけど、Aのインスタンスをカウンタで管理すると言う事かな
そういうことです。
「コンテナの寿命管理」なんて設計段階でやっておけば十分なような気も
しますけど、元々のネタ(>>39)がそういうお題なのでしようがない。
++ とか -- はスレッドセーフじゃないのでOS 固有の何らかのAPIで
アトミックに実行する必要がありますが。
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGあれってスレッドセーフだっけ?
0054デフォルトの名無しさん
NGNGスレッド周りの対応が山盛りでおなかいっぱい。
0055デフォルトの名無しさん
NGNG調べてみた。
boost:shared_ptr は、同一のインスタンスについては、多重の読み込みしかスレッドセーフではない。
スレッド毎にコピーを作ってあげれば、参照カウントは共有され、かつ変更に対しても安全になる。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNGboost::function 使う。
0059デフォルトの名無しさん
NGNG乙。
0060デフォルトの名無しさん
NGNGC言語を勉強する必要があるのでしょうか?
0061デフォルトの名無しさん
NGNG>>4見て出直せクッソタレ!
0062デフォルトの名無しさん
NGNGC#ってのはどうなんかと思って。
C++とC#を将来使いこなしたい ってのをCC#を将来使いこなしたい
にしとけばよかった。スマソ
ほかのスレでC++は得意だけれどC#は苦手とかC#はいけるがC++はダメポとか
いうレスみたんで。。 得意な方からいわせるとやはりC++とC#は違うのですかね?
違うと言うことになればいきなりC#から勉強できるのかな??
0063デフォルトの名無しさん
NGNGこんな奴がC#やっても時間の無駄
0064デフォルトの名無しさん
NGNGならC言語だけでデザインパターン23種類全部書いてみい。
0065デフォルトの名無しさん
NGNGC++でできることも、C#でできることも、Javaでできることも、
みーんなアセンブラ使っても出来るんだぞ!!!!!!!
インターネットもリナックスもみんなアセンブラしてるんだぞ!!
友達のスーパーハッカーもアセンブラだって言ってたぞ!!!!
0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNG夜からずっとやってますが根性だけはあるんでアドバイスお願いいたします。ペコ
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG調べ直していろいろさらに分かり、思ったのですが、Cはもう古いそうなんで
思い切ってC++から勉強したいと思います。
C++やっているみなさんから言いマストやはりそれは無謀でしょうかね?
ちなみに今高校1年生ですので難しい数学はやったことないレベルであります。汗。
0070デフォルトの名無しさん
NGNGCがわからんとC++ほとんどわからんらしいっす。 いままでスマソ
0071デフォルトの名無しさん
NGNGそしてなんでもかんでもすぐ人に聞く奴は向いてない
0072デフォルトの名無しさん
NGNG>そしてなんでもかんでもすぐ人に聞く奴は向いてない
禿堂
0073デフォルトの名無しさん
NGNGいや全く。
とりあえず手元にPCはあるようですから、実際に動かしつつ勉強すればいいですな。
書店で適当な入門書を見繕ってきて、まずは1冊を読み通しながら。
gccならネットから無償で入手できるし、学生さんならMS製品もアカデミック価格でしたっけ?
0074デフォルトの名無しさん
NGNG#include <string>
using namespace std;
int i,k;
int main()
{
string str[4][2];
str[0][0] = "就職 ";
str[0][1] = "活動 ";
str[1][0] = "会社 ";
str[1][1] = "訪問 ";
str[2][0] = "集団 ";
str[2][1] = "面接 ";
str[3][0] = "学校 ";
str[3][1] = "推薦 ";
for(i=0;i<4;i++){
for(k=0;k<2;k++){
cout << str[i][k] << endl;
}
cout << "\n";
}
return 0;
}
これってどうよ?
0075デフォルトの名無しさん
NGNG初期化の仕方がダサすぎ
0076デフォルトの名無しさん
NGNGRelease のスレッドセーフな実装でさんざん悩んでドツボにはまったことがある。
0077デフォルトの名無しさん
NGNG根性あるなら我慢して真剣にCを1ヵ月勉強しなさい。
それで身の振り方もわかるようになるだろう。
Cでやった事はJavaなりC++なりC#なりで必ず役に立つ。
それに1つの言語をマスターすれば他の言語を覚えるのに時間はかからない。
0078デフォルトの名無しさん
NGNGコピペニマジレスカコワ(ry
0079デフォルトの名無しさん
NGNG本当にありがとうございます。
実は10時間くらい調べて聞いたのですがまだ調べたりなかったようです。ペコ
77さん本当に参考になりましたっす。C言語の入門書慎重に選んで熟読しプログラミングは覚えるより慣れろ
らしいのでがんばってやっていきたいと思います。
0080デフォルトの名無しさん
NGNGBASICやアセンブラの場合は、他の言語覚えるのにまだまだ時間かかると思うけどな。
0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNG日本語の勉強もしておけよ。
仕事でプログラミングをする積もりなら読解力と文章構成力が必要になるからな。
■ このスレッドは過去ログ倉庫に格納されています