C++相談室 part19
レス数が1000を超えています。これ以上書き込みはできません。
0001v(^・^)v
NGNGただし質問の前にFAQに一通り目を通してください。
また、テンプレートライブラリ(STL含む)に関する質問は
専用の別スレへどうぞ。
過去スレ、関連スレ、関連リンクなどはこちら>>2-10
0002v(^・^)v
NGNG[Stroustrup]
禿 http://www.research.att.com/~bs/
C++に関するリンクの総本山でもあります。
[C++ Final Draft International Standard]
http://www.kuzbass.ru/docs/isocpp/
http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
[JTC1/SC22/WG21 - C++]
http://std.dkuug.dk/jtc1/sc22/wg21/
規格書の重箱の隅的な話題などが読めます。
[C/C++ Users Journal]
http://www.cuj.com/
[Object Management Group]
http://www.omg.org/
[Association of C & C++ Users]
http://www.accu.org/
[news]
news:comp.lang.c++
news:comp.lang.c++.moderated
[ML]
cppll(日本語) http://www.trickpalace.net/cppll/
メインページにC++に関する良質なC++日本語リンク集があります。
0003v(^・^)v
NGNGC++FAQ Lite http://www.parashift.com/c++-faq-lite/
C++FAQ(日本語) http://www.bohyoh.com/CandCPP/FAQ/
Cとその仕様を比較しながらの解説なので分かりやすい。
*** 質問の前に必ずこの二つに目を通してください ***
[STL]
http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
Standard Template Library プログラミング on the Web
リファレンス的内容。http://www.wakhok.ac.jp/~sumi/stl/
STL Programmer's Guide http://www.sgi.com/tech/stl/
[boost]
これに関しては公式のドキュメント、又はソースを読むのが一番です。
ただし日本語でいくつか有益な情報が読めます。
Let's boost http://www.kmonos.net/alang/boost/
shinichiroさん http://user.ecc.u-tokyo.ac.jp/~g940455/wp/
news news:gmare.comp.lib.boost.devel
0004v(^・^)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/
0005v(^・^)v
NGNG[GCC]
http://gcc.gnu.org/
(Windows上でのPOSIX環境構築 http://www.cygwin.com)
[Borland C++ Compiler]
http://www.borland.co.jp/cppbuilder/freecompiler/
[.NET Framework SDK]
1.0 http://www.microsoft.com/japan/msdn/netframework/downloads/sdk.asp
1.1βhttp://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/MSDN-FILES/027/002/056/msdncompositedoc.xml
[MSVC] コンパイラ以外のツール、ドキュメントです。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
(一括ダウンロードの時は上のURLに続けてこちらを入力してください
default.htm?p=/msdownload/platformsdk/sdkupdate/psdk-full.htm)
なお上記三者を組み合わせたプログラミングにおいてはこちらが分かりやすいです。
http://www.geocities.com/Tokyo/Ginza/5432/documents/winprog/index.html
[DigitalMars]
http://www.digitalmars.com/
[OpenWatcom]
http://www.openwatcom.org/
[Comeau]
http://www.comeaucomputing.com/
[intel C++ Compiler]
http://www.intel.com/software/products/compilers/
[metrowerks]
http://www.metrowerks.com/mw/default.htm
0006v(^・^)v
NGNGBoost http://www.boost.org/
STLport http://www.stlport.org/
Loki http://www.moderncppdesign.com/
LokiPort
MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
MSVC6.0 SP5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
ACE/TAO http://www.cs.wustl.edu/~schmidt/
Network、Thread、ORBなどのポータブルなライブラリ
Blitz++ http://www.oonumerics.org/blitz/
数値計算ライブラリとして人気がある、らしい
spirit http://spirit.sourceforge.net/
flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
パーサジェネレータ
他ライブラリリンク集
http://www.trumphurst.com/cpplibs/cpplibs.phtml
0007v(^・^)v
NGNGPart1 http://piza.2ch.net/tech/kako/980/980175292.html
Part2 http://pc.2ch.net/tech/kako/996/996640937.html
Part3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
Part4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
Part5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
Part6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
Part7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
Part8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
Part9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
Part10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
Part11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
part12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
part13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
part14 http://pc2.2ch.net/test/read.cgi/tech/1041328679/
part15 http://pc2.2ch.net/test/read.cgi/tech/1043605481/
part16 http://pc2.2ch.net/test/read.cgi/tech/1045746245/
part17 http://pc2.2ch.net/test/read.cgi/tech/1047560042/
part18 http://pc2.2ch.net/test/read.cgi/tech/1050177746/
0008v(^・^)v
NGNG【C++】template 統合スレ -- STL/Boost/Loki, etc.
part1 http://pc2.2ch.net/test/read.cgi/tech/1037795348/
part2 http://pc2.2ch.net/test/read.cgi/tech/1047978546/l50
【C++】Boost使い集まれ!
http://pc2.2ch.net/test/read.cgi/tech/1033830935/
STLスレッド
part1 http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
part2 http://pc3.2ch.net/tech/kako/1026/10267/1026793823.html
Generic Programming with C++ Template
http://pc.2ch.net/tech/kako/1008/10085/1008593126.html
0009v(^・^)v
NGNG[GCC]
GCCについて
part1 http://pc2.2ch.net/tech/kako/1007/10077/1007731543.html
part2 http://pc2.2ch.net/test/read.cgi/tech/1046179115/
祝・GCC 3.0リリース http://pc.2ch.net/test/read.cgi/unix/992942337/l50
[Digital Mars]
Code of the Nerds" Digital Mars C/C++
http://pc2.2ch.net/test/read.cgi/tech/1044210976/l50
[Borland]
C++Builder相談室
part1 http://piza2.2ch.net/tech/kako/969/969458279.html
part2 http://pc.2ch.net/tech/kako/997/997074601.html
part3 http://pc3.2ch.net/tech/kako/1016/10160/1016065855.html
part4 http://pc2.2ch.net/tech/kako/1035/10355/1035596146.html
part5 http://pc2.2ch.net/test/read.cgi/tech/1045542179/l50
タダで使えるBorland C++!
part1 http://pc3.2ch.net/tech/kako/1002/10023/1002377328.html
part2 http://pc2.2ch.net/test/read.cgi/tech/1030493157/l50
[VisualC++]
VisualC++相談室
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc2.2ch.net/tech/kako/1036/10368/1036897197.html
0010v(^・^)v
NGNGpart1 http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
part2 http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
part3 http://pc2.2ch.net/tech/kako/1038/10381/1038160750.html
part4 http://pc2.2ch.net/test/read.cgi/tech/1044196393/l50
part5 http://pc2.2ch.net/test/read.cgi/tech/1048698321/l50
VisualC++(MFC限定)相談室 MFC7.dll
http://pc2.2ch.net/test/read.cgi/tech/1047949606/l50
Windows Programing for C/C++(Not MFC)
http://pc2.2ch.net/test/read.cgi/tech/1018239290/l50
COM の世界を斬る!
http://pc2.2ch.net/test/read.cgi/tech/981823340/l50
ATL 相談室
http://pc2.2ch.net/test/read.cgi/tech/1029029882/l50
managed C++ やろうぜ!!
http://pc2.2ch.net/test/read.cgi/tech/1014486422/l50
0011デフォルトの名無しさん
NGNG0012前スレ991
NGNGふむ。訂正します。
インスタンスをnew以外で作成するのを禁止しないと、あぶない。>delete this;
0013デフォルトの名無しさん
NGNGこれこれこういうプログラムを作れというような問題を提供して、模範
解答みたいなソースもあるサイトないですか?
0014デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG問題解くのはそれからだ。
0017デフオルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNGどうやって禁止するんだ?
0019デフォルトの名無しさん
NGNGprivateコンストラクタ&コピーコンストラクタ+生成用staticメンバ関数
>>17
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
0020デフォルトの名無しさん
NGNGすげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
0021デフォルトの名無しさん
NGNGそれを言うならスタティックリンク
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNGしょうか?小文字のnullっていうのも見たことあるような気がしますが。
しかし0を使うのがいいと何かの本に書いてあった気もします。
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNGGW終わったのに香ばしくなってきたぞ
0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG003428
NGNGどういう時に使ってはいけない?
一応動くけどこれはやばいだろ、非効率だろ
ってのを教えて欲しい。
0035デフォルトの名無しさん
NGNGそんな質問には答えようが無い
0036デフォルトの名無しさん
NGNGVCはやめろってこと?
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNGってよく怒り出す人いるじゃん。
0040デフォルトの名無しさん
NGNG怒るのはどうかと思うが、とりあえず違うことに間違いない。
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGテンプレートライブラリを
ダイナミックリンクできるのか?
vector <int> とかよく使われるものは
DLL から提供できるようにしてたり?
というか、10K も増えてたら
ダイナミックリンクされてないと思うが。
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG標準c++ > 標準語
VC > 関西弁
同じ日本語じゃないか!!
0047デフォルトの名無しさん
NGNG0048名無し
NGNG0049デフォルトの名無しさん
NGNG全然触れていなかったり、なぜかCの入出力関数を使ってお茶を濁していたり
するのが多くて
0051デフォルトの名無しさん
NGNG005251
NGNG0054デフォルトの名無しさん
NGNG禿しくワロタよ
0055デフォルトの名無しさん
NGNGというのをローカル変数で定義しましたが、値は初期化されてますでしょうか?
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGもしかして、リサイズでは元の値は保持されて追加部分は初期化ですか?
だったらすごい。
0058デフォルトの名無しさん
NGNGメンバ変数は最初と最後のどっちに書くのが一般的?
0059デフォルトの名無しさん
NGNGリサイズでは元の値は保持されて追加部分は初期化です。
ポインタやイテレータは死ぬけど。
0060デフォルトの名無しさん
NGNGアクセス指定で順番が変わるのが一般的だと思う。
public→protected→privateの順で書けば、インターフェースが見やすい。
で、一般的にメンバ変数は全部private。
なので、最後に書くのが一般的と言えるかもしれない。
0061デフォルトの名無しさん
NGNG>ポインタやイテレータは死ぬけど。
必ずしも死んでしまうわけではないし、判別も可能だと思うが
006255
NGNGそういう問題でないでつ。
>判別も可能だと思うが
了解です。
自分的にはもう一回ポインタ取り直すだけで十分かも。
0063デフォルトの名無しさん
NGNG最初こうしてたけどメンバを直接参照する inline メソッドが
書きにくいんだよな・・・。
0064デフォルトの名無しさん
NGNGなんで?
まあ宣言が下にあるのに使えるってのは奇妙には感じるか。
0065デフォルトの名無しさん
NGNGclass C{
public:
inline void m();
};
inline void m(){
// ...
}
これでいいやん
0066デフォルトの名無しさん
NGNGclass C{
public:
inline void m() { p_ = 1; }
private:
int p_;
};
これでいいやん
0067デフォルトの名無しさん
NGNG昔は、データと機能をあわせたものとか言ってたけど、
Javaなんかじゃ機能(メソッド)だけのもあるよね。
C++はどうなん?
0068デフォルトの名無しさん
NGNGお前の好きにしてええよ
0069デフォルトの名無しさん
NGNGそれは言語の問題じゃない
オブジェクト指向を勉強したら?
007058
NGNGそっか、publicから書くのが普通だったのか・・・。
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG何が聞きたいのか未だにわからん。
0075デフォルトの名無しさん
NGNG原則として、システム全体で共通なインクルード、#defineやtypedefなどは
ヘッダファイル sys_common.h に記述。(下層モジュール毎にも設ける)
機能ごとのクラス定義はクラス毎にヘッダファイル my_class.h に記述、
メンバ関数はヘッダファイルに対応するソースファイル my_class.cpp に記述。
これで綺麗に整理できるし、インクリメンタル・コンパイルにも対応できる。
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG0078デフォルトの名無しさん
NGNGC++ではメンバ関数のみのクラスはあまり無い。
それならただの関数で十分。 ネームスペースで分けることもできるし。
0079デフォルトの名無しさん
NGNGメンバ関数のみのクラスは主にインターフェイスとして使うときとか。
メンバ関数を純粋仮想にして
>>78の言う用途ならstaticなメンバ関数を使うとか
0080デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1052537020/57-67
008167
NGNG>>79
マジレスサンキュー。
しかし、そこなんだよね。
俺はC++屋だから、「うーん。これはグローバル関数かな」とか考える。
そのように教育されたから。
ところが、クラスしかないJava屋さんは、そういう発想がない。
とにかく、なんでもクラスにしてるように見える。
そこで、気になるのが、>>69の「それは言語の問題じゃない 」みたいな反応なんだよ。
最近の風潮としては、オブジェクト指向が基本だよな。
とすると、Java屋のやってることと俺のやってることがなんで違うんだろう?
もしかして、C++の常識も変わったの?みたいな。
ああ、すまん。言ってて俺もわからなくなったわ。
0082デフォルトの名無しさん
NGNGJava厨ってC++厨を装いたがるよな。
ナンカコンプレックスあるの?
0083デフォルトの名無しさん
NGNG実装じゃなく概念を理解しろってことだろ
言語が違うんだから実現方法が違うのは当たり前
0084デフォルトの名無しさん
NGNGよく「オブジェクトは状態を持つ」って言うじゃないですか。
それって、コンストラクタで値を設定するだけで、メンバ関数は
ぜんぶconstってクラスはおかしいってことでしょうか。
データを変更できないので、それは「状態」ではないと。
確かに、そういうクラスのメンバ関数は、グローバル関数でも
実現できそうだけど、クラスの組み合わせで考えた方が
ずっと楽ですが。
0085デフォルトの名無しさん
NGNGなんでやねん。
0086デフォルトの名無しさん
NGNGコンストラクタで設定された後は変えることは出来ない。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNG"状態が常に一定である”
0089デフォルトの名無しさん
NGNG>>77も言ってるが、すべてのファイルがsys_common.hに依存するのは(・A・)イクナイ
>>79
関係ないけど、たまにメンバ変数をそのクラスに入れればいいのに
それを他所のクラスにおいて、staticメンバ関数(パラメータにその変数を使う)だけの
クラスを作るヤシがいて困るw
0090デフォルトの名無しさん
NGNGデバッグ用マクロ/関数とか、
そういう基本的なのは
sys_common.h みたいなのになるのも
仕方が無い気もするが。
0091デフォルトの名無しさん
NGNGはい、スコープが全体に及ぶデバッグ用定義やコンパイルオプション類の
#ifdefなど一元管理上どうしても必要です。
CからC++になって変わった事といえば、設計の仕方や考え方が変わった。
従来は、構造化言語世代主流の「データ・フロー」と「処理手続」のふたつが
軸だった気がする。
オブジェクト指向になってからは、クラスという「データ」と「処理手続」をカプ
セル化したオブジェクトが中心になり、処理のフローもそのオブジェクトの
時系列的な状態遷移で捉える様になった。と思う。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG>配列の要素数を得るマクロとか、
そういうのは使うところでだけincludeすれば。
>>91
>はい、スコープが全体に及ぶデバッグ用定義やコンパイルオプション類の
>#ifdefなど一元管理上どうしても必要です。
コンパイルオプションはコンパイルオプションで処理すればいいし、
デバッグや単体テストは別ビルドにすればいいと思うのだがどうか。
0094デフォルトの名無しさん
NGNGプロジェクトの管理をする立場になってみると考えが少し変わる。
コマンドラインを使用していると、オペミスは証拠が残らないので、
コンパイルオプションのミスに誰も気づかない事があった。
以降、ソース側でオプションスイッチの記述を明確にしていたよ。
俺は現場から離れてン年経つので少し古いやり方かな。
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG>94は「少し古いやり方かな」って書いてるじゃん。
>94が現場を離れたのはmakeが普及するよりも以前なんじゃないの?
# いつだ? 70年代か?
0097デフォルトの名無しさん
NGNGウィザードリーオンライン開発中。Java
0098デフォルトの名無しさん
NGNG009994
NGNG当時の現場ではコンパイルミス、未コンパイル、リンクミスが頻発していた。
俺が初めてmakeを導入。管理者に使い方を伝授したら神扱いされたw
P.S.
内緒だがその現場は在京大手電機メーカの某事業所。
西の松下、東の●●のライバル方ね。
0100デフォルトの名無しさん
NGNGmake使った上で
>コマンドラインを使用していると、オペミスは証拠が残らないので、
>コンパイルオプションのミスに誰も気づかない事があった。
とは相当な神だなw
010194
NGNGだってMS-DOSのバッチファイルにIF文やラベルを使って条件分岐
の制御が書けるだけでヒーロー、UNIXのコマンドが打てるだけでも
ヒーローだったもんなw。
レベル的に「パーミッションって何ですか?」だぜ?!
0102デフォルトの名無しさん
NGNGとまらないのだろうな。
0103デフォルトの名無しさん
NGNGそろそろC++の話に戻ろう。
0104デフォルトの名無しさん
NGNGどうでもいい。偉い人に従っとけ。
迷ったら、
do {
...
} while(true);
をドゾー
0105デフォルトの名無しさん
NGNGその議論は信じるな。
0106デフォルトの名無しさん
NGNG{
...
}
0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNGここから落せる
0110デフォルトの名無しさん
NGNG0111デフォルトの名無しさん
NGNG馬鹿なプログラマーしか残らないんだって。
なるほどって思ったよ。
0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNGそういう器を持っているかいないかの違いはおおきいな。確かに。
0115デフォルトの名無しさん
NGNG言ってる奴はリストラになったり。
0116デフォルトの名無しさん
NGNG技術の蓄積は望めないわな。
人が変われば、また一から教えるぞと。ああ、疲れる・・・
0117デフォルトの名無しさん
NGNGって覗きにいくと、いまだに平屋のプレハブ賃貸だったりすることも。
0118デフォルトの名無しさん
NGNGつぶれる、と言っている社員と優秀な人間は、
必ずしもイコールでは無いからな。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNGクラスのオブジェクトへの参照(リファレンスではないです)を返す関数の戻り値の型は、
リファレンスあるいはポインタのどちらがいいんでしょうか?
各々にメリット・デメリットがあれば教えてください。
0122デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG藻前ら「オブジェクトへの参照(リファレンスではない」の意味がわかったのですか?
俺にはさっぱり・・・
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNGC++ の機能としての「参照(& を使う奴)」ではなく、
「ポインタ(* を使う奴)」と「参照(& を使う奴)」をまとめて表現する
「参照(プログラミング用語一般における)」という意味でしょ。
>>121
動的に確保したのならスマートポインタで返すのがいい。
そうでなければ、それなりに。
参照変数は再初期化できない欠点があるけど、
変な値で初期化する事が難しいという利点がある。
ポインタ変数は再初期化(C++ の用語としての初期化じゃない)できるという利点があるけど、
変な値が比較的入りやすいという欠点がある。
あとはその兼ね合いで...。
0132デフォルトの名無しさん
NGNGリファレンスと書くとリファレンスならリファレンスで返せよと言われてしまうので、
自己矛盾的な書き方をしたと予想して>>125を書きましたが何か
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG参照の方が使いやすいね。
0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNGvoid kakezan(int a,int b)
{
}
main()
{
int a = 5;
int b = 1;
a =kakezan(a);
}
kakezan(a,b)
でa=125
b=5にしたいのですが
void kakezan(int a,int b)
{
}
の部分を何て書けばいいのですか??
0138デフォルトの名無しさん
NGNGケースバイケース
0139デフォルトの名無しさん
NGNG引数のリストがあっていないような。
0140デフォルトの名無しさん
NGNGa =kakezan(a); をa =kakezan(a,b);とおいて・・・
不可能だと思う。
bを書き換えることができないから。
0141デフォルトの名無しさん
NGNG0142137
NGNGa = kakezan(a,b)です。
これでもだめですか??
0143デフォルトの名無しさん
NGNG{
return a*b*5;
}
0144デフォルトの名無しさん
NGNG関数の形があれじゃ無理。
多分エラーか警告になる(voidを受けるようなコード書いたことないから分からない)。
0145デフォルトの名無しさん
NGNG{
b=5;
return 125;
}
0146デフォルトの名無しさん
NGNG{
b=5;
return a=125;
}
0147デフォルトの名無しさん
NGNG0148144
NGNG0149137
NGNGすいませんど素人でペコリ(o_ _)o))
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNGK&Rによれば宣言なしは暗黙でint型宣言されたものと解釈します。
0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG釣りか?ここはC++スレだぞ。
釣りなら分かっていると思うが、C++では宣言なしに関数を呼び出すことはできない。
0155デフォルトの名無しさん
NGNGint* pa=&a;
}
void main(void){
func(0,1,2,3,4,5);
}
と、したときにfuncの引数の数を数える方法はないですか?
int* pa=&a;で先頭が分かるんですが、最後を知る方法を考えつけません。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNG0158ホントはC使い
NGNG関数コール時の引数の受渡しメカニズムを知ってる?
>>156の言う通り、スタックフレームを介した引数の渡し方(スタックへの
引数の積まれ方)をヒントにして、func関数へ終端を示す識別も一緒に渡す。
また引数に任意の型を順不同で混在して渡したい場合、型情報と交互に
ポインタ型で渡せば、func関数側では型サイズに関係なく引数を取り出せる。
一緒に渡された型情報を元にswitchで振り分けてキャストを掛ければ良い。
0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNGそれでも引数の数はわからないじゃん
0161デフォルトの名無しさん
NGNGvoid func(int a,int b){ va_list ap; va_start(ap, a); func(ap, 2, a); va_end(ap); }
void func(int a,int b,int c){ va_list ap; va_start(ap, a); func(ap, 3, a); va_end(ap); }
void func(int a,int b,int c,int d){ va_list ap; va_start(ap, a); func(ap, 4, a); va_end(ap); }
void func(int a,int b,int c,int d,int e){ va_list ap; va_start(ap, a); func(ap, 5, a); va_end(ap); }
void func(va_list ap, int num_of_args, int a){ int* pa=&a; }
0162デフォルトの名無しさん
NGNGenum {XXX=-1 /*ありえない数値*/};
void func(int a,int b=XXX,int c=XXX,int d=XXX,int e=XXX,int f=XXX) { }
どっちにしろ現実的じゃない。
そもそもどういう用途で可変長引数を渡したいのか白状しなさい。
void main(void)
{
int tbl[] = {1,2,3,4,5,6};
std::vector<int> v(tbl, tbl + sizeof(tbl) / sizeof(tbl[0]));
func(v);
}
void func(std::vector<int> &v)
{ int n = v.size(); ..... }
でいけないわけでもあるのか?
0163デフォルトの名無しさん
NGNGva_argが無効になるまでループさせてカウントすればいいじゃん
0164デフォルトの名無しさん
NGNGアクセス違反で死ぬんでは
0165370
NGNGわざわざポインタにして->しないとダメなんですか?
0166デフォルトの名無しさん
NGNGソース見せてくれ。
0167デフォルトの名無しさん
NGNGtypedef struct st_Leap{
Face face; //表情
int SYOKU_YOKU ; //食欲
int RENAI; //恋愛度
int KOUFUN; //興奮度
}Leap;
↑グローバル
↓描画関数内
if(Leap.face == NORMAL){
if(rand()%100 !=5) //まばたき
TextureData = (GLuint *) TexLayer->ipic; //通常
else
TextureData = (GLuint *) TexLayer->next->next->next->ipic; //つむり目
}
ギャルゲの心理パラメータなんだけど・・
0168デフォルトの名無しさん
NGNGFace クラスにはちゃんと == 演算子は定義されているんだろうか。
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNGエラー自体は.に出ます。
0171デフォルトの名無しさん
NGNG0172370
NGNG0173デフォルトの名無しさん
NGNGtypedef struct st_Leap{...} Leap;
Leap leap;
とした上で
if(leap.face == NORMAL)
ではないのかな。
0174デフォルトの名無しさん
NGNGa.face == NORMAL
これなら通りそう。Leap.faceでは何を指すのかわからない…。
0175370
NGNGstruct st_Leap{
Face face; //表情
int SYOKU_YOKU ; //食欲
int IN_YOKU ; //飲欲
int SUIMIN_YOKU; //睡眠欲
int UNDOU_YOKU; //運動欲
int KYUUKEI_YOKU; //休憩欲
int HAKAI_YOKU; //破壊欲
int BUTSU_YOKU; //物欲
int HOUSHI_YOKU; //奉仕欲
int WA_YOKU; //話欲
int SAWARI_YOKU; //触欲
int HP; //体力
int KIGEN; //機嫌
int RENAI; //恋愛度
int KOUFUN; //興奮度
};
st_Leap Leap;
if(Leap.face == 〜〜
なら通るんですけど、タグを使って出来ない。。
0176ホントはC使い
NGNGtypedef A B; // AからB型を定義する
<例1>
typedef unsigned int u_int; // unsigned int から u_int 型を定義
u_int a; // unsigned int a; と同じです
<例2>
typedef struct XXX { // struct XXX から YYY 型を定義
int n;
char b[20];
} YYY;
YYY yyy; // struct XXX yyy; と同じです
yyy.n = 0;
strcpy( yyy.b, "(・∀・)イイ!" );
0177174
NGNG構造体名を TAG に別名 typename をつけるだけだったと思うんだけど…。
st_Leap Leap; みたいなことを struct 宣言のところでやるなら
struct st_Leap { ... } Leap; で良かったと思う。
0178370
NGNG>YYY yyy; // struct XXX yyy; と同じです
ダメでした。
D:\プログラム\Leap\Leap\main.cpp(575) : error C2143: 構文エラー : ')' が '.' の前に必要です。
if(Leap.face == NORMAL){ ←575行目
0179ホントはC使い
NGNGtypedef struct st_Leap {
・・・(中略)・・・
} LEAP; // ←LEAP型を定義
LEAP Leap; // ←LEAP型のLeap変数を宣言!
・・・(中略)・・・
if ( Leap.face == NORMAL ) {
・・・(中略)・・・
}
これでどうだ!
0180370
NGNGはい、全く同じコードを書いて、それで178のエラーが出たんです。。うぅ。
他の構文には全く間違いはありません。だって175のやり方では動いたんですから。
でも179のやり方ではどうしても動かないんです。。
0181デフォルトの名無しさん
NGNGC++ならtypedefの必要はないぜ。
0183181
NGNG0184370
NGNG0185デフォルトの名無しさん
NGNGそれから、以下のことを覚える事。
struct Point {
int x;
int y;
};
は、Point という構造体型を定義するものである。
ここで定義するのは「型」であって、「変数」ではない。
つまり、この状態ではまだ変数は作られていないわけだ。
そして、この型を持った変数は次のようにして作られる。
struct Point pt; /* C の場合 */
Point pt; /* C++ の場合 */
この時、Point は int と同じように「型」であり、
pt が新しく作られた「変数」である。
これをふまえると、
Point.x = 0;
というのはおかしいことが分かる。
なぜなら、Point は型であって変数ではないからである。
pt.x = 0;
ならいい。pt は Point 型の構造体変数だからである。
0186370
NGNG0187デフォルトの名無しさん
NGNGそこで、次のような技巧が使われる事がある。
typedef struct ___Point {
int x;
int y;
} Point;
typedef というのは、ある型の「別名」を作るものである。
つまり、そこで作られるのもやはり「型」である。
typedef は普通の変数を定義する時と同じ式のあたまに
typedef と書く事で使う。
しかし、できてくるのは「変数」ではなく「型」である。
0188デフォルトの名無しさん
NGNGstruct ___Point {
int x;
int y;
}
が元の「型」に相当し、Point が「別名」に相当する。
このようにすれば、C でも C++ でも
この構造体「型」を struct というのを付けずに
Point だけで参照する事ができるようになる。
従って、
Point pt;
と書く事ができる。
この時、Point は「型」であり、pt は「変数」である。
Point.x = 0; がおかしいことと、
pt.x = 0; が正しい事はもう言うまでもない事だろう。
0189370
NGNG0190デフォルトの名無しさん
NGNGtypedef の技巧を使う必要は無い。
あれは C でも struct を付けるのが面倒な場合に
さぼれるようにするための技巧。
0191ホントはC使い
NGNG上の>>187の構造体定義と型宣言をした後に、
Point pt;
とすれば、Point型のpt変数が宣言される。以降好きなようにメンバへアクセス
すれば良い。
pt.x = 0;
pt.y = 10;
の様に代入も可能だし、
Point pt[] = { { 0, 0 }, { 10, 20 }, { 30, 100 } };
の様に配列の初期化付き宣言も可能である。
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNG> あれは C でも struct を付けるのが面倒な場合に
> さぼれるようにするための技巧。
そう言ったらおもいっきり馬鹿にされた。
他にどう違うのかさっぱりわからん・・・・
0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNGゲーム製作においてそんなに気にする必要があるのか?
少なくとも C++ のみを使ってる人は typedef なんか使わない。
大体バリバリにクラスとかテンプレートとか使うから
そもそも C でもコンパイルできることなんか考えない。
0196194
NGNG0197370
NGNGこんな感じです。
0198デフォルトの名無しさん
NGNGtypedef boost::shared_ptr<Character> CharacterPtr;
typedef std::vector<CharacterPtr> CharacterArray;
とかやらないの?
0199ホントはC使い
NGNG一度、標準ライブラリのヘッダファイル stdio.h の中身を読んでみましょう。
初期に学ぶFILE 構造体も typedef されてるから、FILE *fp; と構造体である
ことを知らずして宣言、使用できる。これがもし、typedef されていなかったら
C言語習得を挫折するものが増えてしまう。
0200デフォルトの名無しさん
NGNGC なら Face として使うには
typedef enum ___Face {
NORMAL,
NEMUI,
TSUMURI,
MABATAKI,
KANASHIMI,
YOROKOBI,
} Face;
とするわけだが、
なぜ enum では typedef しなくて良く、
struct では typedef しないといけないのかな?
両方しなくていいんだよ。
C++ ならね。
(ここは C++ 相談室ということも忘れずにね)
0201デフォルトの名無しさん
NGNGそれとこれとは別の話。
typedef を「struct, union, enum をさぼるために使う」のは
C++ ではやらない。
しかし、「別のところ」では typedef はよく使う。
0202デフォルトの名無しさん
NGNGそれは分かっている。俺もそういう使い方しているから。
その構造体に関する関数を使う人が、メンバーにアクセスするかしないかで決めている。
でも、なんでもかんでもtypedefする人が結構いないか?
div_tって構造体であることを知らなければならないはず(メンバーにアクセスするはずだから)なのにtypedefしているよな(ぼそっ)
0203370
NGNGそうなんですけど、通らない理由が分からないと、気になって先に進めないです。
0204370
NGNG0205デフォルトの名無しさん
NGNG0206370
NGNGtypedef struct st_Leap{
Face face; //表情
int SYOKU_YOKU ; //食欲
int RENAI; //恋愛度
int KOUFUN; //興奮度
}Leap;
Leap leap;
↑グローバル
↓描画関数内
if(leap.face == NORMAL){
if(rand()%100 !=5) //まばたき
TextureData = (GLuint *) TexLayer->ipic; //通常
else
TextureData = (GLuint *) TexLayer->next->next->next->ipic; //つむり目
}
0207デフォルトの名無しさん
NGNGif(leap.face == NORMAL){
のちょっと前あたりに何かあるんじゃ?
0208デフォルトの名無しさん
NGNGstructだけtypedefしてenumはtypedefしないのは気持ち悪い。
0209デフォルトの名無しさん
NGNG0210370
NGNGif(Leap.face == NORMAL){ ←575行目
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGLeapをleapにする。end。
0213デフォルトの名無しさん
NGNGただの打ち間違いかと。
>>206
0214デフォルトの名無しさん
NGNG0215ホントはC使い
NGNG珈琲が旨い・・・
0216デフォルトの名無しさん
NGNG0217ホントはC使い
NGNG括弧の対応がズレていないか?
0218デフォルトの名無しさん
NGNG何かそれくさいな
むしろ>>206のほうが打ち間違いか?
0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG確かg++では通るとか言っていたんだよなぁ(ログ見る気ない)
0221370
NGNG0222デフォルトの名無しさん
NGNG0223370
NGNG0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNGおいおい少しは>>216にからめよ(w
0226デフォルトの名無しさん
NGNG( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←>>370
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNG0229ホントはC使い
NGNGマチクタビレタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< >>370の反省会はまだ〜?
\_/⊂ ⊂_)_ \____________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| |
| 淡路たまねぎ .|/
0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNG370はまだだよ Д`)
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG0235370
NGNG0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNGガッ
0238ホントはC使い
NGNG日本人なので、CleapとCreapの違いが・・・
0239ホントはC使い
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNGこのたびは妹がご迷惑をおかけしました。
そもそも>>205で
>もう一度使ってるところコピペしてみ。
といわれて貼った>>206がどうして問題ない無いコードだったのか
悔やまれてなりません。
0242bloom
NGNG0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGリンク貼れ
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG作り方の書いてあるホームページあったら教えてください
直接ここで教えてもいいですよ
ちなみにレスはしません
0248デフォルトの名無しさん
NGNGg++ -S source.cxx
0249デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG#include<iostream.h>
int main()
{
int i;
cout<<"表示する回数を指定してください"<<endl;
cin>>i;
if(i==0){
cout<<"0回はできません"<<endl;
}
else
cout<<i<<"回表示を行います。"<<endl;
do{
cout<<"猫ふんじゃった "<<i<<"回目"<<endl;
--i;
}while(i);
return 0;
}
まだ 自分で考えてこれぐらいしかできません・・・
こんな調子でほんとにいいんでしょうか?・・・
(;´Д`)誰か漏れに光を・・・あとできれば、もっと綺麗に短く書くとどうなるか教えてください。
おながいします・・・・゚・(つД`)・゚・
0255デフォルトの名無しさん
NGNGいいんじゃないすか?
強いて言えば
#include <iostream>
using namespace std;
とか
0256デフォルトの名無しさん
NGNGifブロックに{}つかるなら、else以下にもつけとうたほうが
統一されててよいかな。
0258デフォルトの名無しさん
NGNGint foo(){ return 0; }
void function()
{
return (void)foo();
}
これはC++的にOKですか?
gcc,VC++.NETではコンパイルが通るのを確認済み。(VC6は通らないはず)
0259254
NGNG漏れの書いたやつ 8行目にreturn 0;入れてないから
だめでつたね・・・今気がつきました。
でも、がんがります!(`・ω・´)連続カキコスマソ・・・
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNG最近のvoidは「型なし」→「なんでも型」の解釈だっけ?
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNGんなわけねぇだろ
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNGテンプレートで、使うときにポインタを定義して、実態用のメモリを確保しようと思います。
sizeofすると、ポインタ自体の大きさしか分からないんですが、
ポインタから実態の1個分の大きさって取ったりできますか?
0266デフォルトの名無しさん
NGNGsizeof(*dp)==sizeof(double)
0268デフォルトの名無しさん
NGNG読み込み側で使おうと思うのですが、
---DLL---
class CA{};
CA* create(){return new CA;}
---main--
template<typename T>void mainside_creater(T* pt){
}
void main(void){
mainside_creater(create());
}
とするとTにはクラスの型情報が入るんでしょうか?
0269デフォルトの名無しさん
NGNGtypeof(a) b;⇒int b;
のようになるtypeofって作れるんですかね??
どうやっても思いつかないんですが。
0270デフォルトの名無しさん
NGNG自作して、受け取り側でキャストしてるんですが、
こういう使い方って、なんか問題あったりします?
0271デフォルトの名無しさん
NGNGANSI Cよりも昔のC言語のやりかただなそれ。
せっかくの型付けを捨てるのはもったいない。
0272デフォルトの名無しさん
NGNGまあfstreamなんかだと仕方なくマニピュレータ使ってるけど。
みんなはどうしてる?
聞かせて、エロい人!!
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG効率よくきっちり書く方法がいまいちわからんので sprintf
0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNGttp://boost.cppll.jp/HEAD/libs/format/index.htm
0277デフォルトの名無しさん
NGNG.演算子でtypedefメンバにアクセスできれば良いんだけどねえ。
0278デフォルトの名無しさん
NGNGtemplateとかつかうと
template< class T > void foo( T v ) {
T b;
} とか、できるでしょ?
そんでもって、
int a;
foo( a );
とかってやったらええやん。
0279デフォルトの名無しさん
NGNGfooを呼び出した関数でTを取得したいんだろ。
template <typename T> struct hage{typedef T type;};
template <typename T> hage<T> foo(T){return hage<T>();}
...
int a;
foo(a).type b;//エラー
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNGそれとも本体はあくまでクラス定義のところにのみあるのであって、
インスタンスが持ってるのは単に関数ポインタみたいなものなのかな。
キシュツっぽいのでsageときますが。
0282デフォルトの名無しさん
NGNGインスタンスのthisポインタが関数に暗黙的に渡される
int Hoge::foo(int a)
{
}
は実は
int foo(Hoge* this,int a)
{
}
内部では↑に近いことになってる
でいいんだっけ?
0283デフォルトの名無しさん
NGNGtypedef std::vector<MoejpResPtr> HogePtrArray;
class HogeManager
{
private:
HogePtrArray hoges_;
public:
void Foo()
{
//処理色々
}
・
・
<A>
void Add(HogePtr hoge)
{
hoges_.push_back(hoge);
}
<B>
void Add(const HogePtr &hoge)
{
hoges_.push_back(hoge);
}
};
上記のような状況の時hoges_に要素を追加するメソッドを作りたい時
<A>と<B>どちらがより良い方法ですか?
AでもBでも参照カウントが壊れる事はないですか?
0284デフォルトの名無しさん
NGNGtypedef std::vector<MoejpResPtr> HogePtrArray;
↓
typedef std::vector<HogePtr> HogePtrArray;
に置き換えて下さい…
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNGありがとうございました。
0287デフォルトの名無しさん
NGNG{
protected:
static std::set<CHoge*> s_hoges;
public:
CHoge();
~CHoge();
};
--------------
static std::set<CHoge*> CHoge::s_hoges;
CHoge::CHoge()
{
s_hoges.insert(this);
}
CHoge::~CHoge()
{
s_hoges.erase(this);
}
こういう風にして自分のインスタンスの一覧を管理してるプログラムがあるんですが、
CHogeのオブジェクトがグローバル変数だった場合、プログラム終了時に、CHogeの
インスタンスよりもs_hogesの方が先に消滅してしまうらしく、CHogeのデストラクタ
でアクセスエラーが発生します。どうすりゃええのですか
0288デフォルトの名無しさん
NGNGendl の正体を調べてみ。けっこう勉強になると思うよ。
// 混乱するかもしらんが
0289デフォルトの名無しさん
NGNGModern C++ Design 読んでフェニックスシングルトンだ。
ただしその前に一時間ほど
> CHogeのオブジェクトがグローバル変数
にならないように設計を考えれ。
0290デフォルトの名無しさん
NGNGModern C++ Designですか、読んで見ます
>> CHogeのオブジェクトがグローバル変数
>にならないように設計を考えれ。
グローバル変数にしなくても、例えばアプリケーションクラスg_Appのメンバにしても同じことが起こってしまうのです
0291デフォルトの名無しさん
NGNG「クラスの継承をいつ使うか」です。
制限がきつい気がします。で、聞きたいことは
「みなさんは、どんなところで継承を使ってますか?」です。
継承の有効利用法を教えてください。
ちなみに僕は使ってません!!
0292デフォルトの名無しさん
NGNG使っても使わなくてもいいんじゃないかしら。
0293デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNGだからなあ。
判断において最も重要なのは、インターフェースの継承が必然かどうか、だろうね。
そうでない場合は、たいがい不要。
どんな言語でもそうだけど、実際のコードでは
言語仕様上仕方なく行うトリックのための継承(&その他)と、
オブジェクト指向的な意味での継承とが
入り混じってるから、初心者は戸惑うだろうねえ。
0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG0300デフォルトの名無しさん
NGNG正確にはインスタンス+関数ポインタ。
あと、マルチキャストの機能も含まれている。
0301デフォルトの名無しさん
NGNGそれは余計だな。
0302デフォルトの名無しさん
NGNGttp://www.kmonos.net/alang/boost/classes/bind.html
0303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
NGNGつーか検索たら出てくるね。
http://www.tietew.jp/cppll/archive/4813
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNGint a;
.....
}
こんな感じで変数の定義ってnamespaceの
中にいれたりしますか?
とすると、このnamespaceをヘッダファイルにして
あちこちのファイルでインクルードするとまずいんですよね?
ど〜すんでしょ。関数なら宣言と定義わけたりするんですよね。
あとconstなんかも大丈夫なんですよね。ひょっとしてextern?
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNGCString型インスタンス内にある文字列のポインタを取得するには
GetBuffer()を使う以外の方法は無いんでしょうか?
あとMFCのリファレンスには、GetBuffer(void)の事が書いてないんですが
これってあまり使うべきでない(推奨されない)という事なんでしょうか?
教えてください。
0309デフォルトの名無しさん
NGNGCString型インスタンス内にある文字列の先頭アドレスを取得するには
GetBuffer()を使う以外の方法は無いんでしょうか?
あとMFCのリファレンスには、GetBuffer(void)の事が書いてないんですが
これってあまり使うべきでない(推奨されない)という事なんでしょうか?
教えてください。
0310デフォルトの名無しさん
NGNGconst char *p=s;//OK
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNG2chを卒業してください
0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNGどうもありがとうございます。
CStringのインスタンス自体は、ただのポインタ変数だったのですか。
もう一つ教えてください。
CStringは、CStringT からインスタンシエートされたクラスなんですか?
だとしたら、どのヘッダファイルの中で typedef されているのでしょうか?
度々すみません。教えてください。
0317紺野あさみ
NGNG川o・-・)ノ <先生!こんなのがありました!
http://www.togoshi.ginza.st/konno/kono01.html
http://togoshi.ginza.st/konno/kono04.html
http://www.togoshi.ginza.st/konno/kono10.html
http://togoshi.ginza.st/konno/kono07.html
http://www.togoshi.ginza.st/konno/kono08.html
http://togoshi.ginza.st/konno/kono05.html
http://www.togoshi.ginza.st/konno/kono03.html
http://togoshi.ginza.st/konno/kono06.html
http://www.togoshi.ginza.st/konno/kono02.html
http://togoshi.ginza.st/konno/konno09.html
0318デフォルトの名無しさん
NGNG暗黙の型変換について調べたほうがいいよ
0319デフォルトの名無しさん
NGNGのとき、
num[0] = 0;
num[1] = 0;
num[2] = 0;
のように、
配列にすべて0を代入する関数って、標準関数にありますでしょうか。
どなたか教えてください。
0320デフォルトの名無しさん
NGNGのとき、
num[0] = 0;
num[1] = 0;
num[2] = 0;
のように、
配列にすべて0を代入する関数って、標準関数にありますでしょうか。
どなたか教えてください。
0321デフォルトの名無しさん
NGNG>>320
ない。というかいらない
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNG/ ヽ / ヽ
______ /U ヽ___/ ヽ
| ____ / U :::::::::::U:\
| | // ___ \ ::::::::::::::|
| | | | | U :::::::::::::|
| | .|U | | ::::::U::::| >>325以外吊っとけよ…
| | | ├―-┤ U.....:::::::::::::::::::/
| |____ ヽ .....:::::::::::::::::::::::<
└___/ ̄ ̄ :::::::::::::::::::::::::|
|\ | :::::::::::::::::::::::|
\ \ \___ ::::::
0327デフォルトの名無しさん
NGNG代入と初期化は異なる演算だとあれほど・・・・
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNG代入ごときにfor使うのか?
0330デフォルトの名無しさん
NGNG引数のクラスに、追加した関数テンプレートを作りたいのですが
どう作ればいいでしょうか
template<class T>
T* MakeTask(CTaskMgr& task,DWORD ID)
{
T* p = new T;
task.add(p);
..省略..
return p;
}
みたいな感じにしたいのですが、
引数にT型がわかる者がないので、上手くいきません。
テンプレートクラス
template<class T> class TaskBuilder{
static T* Make(CTaskMgr& task,DWORD ID);
};
// TaskBuilder<CTask>::Make(task,id); で使う。
で、静的関数やfriend関数にしても 上手くいかないです。
何か方法ありませんか?
0331デフォルトの名無しさん
NGNG何故、CString 型変数を const char* 型変数へ代入する事が出来るのか
どうしても分かりません。
どういう原理で、CString 型が LPCSTR と同等と見なされるのですか?
誰か教えてください。
0332デフォルトの名無しさん
NGNG「上手くいかない」じゃわからないよ。
0333デフォルトの名無しさん
NGNGCString::operator LPCTSTR
0334デフォルトの名無しさん
NGNGp=MakeTask<ClassName>(task,id);
0335デフォルトの名無しさん
NGNGVisualC++(MFC限定)相談室へいってらっしゃい
0336デフォルトの名無しさん
NGNGこういうことがしたいの?
class CTask { ... };
class CTaskA : public CTask { ... };
class CTaskB : public CTask { ... };
class CTaskC : public CTask { ... };
class CTaskMgr {
private:
list<CTask*> task_list;
public:
template <typename T>
T* add() {
T* p = new T;
task_list.push_back(p);
return p;
}
...
};
CTaskMgr task;
task.add<CTaskA>();
task.add<CTaskC>();
task.add<CTaskB>();
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNGswitch(int key = ...) ...
if(FILE* fp = fopen(...)) ...
...
とか使いますか?
0339デフォルトの名無しさん
NGNG0340330
NGNGエラーが出るって意味です。
error LNK2001: 外部シンボル "
"void __cdecl MakeTask(class CTaskMgr &,unsigned long)" (?Make@@YAXAAVCTaskMgr@@K@Z)" は未解決です
みたいな感じです。
>>334
それも、やってみたけど、だめでした。
>>336
試してみたのですが
error C2275: 'CTaskA' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
みたいなエラーが出てしまいます。
->なんて使って無いのに。
環境は、VC++6.0です。Boostでも、理不尽なエラー出るし、無理なのかな。
もうすこし、いろいろと試して見ます。
0341デフォルトの名無しさん
NGNGtemplate <class T>
struct dummy{};
temp,ate <class T>
T *make(dummty<T>){ return new T; }
make(dummty<ClassName>());
0342330 == 340
NGNG関数実体を、ヘッダに書かずに、cppに書いてた。
テンプレートの初歩ミスでした。
(´Д`;) ゴメンナサイゴメンナサイ
∨)
((
(;´Д`) スミマセンスミマセン
( 八)
〉 〉
(´Д`;)、 コノトオリデス
ノノZ乙
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNGガッ
0345デフォルトの名無しさん
NGNGそれって、新しく定義した変数の値が評価されることになるの?
0346デフォルトの名無しさん
NGNG普通は例えば
typedef int (*FC)(int, int);
FC p;
のようにすると思いますが、これをtypedef使わずに一行で定義する
となると、どういう書式になるのでしょうか?
0347デフォルトの名無しさん
NGNG表示中のメニューの座標(画面の左上端を(0,0)とする)を
取得するには、どうしたら良いでしょうか?
CMenu::GetMenuInfo で試みようとしましたが、
それでは座標が所得出来ないので。
0348デフォルトの名無しさん
NGNG板違いじゃねぇの?
0349デフォルトの名無しさん
NGNGint (*p)(int, int);
0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNGint (*p)(int, int);
つーか、typedef で新しく定義する型名が入る位置
→ typedef int (*ここ)(int, int);
は、直接変数宣言するときに変数名が入る位置。
0352346
NGNG質問間違えた。さっきの質問じゃたしかに答え簡単ですよね・・・。
でなくてですね・・・
typedef int (*FC)(int, int);
FC func(FC); //関数宣言
これをtypedefなしの一行で・・・。
0353デフォルトの名無しさん
NGNG0354346
NGNG0355デフォルトの名無しさん
NGNGint (*func(int(*)(int, int)))(int, int);
0356デフォルトの名無しさん
NGNGfunc(引数) という式の値は int ( *FC )(int, int) という型。
→ ゆえに int ( *func(引数) )(int, int);
引数は int (*)(int,int) 型
→ 従って int ( *func( int(*)(int,int) )(int, int);
0357356
NGNG0358デフォルトの名無しさん
NGNGint a;
char b;
cin >> a; cin >> b;
上記で、入力された値が期待された以外のもの、つまりaに整数以外の文字が
入力されたり、bに数字や2文字以上の文字列が入力された場合のエラー処理は
どう書けばよいでしょうか?
0359デフォルトの名無しさん
NGNGif (cin.fail()) {
入力がおかしい
}
0360デフォルトの名無しさん
NGNGclass CHogeImpl
{
...
}
class CHoge : public CHogeImpl <CHoge>
{
...
}
こういうのって、どういう意味合いのテクニックを
あらわしているんでしょうか?
0361デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=curiously+recursive+template+pattern
http://www.fides.dti.ne.jp/~oka-t/cpplab-selfref-template.html
class T に、T用の(メンバ)関数やtypedefを外から
付け加えるようなテンプレートを書きたいときに使う。
0362346
NGNGサンクス。
なんとなくわかった気が。
typedef int (*FC)(int, int);
の式でFCの部分をfunc(引数)で置き換えて、typedef取ればいいのかな?
int (*func(引数))(int, int);
さらに引数も置き換えて
int (*func(int (*)(int, int)))(int, int);
で、もし仮引数名(pとする)もつけるとすると
int (*func(int (*p)(int, int)))(int, int);
ってことでいいのかな?
0363デフォルトの名無しさん
NGNG素直にtypedefが一番
0364デフォルトの名無しさん
NGNGヘッダファイルどうやってまとめればいいの?
0365デフォルトの名無しさん
NGNG0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNGドウヤルンデスカ? ヘルプミテモミツケレマセン・・・
・゚・(つД`)・゚・ツリジャアリマセン・・・タシケテクダサイ・・・
0368デフォルトの名無しさん
NGNGy = pow(x, 2.0); /* xの二乗 */
0369デフォルトの名無しさん
NGNGtemplate <int i,int n>
struct static_pow{
    enum{
        tmp=((n==0)?0:i),
        tmp2=((n==0)?0:n-1),
        tmp3=((n==0)?1:i),
        value=static_pow<tmp,tmp2>::value*tmp3        
    };
};
struct static_pow<0,0>{
    enum{
        tmp=0,
        tmp2=0,
        tmp3=0,
        value=1
    };
};
int main(int argc, char* argv[])
{
    int a[static_pow<2,3>::value];
    std::cout << sizeof(a)/sizeof(a[0])<<std::endl;
    return 0;
}
0370367
NGNGコンパイラトオリマシタ・・・ドコカニゼンカクスペースデモハイッテタノデソウカ・・・
・゚・(つД`)・゚・オテスウカケマシタ・・・>>368,369サソアリガトン・・・
0371デフォルトの名無しさん
NGNGよみづらい
0372デフォルトの名無しさん
NGNGはじめて見た。感動した。
0373デフォルトの名無しさん
NGNGそれは何より。
0374デフォルトの名無しさん
NGNGnewのときだっけ?(なんかごっちゃになる)
Cだと定義スコープによるんだよね、たしか。
0375デフォルトの名無しさん
NGNGデフォルトコンストラクタは呼ばれるけど、
int とかだと「何もしない」んで値は未定。
ただ、変数が静的だと 0 で初期化される。
これは C と同じ。
あと、1 つでも初期化したら後ろは全部 0 で初期化される。
だから、
int vec[100] = { 0 };
ってやったら全部 0 で初期化される。
これも C と同じ。
int new したときは fill_n でも使って代入汁。
0376デフォルトの名無しさん
NGNGmain()
{
map<string, int> test;
test["abc"]++;
cout << test["abc"] << endl;
}
で1が出力されるよ。
0377デフォルトの名無しさん
NGNGmap の場合はintのデフォルトコンストラクタ呼ぶ(と言うと正確では無いか
もしれんが要は0で初期化)でしょ。
ただ、VC++ だと、Release モードだと0 に初期化してくれるけど、Debug モー
ドだとしてくれないとかあるっぽいんだよね。
で、余談だけど、前の開発者がヴァカで Debug モードを全然使っていなかった
らしく、全然初期化してない変数がいっぱいあって、Debug モードだと実行出
来ないっちゅー悲惨なコードの保守を任されてヒーヒー言った経験あり。
# これがまたクソコードで・・・と、愚痴はやめときます。ハイ。
0378377
NGNGつまり、クラスのメンバーに int の変数持ってる場合、
Release モードだとそのメンバーがゼロで勝手に初期化される事もあって、
それによりかかったコードがバラ撒かれてて悲惨な目に合った、と。そういう意味です。
0379デフォルトの名無しさん
NGNGへー、ちなみに何の開発が仕事で?
0380デフォルトの名無しさん
NGNGしょうがないからずっとRelease。 文句在るのか?
0381デフォルトの名無しさん
NGNGPentium200ぐらいですか
0382デフォルトの名無しさん
NGNG400ぐらいです。
0383デフォルトの名無しさん
NGNGstaticメンバだけの関数をDLLから使うにはどうしたらええの?
0384デフォルトの名無しさん
NGNGされますが。
0385377
NGNGとある科学計算に使うようなソフトの一部なんだけどね。
オブジェクトのコピーを memcpy 使ってたり、とにかく悲惨なコードで、
deleteを知らんらしくメモリリークもしまくりで、さらには継承、っちゅー
かそれ以前にモジュール化も知らんのかなんなのか同じコードのコピペが至る
所に撒き散らされてて・・・(以下略
0386デフォルトの名無しさん
NGNG関数がメンバ持ってるの?
0387デフォルトの名無しさん
NGNG勝手に?指定しなきゃいけないよね?
>>386
ごめんstaticメンバだけのクラス。
0388デフォルトの名無しさん
NGNG*prevや*nextはpublicにします?protectedにします?
0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNG双方向ならstd::listで確定。
0391デフォルトの名無しさん
NGNGコンパイルオプションによっては自動的にインライン展開されるかもしれないが、
DLLとしてエクスポートする指定がコンパイラに伝えることができるなら、
非インラインの実体も残るはず。
伝えることができないなら、DLLの作成に失敗する(たぶんリンクエラーになる)はず。
0392デフォルトの名無しさん
NGNGstruct A {
int a; A() { }
};
struct B {
int b; B() : b() { }
};
int main()
{
cout << A().a << endl; // 無茶苦茶な値
cout << B().b << endl; // 0
int * p = new int;
cout << *p << endl; // 無茶苦茶な値
delete p;
p = new int[1];
cout << p[0] << endl; // 無茶苦茶な値
delete [] p;
p = new int();
cout << *q << endl; // 0
delete p;
}
ってなりました。
初期化子入れないとデフォルトコンストラクタが呼ばれる、
と思ってたけど、実際にデフォルトコンストラクタを指定すると挙動が違うんですね。
これって、int とかだと明示的に指定しないと
デフォルトコンストラクタが呼ばれないという仕様なんでしょうか?
0393デフォルトの名無しさん
NGNGintとかの基本データ型は明示的にコンストラクタを呼ぶと0初期化になるが
呼ばないと不定なのは規格通り
0394392
NGNGありがとうございました。
0395デフォルトの名無しさん
NGNG( ´∀`)<この使い方間違ってるんでしょうか
std::stringstream ss1, ss2;
while(std::getline(ss1, ss2.str(), '\n')); ←コンパイルエラー
error C2180: 制御式に void 型があります。
)
0396デフォルトの名無しさん
NGNGss.str()は一時オブジェクトで、左辺値になれません。
> error C2180: 制御式に void 型があります。
エラーメッセージが全然関係ないのが気になるけど。
0397デフォルトの名無しさん
NGNGDebugモードだと初期化しないんじゃなくて、メモリを確保した時点で0xCDで
初期化されるんだよ。デバッガで変数やメモリを見れば初期化し忘れている
ことが一目で分かるようになってる。
ちなみに、ビッグエンディアンの環境だと0xDEADBEEFを同様の目的で使って
たりする。
0398395
NGNG了解しました。サンクス。
VC5なんだが、stringstreamのヘルプ見たら
basic_string<E, T, A>& str();
なんて書いてあるもんだからつい。
エラーメッセージは結局謎。コンパイルは出来てもよさそうなんだが・
0399デフォルトの名無しさん
NGNGhoge()
{
A& a = GetA();
}
というのは文法的にどうなの?
Aがlongだとコンパイルエラー(long からlong&に型変換出来ない)で、
class A {}; だと警告も出ないんだけど。
0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNG一次オブジェクトへのリファレンスはconstの場合のみ有効。
const A& a = GetA(); ならばok。
constでない場合はコンパイルエラーは出ないかもしれないが、処理が次の
行に移った時点で既にaの指すオブジェクトが無効になっている可能性がある。
気が利くコンパイラはaのスコープが外れるまで一次オブジェクトの寿命を
延ばしてくれるかもしれないが、そのようなプログラムは実装依存になる。
0404399
NGNGオブジェクトの寿命の方は問題ないのですが。
実は、このコードだとスタックが破壊されるんですよ。
前後どっちかに100byte程度のバッファを置いてると分かりますけど。
でも、コンパイル時に警告も出ないのでなんでかな?と思ったわけです。
0405399
NGNG一次→一時ですよね。
なるほど const で試してみます。
0406デフォルトの名無しさん
NGNG作成したインスタンスを初期化するために、下のような初期化メソッドを持たせています。
class CSuper {
protected:
int m_value;
public:
CSuper();
~CSuper();
void Init(int inValue){m_value = inValue};
};
これのサブクラスを作った場合、追加されたメンバ変数も初期化したいので
class CSub : public CSuper
{
protected:
int m_value2;
public:
CSub();
~CSub();
void Init(int inValue, int inValue2) {
Init(inValue);
m_value2 = inValue2;
};
};
こんな風にしています。でもこれだと、CSubを作るときに間違ってCSuperのInit(int inValue)を呼んでしまうかもしれません。どうすればいいですか。InitSuper(), InitSub()とか名前を変えたほうが良いんでしょうか。
どっちにしても間違った初期化関数を呼んでしまう可能性がありますし、美しくない気がします。
0407399
NGNG0408デフォルトの名無しさん
NGNG曖昧さの解決にはスコープ解決演算子を使用する。
0409デフォルトの名無しさん
NGNGCSubのインスタンスに対してCSuper::Init出来てしまうので困っているのです
0410デフォルトの名無しさん
NGNGここに行って勉強しな
0411デフォルトの名無しさん
NGNGCSub sub;
sub.CSuper::init(0); // コンパイル可能
sub.init(0); // エラー
わざわざ CSuper:: を付けないといけないから、
特に問題は起こらないと思うけどな。
0412デフォルトの名無しさん
NGNGいや、それはOKなんですよ
でも今回はCSub::Initは引数が二つに増えてるので、CSuper::Initのオーバーライドはして無いんです。
0413デフォルトの名無しさん
NGNGsub.Init(0);
sub.Init(0, 1);
どっちもOKになるのが困ります
0414デフォルトの名無しさん
NGNGsub.Init(0);はコンパイルエラーになりました
ウワーンハズカシー
ていうか何で?
0415デフォルトの名無しさん
NGNGおかしいと思った。
基底クラスのメンバ関数はオーバーロードされないの。
あなたの危惧していたことを防ぐためにね。
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG両方使えるようにしたいときはusingで引っ張り込めば良いアルネ
0418デフォルトの名無しさん
NGNG0419デフォルトの名無しさん
NGNGこんな感じかな?
テストはしてないけど。
#include <cstdlib>
void convStrToWStr(const std::string& src, std::wstring& dst) {
const int length = src.length() + 1;
wchar_t* buf = new char[length];
std::mbstowcs(buf, src.c_str(), length);
dst = buf;
delete [] buf;
}
0420デフォルトの名無しさん
NGNGstatic std::wstring str2wstr(const std::string &str)
{
return std::wstring(WideString(str.c_str()).c_bstr());
}
0421デフォルトの名無しさん
NGNGなぜそんなトンチンカンなことをしたがるのか、まずは自分の頭を
デバッグした方がいいかと…
0422デフォルトの名無しさん
NGNGコードとデータを双方とも同じ64KB領域に置かないって奴です。
これって具体的にはどういうことなんでしょう?
c++でどう書けばコードとデータが近傍に配置されたり
されなかったりするんでしょうか?
0423377
NGNGそうだったんでつか。知りませんでした。勉強になりました。アリガトウ。
でもどーせなら未初期化のメンバー変数がある場合にはワーニング出てくれれ
ばいいんですけどねぇ・・・Wallでも出ないっすよねぇ・・・
0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNG激しく萎えています。 CD-ROMは48倍速だしHDDは最近買った60G(そこそこの速度はある)
いったい何をしているんだこのインストーラー(藁
スタジオ(フルセット)だったらどんぐらいかかるの?
0427デフォルトの名無しさん
NGNGパフォーマンスの関係でメンバを初期化しないってのはよくある話なので
そんなことでいちいちワーニング出されても困るよ。
>>426
HDDがPIOモードになってたりしない?
0429418とは別の人
NGNGそのまんまな名前ですね。(wcstombs)
0430419
NGNG0431デフォルトの名無しさん
NGNG>>427
427さん情報ありがとデバイスまねじゃみたけど、PIOではなかったよ。
でもTHX
21:52-> 23:10 1時間20分
おおよそ時間は正しかったな.....
VC単体(スタンダート)のインストでこれなら フルセットは半日(1日?)かかるなw
実際どうなんだろう。体験者いないかな。
0432デフォルトの名無しさん
NGNGえり〜んぎ まいたけ ぶなしめじ
0433デフォルトの名無しさん
NGNGヘキサゴン見たな(w
0434デフォルトの名無しさん
NGNGつれた
0435デフォルトの名無しさん
NGNG( ^3^)/http://homepage3.nifty.com/coco-nut/
0436bloom
NGNG0437デフォルトの名無しさん
NGNGやっぱりね(w
0438r
NGNGclass B : public A {};
class C : public A {};
int foo( int i ) {
// これがうまくいくのに
A* p2 = i > 1 ? new B() : new A();
// なんでこれはコンパイルエラーなの?
A* p1 = i > 1 ? new B() : new C();
}
~
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG-pedanticで甘くなることもあるもんなの?バグ?
0441デフォルトの名無しさん
NGNGサンプルコードにはそれっぽい名前をつけてほしいにょ。
0442デフォルトの名無しさん
NGNGクラス B と C の間に直接の継承関係がないから
条件式の結果を何の型にすればいいのか判断できないんじゃないかな。
共通の基底クラスにしてくれればいいもんだけど、
そうするようにはなってないんだろうね。
というわけで、どちらか(または両方)明示的にキャストすれば大丈夫だね。
A* p1 = i > 1 ? static_cast<A*>(new B()) : new C();
0443418とは別の人
NGNGプラットフォーム非依存なコードを書くにはどうしたらいいのだろうか。
以下だとMS932限定。
void strtowstr(const std::string& src, std::wstring& dst)
{
setlocale(LC_ALL, ".932");
size_t length = src.length() + 1;
wchar_t* buf = new wchar_t[length];
mbstowcs(buf, src.c_str(), length);
dst = buf;
delete [] buf;
setlocale(LC_ALL, "");
}
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNG飛んでくるとしたらデストラクタが例外投げることになるし、
飛んでこないとしたら、ディスクがいっぱいになったりしたときにエラーが検知できないし・・・。
0446デフォルトの名無しさん
NGNG>>441 スマソ。次から。
>>442 ありがと、そか、かたっぽだけでいいのか....
>>440 まじっすか?不思議だ...つか、規格上は許されるべきものだったのか...mmmm。
0447デフォルトの名無しさん
NGNGDAOを使用してvc側でaccessに接続する処理を作りました。
これを関数化して
vb側から引数としてmdbファイルのフルパスとテーブル名を渡して
指定したテーブルのデータを戻り値としてvb側で受けたいのですが
vc側でデータが見つかる度にvb側に値を返すように作れるでしょうか?
その方法としてどのような方法があるでしょうか?
コールバック関数という言葉を耳にするのですが、このような処理に
使用できるようなら その技法を教えていただければ助かります。
よろしくお願いします。
0448デフォルトの名無しさん
NGNG高度杉。無理ポ
0449デフォルトの名無しさん
NGNGLoadLibrary()呼び出し側から制御する事は出来ますか?
0450デフォルトの名無しさん
NGNG-pedantic つけた時の奴は
void* への変換が起こってるっぽいので、
期待する結果は得られないと思う。
0451デフォルトの名無しさん
NGNG>>449
そういう環境依存の話は C++ 相談室でよりも
それぞれの環境のスレで聞くのが幸せ。
0453デフォルトの名無しさん
NGNGアセンブラでクラスの作り方教えてください
0454デフォルトの名無しさん
NGNG最近CからC++へと移行したのですが、コンパイル時間が長過ぎるのが気になります。<C++
ちょくちょくとコンパイルしつつ進めて行くタイプなのでこれは自分的には非常に困るのです。
そこで何かコンパイル時間を短縮するような方法、工夫等あれば教えて頂けませんでしょうか?
環境はlinux-g++です。
0455デフォルトの名無しさん
NGNGincludeするヘッダファイルを減らすとか・・・
実際に減ってるか確認しないと意味ないけど。
あとは、gcc-3.4まで待つか、VC++に鞍替えする。
0456デフォルトの名無しさん
NGNGインライン宣言されているとき、
ちゃんとインライン展開されるのでしょうか?
されるなら関数呼び出しオーバーヘッドはないですよね?
0457デフォルトの名無しさん
NGNGシラネーヨ コンパイラに聞け
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNGレス有難う御座います。
やっぱりこういうものなんですね、 C++での開発というのは。
とりあえずは指摘のようにヘッダファイルを減らしてみます。
precompiled headersって奴ですね。楽しみです。
ttp://gcc.gnu.org/gcc-3.4/changes.html
Linuxプラットフォーム向けに開発しているのでVC++に鞍替えするという選択肢はないのです。。。
0460デフォルトの名無しさん
NGNG分かりました、これからコンパイラに聞いてみます。
0461デフォルトの名無しさん
NGNGテキストに画面に文字表示するとき
cout >> "ハロー"
みたいな感じで書いてあるのですが
仕事でもこれを使うのでしょうか?
printfの方が激しく使いやすい気がするのですが。
cinもしかりです。
0462デフォルトの名無しさん
NGNGcout << "ハロー"
0463デフォルトの名無しさん
NGNGcout で小数を表示する時、
指数表示を強制できるの?
0464デフォルトの名無しさん
NGNGcout << precision(3) << pi;
とか
0465464
NGNG0466デフォルトの名無しさん
NGNGそれですとテキストにはこんな感じでごちゃごちゃのってます。
cout << setw(4) << setprecision(2) << setiosflags(ios::right | ios::fixed | ios::showpoint)
<< 2.5
0467デフォルトの名無しさん
NGNG指数表示だって。
たとえば、その場合だと
3.14e+00
とか
2.5e+00
と表示されてほしいの。
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNGcout << hoge << endl;
ができないことに驚いたのですが wstringってどうやって使うために存在するんでしょうか?
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNGみなさんもそう思いませんか?
0472デフォルトの名無しさん
NGNGC++勉強中なので疑問に思ってしまうのですが、
なんで <<演算子のオーバーロードじゃなくて
wcoutが用意されているんでしょうか。
0473デフォルトの名無しさん
NGNGそれだ!
ありがとう!
0474デフォルトの名無しさん
NGNG激しく尿意なので、
boost::format でも使うべし。
0475デフォルトの名無しさん
NGNGhttp://www.cplusplus.com/ref/iostream/ios_base/_fixed_scientific.html
も参考に汁!
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNGC++ のストリームライブラリは、文字の定義を変えることによって、動作を変更できる。
デフォルトで char, wchar_t に対応したストリームが用意されている。
wcout は wchar_t 用に特殊化したストリーム。
ほかにユーザー定義型でも特殊化できる。
(例えば、入出力の単位データ幅を変更できたりする)
0478デフォルトの名無しさん
NGNGchar型変数内の1byteを16進数の文字コードで取り出したいのですがどうすればいいのでしょう・・・
0479デフォルトの名無しさん
NGNGMFCスレのマルチポスト真性教えて君の中の人ですか?
0480デフォルトの名無しさん
NGNGsprintf(s, "%02X", (char)c);
ライブラリを使わない実装は宿題とする
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNGもしくは、c が int で、中の値を char の範囲に落としたいとか。
0483デフォルトの名無しさん
NGNGsprintf( s, "%02X", (unsigned int)c );
でいいんじゃ?
0484デフォルトの名無しさん
NGNG0485デフォルトの名無しさん
NGNGchar str[] = { figures[(c&0xFF)/0x10], figures[c&0x0F], 0 };
0486デフォルトの名無しさん
NGNGchar cIn;
int iTmp;
int iCnt;
for( iCnt = 0; iCnt < 2; iCnt ++ ){
iTmp = cIn / 0x10;
if( iTmp >= 10 )
sOut[ iCnt ] = 'A' + iTmp % 10;
else
sOut[ iCnt ] = iTmp;
}
sOut[ 2 ] = '\0';
これでどーよ?
0487486
NGNGchar sOut[ 3 ];
char cIn;
int iTmp;
int iCnt;
for( iCnt = 0; iCnt < 2; iCnt ++ ){
iTmp = ( cIn / ( int )pow( ( double )0x10 , ( double )iCnt ) ) % 0x10;
if( iTmp >= 10 )
sOut[ iCnt ] = 'A' + iTmp % 10;
else
sOut[ iCnt ] = iTmp;
}
sOut[ 2 ] = '\0';
吊ってくる
0488デフォルトの名無しさん
NGNG初期化ができないと思うんで・・・。
0489デフォルトの名無しさん
NGNGconstメンバ変数はコンストラクタで初期化できる
0491488
NGNGじゃ、コンストラクタの定義ブロック内では
初期化できないんですね?
0492デフォルトの名無しさん
NGNGしているというのなら、それは代入だ。
0493デフォルトの名無しさん
NGNGあれは、一度どこかで定義しないといけないと思うのですが、
グローバルスコープで定義するとうまくいくのですが、
main関数内で定義すると「再宣言あるいは再定義エラー」に
なるのはなぜでしょうか?
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNG0496ピー子について
NGNG使い道はありますか?
aboutPiko()
{
//description
Obj Piko("piko"); //ピー子
Obj Bird("bird"); //鳥
Piko.is(Bird); //ピー子は鳥です。
Obj Sing("sing"), Morning("morning"), Tree("tree");
Bird.does(Sing).when(Morning).where(Tree);
Obj ChunChun("chunchun"), Cage("cage");
Piko.does(Sing).how(ChunChun).where(Cage);
Obj Wing("wing"), Shoulder("shoulder"), Folding("folding");
Bird.has(Wing).where(Shoulder).how(Folding);
//dialogue
Anser Ans;
Ans<<Is(Piko,Bird); cout<<Ans<<endl; //out=piko is bird
Ans<<Has(Piko,Wing); cout<<Ans<<endl; //out=piko has wing
Ans<<Where(Has(Piko,Wing)); cout<<Ans<<endl; //out=piko has wing where shoulder
Ans<<Where(Does(Piko,Sing)); cout<<Ans<<endl; //out=piko does sing where cage
Ans<<How(Has(Piko,Wing)); cout<<Ans<<endl; //out=piko has wing how folding
Ans<<When(Does(Piko,Sing)); cout<<Ans<<endl; //out=piko does sing when morning
Ans<<Why(Does(Piko,Sing)); cout<<Ans<<endl; //out=unknown
}
0497松田 融作
NGNG0499デフォルトの名無しさん
NGNGprivateメンバなら直接初期化はできないんじゃ・・・
0500デフォルトの名無しさん
NGNG{
static const int ITTEYOSHI = -2614;
};
通ったよ。bcc5.6.4
0501デフォルトの名無しさん
NGNGVC++は通らないので注意。
クラス定義の外で
static const int mona::ITTEYOSHI = -2614;
こう定義できる。
ただし、インクルードファイルに書くと多分多重定義で怒られるw
0502デフォルトの名無しさん
NGNGだから正しいコンパイラなら通るんだって。
VCは標準への準拠度が低いだけ。
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNGクラス定義の外ならstaticいらんでしょ。
というかstaticつけるとエラーだぜ。
0505デフォルトの名無しさん
NGNGだれもVCが正しいコンパイラとは言ってない。
0506デフォルトの名無しさん
NGNG0507デフォルトの名無しさん
NGNG整数定数ならな。
小数や配列(文字列)、ポインタは不可。
ヘッダファイルで直接定数を定義する場合も整数だけだから注意ナ。
何でこういう仕様になっているかというと、
整数定数の場合はアドレスを要求する必要がないからだ。
言い換えるなら、コード中に直接値を埋め込む事ができるからだ。
ポインタは論外として、
アセンブリ言語やってりゃ分かるが、
小数はコード中に直接値を埋め込む事ができないのが普通だし、
配列も定数を一要素だけ参照する分には問題ないが
変数でインデックスを指定するとどうにもならない。
ということだ。
0508デフォルトの名無しさん
NGNGはい。VC++7.1では通ります。
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNGg++,vc++,bccの中でlokiやboost::lambdaが通らないのはbccだけになります。
0511デフォルトの名無しさん
NGNGそれと、OpenWatcomとか火星とかは?
0512デフォルトの名無しさん
NGNGMarsやWatcomは知名度からして負けてます。
g++,vc++,bccが今の3大C++コンパイラと言っていいでしょう。
iccなんて一部の数値計算分野でしか使われないでしょうし。
0513デフォルトの名無しさん
NGNGVC7.1はもうすでに出てます
http://internet.watch.impress.co.jp/www/article/2003/0422/vstudio.htm
0514デフォルトの名無しさん
NGNGiostreamやSTLも普通に使えてクラスも定義できるんですか?
0515Addicted to C++ ◆cpp/Sz/v02
NGNG0516デフォルトの名無しさん
NGNG0517445
NGNGfstream::~fstream()は基本的に例外を投げないようになってる。
fstream::close()は失敗でsetstate(failbit)する(マスクに応じて例外を投げる)。
つまり、閉じるときのエラーを逃さないようにするためには、
fstream::close()を明示的に呼ばなければならない。
デストラクタに任せてしまうと、閉じるときのエラーは検知できない。
明日からはfstream使った後は明示的にcloseしよう。
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNGVS.NETとはまた違った趣があるね
使いやすいとは思わなかった
0521デフォルトの名無しさん
NGNGがんがったね
0523デフォルトの名無しさん
NGNGstruct p { int A; int B; double C; }
...
p *pp = new p;
p->A= x;
上記のように、ある構造体をnewで生成したのにデバグでアドレスを参照すると0x00000000になってしまいます
どうすればいいでしょうか?普通newすると新たなアドレスがセットされると思うのですが・・・
これって、newに失敗したってことなんでしょうか?
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNGデバグモードで起動させるとそこの処理でエラーになるので
「なんでかなー」と見てみると、newされた変数(?)のポインタが0x0000000になっているので
再度、ブレークポイントを宣言場所にセットして確認しました。
newの命令後はその変数が0x0000000になってしまっているようです。
ウォッチと、変数のウインドウで確認しました。
ためしに別のプロジェクトでちょっとした構造体をnewで生成してみると
普通に新たに生成されたアドレスがセットされました。
どうやら、今使ってるプロジェクトのみに発生する問題のようです。
ちなみに、構造体は線形リスト形式で内部で2つの同一構造体のポインタを保持する形式になっています。
struct Node {
int id;
int data;
Node *prev, *next;
};
となっています。
0526525
NGNGデバグモードで起動させるとそこの処理でエラーになるので 「なんでかなー」と見てみると
↓
エラーになるので「なんでかな」と思ってデバグモードで実行すると・・・です
0527デフォルトの名無しさん
NGNGそこまでの情報ではせいぜいコンパイラは VC6かな、と
コンストラクタで何か起きてるんじゃないか、というぐらいしかわからん
0528523
NGNGせいぜいのVC6です。
コンストラクタでの問題ですか。むー困りました
0529デフォルトの名無しさん
NGNG出来るよ。フリーなんだからちょっと使ってみればいいじゃん。
メンバーテンプレートも使えるし、それなりにそれなりかと。
でも、
#define INCLUDEFILE <includefile>
#include INCLUDEFILE
ってのが通らないから boost の config がinclude 出来ないんで
boost使うには結構 boost の方に手を入れる必要がある。
0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNGもしコンストラクタは書いてないのならとりあえず除外して
(むー困りました、じゃあるのかないのか分からん)
他にあるとしたら
・ヒープ破壊されてたり。ヒープ検査関数をnewの前に呼んでみるとか
・他のメモリ破壊(スタック, レジスタなど)
・本当にメモリが足りないとか
・もしアロケータを自分で書いてるとしたらそこをチェック(笑)
0532523
NGNGよし、こーなったら原因をしっかり理解するまではやめないぞー!
さて、
>もしコンストラクタは書いてないのならとりあえず除外して
コンストラクタがかかれていないってのも微妙に分からないのですが
もちろん、線形リストはオブジェクトではあります。
初期に先頭ノードと最終ノードを生成していますが
今回の問題地点とはちょっと違います。
で、問題の場所は線形リストへのリスト追加用メンバです。
処理としては先の構造体を使って
node nをnewで作成。
最終ノードの次ノード(最終ノード->next)ポインタにnのポインタをセット
nの前ノード(n->prev)に最終ノードポインタをセット
dataに値をセット
という処理です。ここで、nがしっかり生成されないのでnの前ノードに最終ノードポインタをセット
でメモリ(?)エラーになります。
ヒープ破壊ってのは怖いですね。ヒープ検査関数ってどんなのか「超駄目初心者」の私には検討つきませんが
ちと、MSDNでも調べてやってみます。
0533523
NGNG最適化・・・えと、どこ見ればいいですかね
本当に何も知らないですみません。
0534デフォルトの名無しさん
NGNG最終ノードの直前に挿入するんでないの?
0535デフォルトの名無しさん
NGNG�@(=初期ノードポインタ) prev NULL next�A
�A prev �@ next �B
�B prev �A next �C
�C(=最終ノードポインタ) prev �B next NULL
といった感じになってます。でさらに追加する場合
node *n= new nodeでまず、nを生成して
n->prev= (最終ノードポインタ);
n->next= NULL;
(最終ノードポインタ) = n;
私の(小さな)脳味噌だとこれで最終ノードにnというノードが追加されたと思うのですが・・・。
0536デフォルトの名無しさん
NGNGえーと、状況把握ですけど、具体的にはppに0x00000000が代入されるってことだよね。
それで、
>>532
失敗するノードって後のほうかな?最初の1個2個はOKで30万個くらいで失敗するとか?
0537523
NGNGで、実はその先に宣言しているクラスポインタに対してコンストラクタでnew生成しています
で、途中で
delete [クラスポインタ変数] ←内容をクリアしたいのでいったん開放
[クラスポインタ変数]= new [class] ←再度生成。
でその後、追加命令を出してるんですが、
これが原因くさいなーと思ってきました
0538デフォルトの名無しさん
NGNG北朝鮮の現体制が崩壊したとき、いったい何が起きるか。
2ちゃんねらの一人として、あらかじめ予言しておきます。
1)にわか反体制運動家の出現
それまで金正日体制に取り入ることができずに冷飯を食わされていた人間が、ある日突然
「俺は独裁に反対したためにずっと睨まれていたんだ」と言い出します。まるで金正日の
影響力が安全なレベルに下がるのを待っていたかのように、それまで名前も顔も存在も
知られていなかった「反体制運動家」が雨後のタケノコのごとくあちこちから出現。
体制崩壊の主要因が経済破綻だったにもかかわらず、まるで独裁政治を終焉に導いたのが
自分の手柄であるかのように自慢げに振舞います。
2)みんな「俺は強制されていた」
それまで金正日を将軍様と呼び、進んで独裁体制を支持していた人たちは、体制が後戻り
できないところまで破綻したのを見抜くやいなや「自分は騙されていたんだ!」「強制されて
いたんです!」と、自分たちも独裁政治の被害者であったことをアピールしはじめます。
まるで恋人に騙された女子高生のようにつぶらな瞳をパチクリさせながら、「純真な自分」が
意に反する支持を独裁者から強制されていたことを世界に向けて訴えます。
3)独裁体制が続いたのは日本のせいだ
そして「にわか反体制運動家」と「騙されていた善良な人たち」は口をそろえてこう言い出します。
「あんなひどい独裁体制が21世紀まで続いたのは、日本が経済支援をしたからだ!」
「金正日体制を裏で支えたのは日本だ!」
「北朝鮮に独裁国家があったのは、日本のせいだ!」
「日本は復興を支援して当然だ!」
これ、絶対当たりますから、あちこちに貼っておくといいですよ(笑)。
そのときに「ああ、そんなことは日本では前からネットで予想されてましたよ。」
と言って微笑むためにも、ね
0539523
NGNG>えーと、状況把握ですけど、具体的にはppに0x00000000が代入されるってことだよね。
そうです。ppをnewで生成すると、中身が0x00000000のNULLで帰ってきます
デバグヒープで確認しました(newの中身見てても良く分かりませんでしたがw)
>失敗するノードって後のほうかな?最初の1個2個はOKで30万個くらいで失敗するとか?
それだったら、まだあきらめつくんですが。実は生成後1回目(つまりコンストラクタ)での
1つ目(初期ノード)は普通にnewで生成されるんですが、次に追加メンバ関数からnewしようとするとNULLで帰ってきます。
0540523
NGNGエラーが出てきますねー
ということは、それ以前の処理でヒープ領域を使い果たしてる!?
そんな馬鹿なーw
0541デフォルトの名無しさん
NGNG> 実は生成後1回目(つまりコンストラクタ)での1つ目(初期ノード)は普通にnewで生成されるんですが、次に追加メンバ関数からnewしようとする
生成がコンストラクタだろ?生成後1回目がなんで「つまりコンストラクタ」なんだ?
生成後の1つめが初期ノードってのもおかしくないか?
「追加メンバ関数」ってなんだ?
わけわからん。
ソース晒せば?
0542デフォルトの名無しさん
NGNG今のところの事情だと
struct Node{
int id;
int data;
Node *prev, *next;
};
int main(){
Node *n1 = new Node;
Node *n2 = new Node;
}
このn2に0が入ることになるけど、どう?
0543デフォルトの名無しさん
NGNG文章は変だが意味としては
クラス宣言後の1つ目の処理=コンストラクタ
で使ってるnewは問題ないって言ってるんだろうな
たしかに文章力無いなら、ソース晒すのが一番早い
0544523
NGNG削ってたら動いちゃったりして・・・
どうも、問題ある呼び出し場所からどんなnewを使っても必ず0で帰ってきます
0545デフォルトの名無しさん
NGNGソースを晒さない限りわかるわけがない。
0546デフォルトの名無しさん
NGNGつーかおまえさ。
そんなことは普通聞く前に最低限することだろ。
デバッグの心構えがなってなくないか?
0547デフォルトの名無しさん
NGNGつーかおまえはスレきちんと嫁
>>523
>すません。C++一ヶ月未満の超初心者です
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNG内容を見てる限り、問題の個所よりも前で不正処理があると思う
どうでもいいが
削らないとデバグできない>>546に問題あると思うけど?
大掛かりなプログラムを1つも組んだこと無いだろ
0550デフォルトの名無しさん
NGNGバグ発見依頼するときには当然すべきことだよな。
0551デフォルトの名無しさん
NGNG何ゆえ
> 削らないとデバグできない>>546に問題あると思うけど?
という結論が導き出されるのかは知らんが
523は事実削らないでデバッグできてねーんだから削るしかないだろ
0552デフォルトの名無しさん
NGNG意味がわからん。削るっていうやり方はもう知ってるみたいだから
初心者とか関係ないと思うんだが。
0553デフォルトの名無しさん
NGNGそれもそーだね
(´-`).oO(ズイブンケズッテルナァ)
0554デフォルトの名無しさん
NGNGNode::Node()
{next = new Node;}
という落ちではなかろーか
0555デフォルトの名無しさん
NGNGVC6みたいだから試しに #include <crtdbg.h>して
アプリの最初で
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_CHECK
_ALWAYS_DF );
をやるようにしてみると、ヒープ破壊が発生したらその次のメモリ確保か開放のタイミングで
デバッグ情報が出るはず。
0556デフォルトの名無しさん
NGNG0すら返ってこないんじゃ・・・
0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNGヒープの確保に失敗した時点で、次のコンストラクタは呼ばれず、
一回目は正常終了する。むろん、充分スタックが在れば、の話
0559デフォルトの名無しさん
NGNGごちゃごちゃ言うより、ソース一行のほうが漏れは好きだナ。
曖昧な日本語の読解よりCのほうがすっきりしてるってことない?
0560デフォルトの名無しさん
NGNG言葉の定義が全て明文化されるもんな。
0561デフォルトの名無しさん
NGNGまさしく。ソースレベルなら実行してみれば
処理系特有のバグも発見できます。
0562デフォルトの名無しさん
NGNGって、実は削ってる最中に原因見つかって事故解決しちゃってる罠の確率が高いのでは
初心者をまた一歩成長させましたな。
というか、バグは事故解決しましょう
0563523
NGNGでも、確かに削ってみるってのはデバグとしては有効な手段のようですね
本当に無知でごめんなさい
動く状態と動かない状態。どちらも確認できました・・・・が!
その違いは問題のクラスとはまったく関係ない場所でした。
しかも、クラスとは関係ない配列にデータ入れてるだけですし。
もはやまったく理解不能です。でもここまで来たら>>562さんが言うように
自分で解決させなければならないと思います。皆さん色々ありがとう。
0564デフォルトの名無しさん
NGNG配列にデータ入れてるってのがメモリ破壊の典型的な原因行為なんだが。
その配列のために実際に確保されてるサイズを超えて書き込んだんじゃないの?
0565デフォルトの名無しさん
NGNGどうやら、ヅボシです。
コンパイルエラーが発生しないことを良いことに
[struct] A= new [struct]で宣言した変数を
そのまま配列として扱ったのが問題だったようです。
どうも、VBでの癖が抜けなくて、配列を甘く見すぎていたようです。
まぬけすぎでしたね。すみませんでした
0566デフォルトの名無しさん
NGNGVB→C++、か。
だいたんな選択だな。
C抜きで逝こうとは。
悪いことではないが。
0567デフォルトの名無しさん
NGNGもっともサイズ超えて書き込むとだめなのは同じだけど(^^;
ただdeleteの手間省ける。(例外に対処するなら必要だろうし)
0568デフォルトの名無しさん
NGNGでもあくまで入門レベルで終わってました。
やっぱり、VBの方が簡単という理由で使ってましたが
今作っているソフトがインタプリタではちと辛いのでVCに移行ということで
とりあえずC++の勉強に励んでます。
0569523
NGNGnewで生成した変数に配列を突っ込むことは駄目なんですよね?
たとえば
pp *p_1= new pp と宣言しておきながら
p_2[10]の配列を
p_1= p_2
といった感じで。
0570デフォルトの名無しさん
NGNGどういう意味でだめだと思ってるのかわからないけど、
ポインタ変数に配列を入れること自体は別にOK、ていうか常套。
p_1の値をどこかにとっておかないと後でdeleteできない、て言う意味ではだめ。
話は違うけど配列をnewで作りたいときは
p_1 = new [サイズ] pp;
解放は
delete [] p_1;//サイズは書かなくていい
もう知ってるかもしれんけど。
0571デフォルトの名無しさん
NGNGpp * p_1 = new pp; // pp型のオブジェクトを作り、そのアドレスをp_1に入れる
pp p_2[10]; // pp型の要素数10の配列
p_1 = p_2; // p_1が差している先のオブジェクトは放置して、p_1はp_2を指すようにする
この結果は、p_1が先に差していたオブジェクトはどこからも参照されなくなり
メモリリーク状態になる。
またp_1が差しているのはp_2そのものなので
p_1[3]を書き替えると p_2[3]が書き換わる。
うーん、入門書読むべし
0572デフォルトの名無しさん
NGNG親切にありがとう
つまり、ポインタの書き換えを安易に行うと痛い目にあうということですね。
というか、今もdeleteでエラってしまってるんですが・・・
どうやら、またnewで生成した配列関係が原因のようです
システムを破壊しそうなプログラムを組まないように注意しないといけないですね。
>>567さんが言っていたstd::vectorをちと見てみます。
0573デフォルトの名無しさん
NGNGttp://www.kmonos.net/alang/boost/classes/shared_ptr.html
ttp://www.kmonos.net/alang/boost/classes/scoped_ptr.html
開放する必要のあるリソースはデストラクタ使って開放しましょう。
一応std::auto_ptrもあるけど・・・
0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNGC++の勉強初めて1年以上経ってからだったからなぁ。
0576デフォルトの名無しさん
NGNGfstream in(filename);
if(!in) ...
と書くことができますよね。この if(!in) みたいナノを自分のクラスで実現したいのですがどう書いたらいいんですか?
0577デフォルトの名無しさん
NGNGvirtual Opened() = 0;
}
class File {
File( const char* filename, FileListener* listener ) {
fstream in(filename);
if( ! in ) listener -> Opened();
}
}
>>576 ってことか?
0578デフォルトの名無しさん
NGNGoperator bool() const でも実装しとけばー
0579デフォルトの名無しさん
NGNGif ( !in ) しか使う気がないなら
bool operator!()const
if ( in ) とか使いたいなら
>578か operator void*()const
ただしデメリットが大きめなのでおすすめできない。
(in + 1 とか void* p = in が通るようになる)
0580デフォルトの名無しさん
NGNGクラスの見本としては最悪の部類に入るから
まねしないでいいよ
0581デフォルトの名無しさん
NGNGこんなエラーが出たんですが、どういう意味なんでしょうか?
0582デフォルトの名無しさん
NGNG0583r
NGNGプロジェクト(?)にないファイルをincludeしてたりするんじゃない?
つーか、どんな処理系を使ったのかを書くと、漏れ以外の詳しい人が説明をくれるよ。
つーか、#include <0>とか#include "0"って書いてない?
0584デフォルトの名無しさん
NGNGどうしたら出来ますかね?
オーバーロードとテンプレートを使えば汎用的に
実装できそうな気はするのですが…
Get〜Set〜はもう嫌だヽ( `Д´)ノウワァァァァン
0585581
NGNGbox.rcファイルはちゃんと存在してます。
フォルダ内のファイルを変に動かしたりしたこともないはずなのですが……
0586デフォルトの名無しさん
NGNG__declspec(property)
0587584
NGNG回答どうもですm(__)m
しかしそれはVC依存ですよね?
同様にBCB依存で__propertyとかもあるみたいですが、
私が知りたいのはC++の機能?を駆使しての実装なんです 汗)
(処理系に依存するのは何か嫌なので)
うぅ聞いてるくせに生意気言ってすいませんです(TT)
0588デフォルトの名無しさん
NGNG{
int GetProp();
void SetProp(int Value);
class TProp
{
TMyClass *FThis;
public:
TPorp(TMyClass *This) : FThis(This) { }
operator int () { return FThis.GetProp; }
operator = (int Value) { FThis.SetProp(Value); }
}
friend TProp;
public:
TProp Prop;
TMyClass() : Prop(this) { }
}
こんな感じ?(コンパイルできるかどうかは確かめてません)
#ifdefで__propertyや__declspec(property)に切り替えられるようにしといた方がいいかも。
0589デフォルトの名無しさん
NGNG{
int GetProp();
void SetProp(int Value);
struct TProp
{
TMyClass *This;
public:
TProp(TMyClass *This);
operator int () { return This->GetProp(); }
void operator = (int Value) { This->SetProp(Value); }
};
friend TProp;
public:
TProp Prop;
TMyClass() : Prop(this) { }
};
コンパイルできるようにして見た。
0590デフォルトの名無しさん
NGNGちょっと凝ってみた。
#ifdef __BORLANDC__
#define PROPERTY(T, N) __property T N = { read = get_##N, write = set_##N }
#define PROPERTY_INITIALIZATION(T, N) dummy_##N()
#define PROPERTY_IMPLEMENTATION(T, N) int dummy_##N[0]
#else
#define PROPERTY(T, N) property_##N N
#define PROPERTY_INITIALIZATION(T, N) N(this)
#define PROPERTY_IMPLEMENTATION(T, N) \
struct property_##N \
{ \
self_type *_this; \
public: \
property_##N(self_type *t) : _this(t) { } \
operator T () { return _this->Get##N(); } \
void operator = (T v) { _this->Set##N(v); } \
}; \
friend property_##N
#endif
0591デフォルトの名無しさん
NGNGclass property {
public:
typedef T class_type;
typedef V value_type;
typedef const value_type& (T::*get_func_type)(void) const;
typedef void (T::*set_func_type)(const value_type&);
public:
property(class_type* pthis, get_func_type gf, set_func_type sf)
: cls_ptr(pthis), get_func(gf), set_func(sf) { }
const value_type& get(void) const { return (cls_ptr->*get_func)(); }
property<class_type, value_type>& set(const value_type& v) { (cls_ptr->*get_func)(v); return *this; }
operator const value_type&() const { return (cls_ptr->*get_func)(); }
property<class_type, value_type>& operator =(const value_type& v)
{ (cls_ptr->*set_func)(v); return *this; }
private:
class_type* cls_ptr;
get_func_type get_func;
set_func_type set_func;
};
property<class name, value type> prop;
コンストラクタで
prop(this, &class::getter, &class::setter)
昔何処かでこんなヤツみたんだよなー。とりあえず動いた。
たまに使えないけど、エラーが出たときは()で囲めば大抵通るよ。
それでも通らないときはget,setを直接。
0592デフォルトの名無しさん
NGNG#include<iostream>
class TMyClass
{
int FProp;
int get_Prop() { return FProp; };
void set_Prop(int Value) { FProp = Value; };
typedef TMyClass self_type;
PROPERTY_IMPLEMENTATION(int, Prop);
public:
PROPERTY(int, Prop);
TMyClass() : PROPERTY_INITIALIZATION(int, Prop) { }
};
int main()
{
TMyClass o;
o.Prop = 1;
std::cout << o.Prop;
return 0;
}
0594デフォルトの名無しさん
NGNGproperty<class_type, value_type>& set(const value_type& v) { (cls_ptr->*set_func)(v); return *this; }
だな。しかもインデントされてねぇ。
0596584
NGNGすいません ちょいと手酌で酒飲んでました 汗)
すごい!!正直感動しました。
friendクラス、マクロ、テンプレートの集大成じゃないですか!!
改めて2chプログラム板の実力を見せ付けられた気がします
(むしろ592さんかなw)
ホントもうこのまんま頂戴させていただきます^^;
ありがとうございましたm(__)m
by いつかこんなコードをスラスラ書く事を夢見る584
0597デフォルトの名無しさん
NGNGexcelのシートとかでメンバを管理しといて、
ボタン->VBAでヘッダとcppをはき出すようなのをつくっとくと幸せになれるかも
0598デフォルトの名無しさん
NGNG#define property( result_t, class_t, Name ) \
class Name##_t{ \
class_t const* get_parent(void) const{ \
return reinterpret_cast< class_t const* >( reinterpret_cast< char const* >( this ) - \
( reinterpret_cast< char const* >( &static_cast< class_t* >( 0 )->Name ) - \
reinterpret_cast< char const* >( 0 ) ) ); } \
public: \
operator result_t(void) const{ return get_parent()->get_##Name(); } \
operator result_t(void){ return const_cast< class_t* >( get_parent() )->get_##Name(); } \
template< typename T > Name##_t const& operator=( T const& value ) const{ \
get_parent()->set_##Name( value ); return *this; } \
template< typename T > Name##_t& operator=( T const& value ){ \
const_cast< class_t* >( get_parent() )->set_##Name( value ); return *this; } \
} Name
0599デフォルトの名無しさん
NGNG{
public:
property( int, A, PropInt0 );
property( int, A, PropInt1 );
private:
int propInt0_;
int get_PropInt0(void) const{ puts( "get PropInt0" ); return propInt0_; }
void set_PropInt0( int value ){ puts( "set PropInt0" ); propInt0_ = value; }
int get_PropInt1(void) const{ puts( "get PropInt1" ); return 5; }
};
int main()
{
A a;
a.PropInt0 = 10;
printf( "%d\n", (int)a.PropInt0 );
//a.PropInt1 = 10; // Error: PropInt1 is readonly
printf( "%d\n", (int)a.PropInt1 );
}
0600デフォルトの名無しさん
NGNG>ホントもうこのまんま頂戴させていただきます^^;
何に掲載するの? あなた、ライターか何か?
0601デフォルトの名無しさん
NGNG>何に掲載するの? あなた、ライターか何か?
どこに掲載するって書いてあるの? あなた、電波か何か?
0602デフォルトの名無しさん
NGNGやっぱ、55行目付近に何か変なこと書いてあるとしか思えん。
0603デフォルトの名無しさん
NGNGenumで宣言した変数は、enumの値もしくはenumの型名でキャストした整数しか代入できないということはわかるのですが、
enum型ではないint型の変数になぜenum型の数値を(たとえばredとか)代入できるのでしょうか?
0605デフォルトの名無しさん
NGNG便利だから
0606デフォルトの名無しさん
NGNGenumが元々int型だから
0607デフォルトの名無しさん
NGNGそういう仕様だからです。
http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
7.2 の 8 を見るべし。
0608デフォルトの名無しさん
NGNG{
HDC hmdc;
HBITMAP hBitmap;
BITMAP bmp;
HINSTANCE hInst;
int BMP_W, BMP_H;
hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
hBitmap = LoadBitmap(hInst, "IDB_BITMAP1");
GetObject(hBitmap, sizeof(BITMAP), &bmp);
BMP_W = (int)bmp.bmWidth;
BMP_H = (int)bmp.bmHeight;
hmdc = CreateCompatibleDC(hdc);
SelectObject(hmdc, hBitmap);
BitBlt(hdc, 0, 0, BMP_W, BMP_H, hmdc, 0, 0, SRCCOPY);
StretchBlt(hdc, 0, BMP_H, BMP_W / 2, BMP_H / 2, hmdc, 0, 0, BMP_W, BMP_H, SRCCOPY);
DeleteDC(hmdc);
DeleteObject(hBitmap);
return;
}
この関数を呼び出すとすごい勢いで凍り付きます。
IDB_BITMAP1はリソースエディタで作成したBMPです。
何が良くないんでしょうか?
0609デフォルトの名無しさん
NGNGしかしスレ違い。
0610デフォルトの名無しさん
NGNG"IDB_BITMAP1" → IDB_BITMAP1 が気になる点。
あと、SelectObject する時は戻り値を保存しといて、
あとでそれを SelectObject するべし。
あと、hBitmap と hmdc が正常に得られてるかのエラーチェックくらいはすれ。
あと、すごい勢いでスレ違い。
C だし、環境依存の話題だし。
ついでに言うなら、BMP_H, BMP_W って変数名にするんだったら
型を const int にしなされ。
変数名は大文字では始めないのが普通。
>>609
リソースIDは文字列もいけるよ。
ただし、リソースIDを文字列にしてればだけど。
0611デフォルトの名無しさん
NGNG何かクラスとかが用意されているのでしょうか?
いろいろとぐぐったのですが
VC++やBCBなど開発環境に依存するものばかりヒットしてしまいます。
それともcのファイル構造体を使用するのですか?
0612デフォルトの名無しさん
NGNGディレクトリ操作は標準ではサポートされていません。
ファイル操作には fstream, ifstream, ofstream が使えます。
0613608
NGNGありがとうございました、おかげで謎の一部は解けました。
しかしまだ正常に動かないので、C質問スレに逝ってきます
0614デフォルトの名無しさん
NGNGVC++で
class BaseA{ virtual void Hoge() = 0; };
class BaseB{ virtual void Hoge() = 0; };
__interface BaseC{ virtual void Hoge() = 0; };
class Derived : public BaseA, public BaseB, public BaseC
{
virtual void BaseA::Hoge(){} // 出来る
virtual void BaseB::Hoge();
virtual void BaseC::Hoge();
};
void Derived::BaseB::Hoge(){} // 出来ない、error C2509 'Hoge' が宣言されていません。
void Derived::BaseC::Hoge(){} // 出来る
という風に、クラスの外で定義しようとするとエラーになります。
MS独自の__interfaceなら可能ですが、メンバを持てないので今回の場合使えません。
インラインにして別のメンバ関数にリダイレクトするなど回避方法が無いわけではないのですが、どうにも納得いかないので、もしどなたか解決方法をご存知でしたら教えてください。
0615デフォルトの名無しさん
NGNGなんでもかんでも仮想関数にすればいいというものではない。
0616デフォルトの名無しさん
NGNGそれはもちろんそうなんですけれど。
今回は別にこれがネックになってプログラムが進められない、ということじゃなくて。
ただ、何ゆえこれがエラーになるのか、エラーにならない正しい方法が無いのかと思いまして。
0617スレ違いだったらごめんなさい
NGNGちなみに、高校時代に「はじめてのC++」塚越一雄
を教本に勉強しようとしていたのですが
そんなに進む前に受験により中断を余儀なくされました。
また始めるに当たり、より良い物があれば、と思い質問しました。
0618デフォルトの名無しさん
NGNG推薦書籍集 -Recommended Books For Programmer-
http://bookshelves.tripod.co.jp/
プログラム技術板倉庫
http://tito.fc2web.com/2ch/tech/index.html
推薦図書/必読書のためのスレッド PART 10
http://pc2.2ch.net/test/read.cgi/tech/1051496506/
0620デフォルトの名無しさん
NGNGあるクラスhogeの実装で
hoge fuga(10);
とやるとコピーコンストラクタが呼び出されるのはわかるけど
int x(10);
とやってもきちんとxに10が代入さる
コピーコンストラクタは組込み型にはない気がするけどなんでだろう
()演算子のオーバーロード?
0621デフォルトの名無しさん
NGNG> hoge fuga(10);
> とやるとコピーコンストラクタが呼び出される
呼び出されるのは整数型引数のコンストラクタです。
> コピーコンストラクタは組込み型にはない気がするけど
ある。
0622デフォルトの名無しさん
NGNGありがとう
どうりでぐぐっても見つからない訳がわかりました。
0623620
NGNGintとかcharにコピーコンストラクタがあったとは知りませんでした
char *re("レスありがとうございました")
ってやろうとしたらさすがに無理でしたが
勉強になりました
0624デフォルトの名無しさん
NGNGVC++はできたよ
0625デフォルトの名無しさん
NGNGg++でもbccでもdmcでもできたーよ。
0626デフォルトの名無しさん
NGNGただし、処理系によっては期待した結果になりません。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
と本に書いてあったのですが、これは例えば
int idt=100;
if(idt == true)
return 0;
のようなことを指しているのでしょうか?
それとも他にも処理系によっておかしな動作がすることがあるのでしょうか?
0627デフォルトの名無しさん
NGNGどの本?
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG0 == false
0630山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0631デフォルトの名無しさん
NGNGVSUAL C++とかBORLANDC++とか使ってるの?
そんなの使ってるよーじゃやっぱプロとしてはやっていけないんですかー?
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNG暗黙に bool に変換できる型はなかったと思うが。
あと、そいつらは制御文の制御式として使えるけど、
結果は処理系依存にはならない。
キャストした場合も同様。
その本、大丈夫?
0635626
NGNG80何ページに描いてるよ
0636デフォルトの名無しさん
NGNG嫌な予感がしていたが! やっぱりそうかッ!!
0637デフォルトの名無しさん
NGNGきっとアレだろうな、0e+15 とか、カスウ部が0でも指数部が非0の時、
trueになったりするんだろうな。
0638デフォルトの名無しさん
NGNG0639デフォルトの名無しさん
NGNGポインタだけが積まれるのでしょうか?
例えば、class Cがあった場合に、
1. foo(C p);
2. foo(C& p);
3. foo(const C& p);
4. foo(C* p);
で、各メソッドをコールした場合にコールスタックへ何がプッシュされますか?
1と3は一時オブジェクトが生成されるのかなぁ。
0640デフォルトの名無しさん
NGNGクラスは引数にとれません
0641デフォルトの名無しさん
NGNGつーか自分で調べた方が早いだろ、そーいうのって。
0642デフォルトの名無しさん
NGNGC型の値を引数として渡した場合は
一時オブジェクトがつくられるのは1.だけかと。
0643デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNGstring s;
getline(file, s);
cout << s << endl;
}
みたいなコード書いたらエラーになりました。
理由のわかるかたいますでしょうか。
お願いします。
0646645
NGNGそういうことではありません。
この1週間悩みっぱなしです。
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNG出力するプログラムを書いたのですが(とりあえずエラー処理は無しで)
コンパイル時に「不正な左オペランド%です」というエラーが出ます。
下から順にi+1番目の桁の値を取得し、2^iをかけたものを足し合わせているのですが…
原因をと対策を教えてください。お願いします
#include <iostream.h>
#include <math.h>
void main(void){
int n, i, sum=0;
cin >> n;
for(i=0; i<16; i++)
sum = sum + ( ( n / pow(10,i) ) % 10 ) * pow(2,i);
cout << sum;
}
0649645
NGNGすみません。bcc32で、エラーメッセージは
エラー E2285 streamtest.cpp 8: 'getline<_CharT,_Traits,_Alloc>(ifstream,string)'
に一致するものが見つからない(関数 mygetline(ifstream &) )
ちなみに、ifstreamをistreamにすると動きます。
でも、ナマのgetlineはifstreamでもいけたはず。
0650645
NGNG#include <string>
#include <fstream>
using namespace std;
void mygetline(ifstream& file){
string s;
getline(file, s);
cout << s << endl;
}
main()
{
ifstream file("hogehoge.txt");
mygetline(file);
}
です。
0651デフォルトの名無しさん
NGNG俺の環境(VC++7)ではコンパイルできた、実装依存の問題かも?
istreamで動くんなら、istreamにしてはどうだろう?それほどの支障はなさそうだし。
0652デフォルトの名無しさん
NGNG本題だけに突っ込むと、
原因:%は整数型にしか使えないが、powの戻り値はdoubleなので、( n / pow(10,i) )もdoubleになるからエラー。
対策:pow(10,i) → static_cast< int >( pow(10,i) )
全体的には、いろいろまずい要素が満載で、基本からやり直すことをお勧めしたい。
そのプログラムが学習中のものなら、参考にしたモノを投げ捨てた方がいいと思われ。
0653645
NGNGそうですか。ありがとさんです。
でも、気持ち悪いので、誰か何か知ってたら教えてください。
ついでだから、>>648。とても読めませんが、こんなのどう?
(なんか学校の宿題くさいけど、俺も>>651にレスしてもらったし。)
#include <iostream.h>
#include <math.h>
void main(void){
int sum = 0;
char binary[17];
cin >> binary;
for(int i = 0; i < 16; i++)
sum += binary[i] == '1' ? pow(2, 15 - i) : 0;
cout << sum << endl;
}
かならず16桁あるという前提で。
0654デフォルトの名無しさん
NGNG16桁の2進数を入力して、10進数に変換して出力するプログラム
#include <iostream>
#include <bitset>
int main()
{
std::bitset< 16 > bits;
if( std::cin >> bits )
std::cout << bits.to_ulong();
}
0655デフォルトの名無しさん
NGNGとりあえずint型が表示できる数を調べてみてはいかがでしょう・・・
0656648
NGNG何とかエラーは消えましたが、同じことしてるはずなのに
653さんのはうまくいって何故か自分のは思う結果が出ない…考えてみます。
ちなみに宿題じゃなくて問題集です…
0658デフォルトの名無しさん
NGNG#include <iostream>
#include <math.h>
using namespace std;
int main()
{
char str[17] = "0000000000000000";
int i = 0;
int ans = 0;
cout << "16桁の2進数を入力して下さい:";
str[16] = '\0';
cin >> str;
for(i=0;i<16;i++)
{
if(str[i] == '\0')
str[i] = '0';
ans += (str[i]-48) * pow(2,i);
}
cout << ans << '\n';
return 0;
}
16桁以内なら途中で入力を中断しても演算するようにしています
0659デフォルトの名無しさん
NGNG処理系が標準に準拠できていないんだろうなあ。
使った処理系は何?
ifstreamはistreamから派生している?
fstreamからの派生になってたりしないか?
0660653
NGNGレスありがとうです。
俺が使ってるのはbcc32(Borland C++ 5.5)です。
やっぱり、変ですよね。(俺の頭が、じゃなくて。)
某、好きだったんだけどな。
ただ、派生はちゃんとしてるように見えます。
class _RWSTDExportTemplate basic_ifstream : public basic_istream<charT, traits>
この_RWSTDExportTemplateってのはよくわかりませんが。
0661デフォルトの名無しさん
NGNGgetline(static_cast<istream&>(file), s);
0662デフォルトの名無しさん
NGNGnamespace HOKJELKDSLKHLKFJHLEBIFBSDIF {
class X { public: int x; X() : x(0) { } };
}
という名前空間とクラスがあったとします。
この X を使いたい場合に、この長たらしい名前空間を何度も書きたくないので
namespace A {
using namespace HOKJELKDSLKHLKFJHLEBIFBSDIF;
void foo(X x);
}
と、「ヘッダファイル内に」書いたとします。
すると、
int main() {
A::X x;
A::foo(x);
}
のように、仕様上 A::X として使えるようになってしまいます。
エイリアスを使っても、そのエイリアスが外部で使えてしまいます。
A の名前空間を通じて X を参照できないようにし、
なおかつ foo の X などであの長い名前空間を使えないようにする方法って
何かないんでしょうか?
0663662
NGNG0664デフォルトの名無しさん
NGNGA の外で using するのもダメです。
0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNGもしくはusingをまったく使用しない
0667662
NGNG0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNGつーか、秦でいいよ。手抜きするな。
0670662
NGNGインポートしたい訳ではないんです。
ヘッダを書くのを楽するためには using しないといけないけど、
インポートしたくないので using はしたくない、ってことです。
だから何とかしたかったのですが、
#define〜#undef がせいぜいということのようですね。
できればマクロも使いたくないので
大人しく手抜きせずに書く事にします。
その namespace ブロック内でのみ有効な using とかあればいいんですけどね...。
そもそも全部 public なのが(ry
0671デフォルトの名無しさん
NGNG0673デフォルトの名無しさん
NGNG0675660
NGNGこんな俺を見捨てずにありがとうです。
やってみたらうまくいきました。
それどころか、
void mygetline(ifstream& file){
string s;
getline((ifstream&)file, s);
cout << s << endl;
}
でもコンパイルとおっちゃいました。キャストとるとだめです。
なんじゃこりゃーですが、もう、抵抗するのやめます。
いろいろ教えてくれたみなさん。ほんとに、ありがとです。
0676デフォルトの名無しさん
NGNG俺も改良版考えました。
16桁以下ならOK。で、安全。
#include <iostream.h>
void main(void){
char binary[17];
cin.get(binary, 17);
int sum = binary[0] - '0';
for(int i = 1; binary[i] != '\0'; i++){
sum <<= 1;
sum += binary[i] - '0';
}
cout << sum << endl;
}
0677デフォルトの名無しさん
NGNGDWORDとBOOLってunsigned long(だっけ?)とboolに変えないとだめ?
0678デフォルトの名無しさん
NGNGどんな?
0680677
NGNG#include "stdafx.h"
int main(int argc, char* argv[]){
BOOL a;
printf("Hello World!\n");
return 0;
}
って書いてみたんですが、これもコンパイルエラーでした。
0681デフォルトの名無しさん
NGNGstdafx.h 内で
#include <windows.h>
を
0682デフォルトの名無しさん
NGNG↓これじゃだめ?
namespace A {
namespace short_name = HOKJELKDSLKHLKFJHLEBIFBSDIF;
void foo(short_name::X x);
}
0684初心者プログラマー
NGNG自信がありません・・・。
そこで、プログラムソースを添削していただきたいのですが・・・
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1054220849_1/report2-3.c
ここにソースを置いています。
お願いします。
0685デフォルトの名無しさん
NGNGここ含めて5箇所にマルチポスト。
その内2つがスレ立て。
0686デフォルトの名無しさん
NGNG頼むから夜中に爆笑させないでくれえ〜。
0688デフォルトの名無しさん
NGNGんなこと言ったら、HOKJELKDSLKHLKFJHLEBIFBSDIFが使える時点でダメなんじゃねーの?
0689203
NGNGHOKJELKDSLKHLKFJHLEBIFBSDIF::hoge が
A::short_name::hoge としても使えるのは気持ち悪くありませんか?
namespace ___HOK = HOKJELKDSLKHLKFJHLEBIFBSDIF;
とか、「外部で使わないでー」というお願いを込めた名前にする、
というのならまだ使えるかも?
0690689=662
NGNG0691デフォルトの名無しさん
NGNGじゃぁboostにちなんでdetailの中でコソコソやっとけ。
0692デフォルトの名無しさん
NGNGヘッダファイルでusingを使うのは行儀が悪いのでやめた方がいい。
名前空間の名前を短くするか、そうでなければ全部書いてください。
コピペ使えばどうってことのない手間でしょう。
# どうでもいいが「名前空間の名前」って言い方はちょっと変か……
0693662
NGNGレスありがとうございます。
>ヘッダファイルでusingを使うのは行儀が悪いのでやめた方がいい。
非常に同感です。
使ってみて、強く実感しています。
>名前空間の名前を短くするか、そうでなければ全部書いてください。
>コピペ使えばどうってことのない手間でしょう。
エイリアスを使おうが、元の名前を短くしようが、
結局 using を使わない以上何らかの NAMESPACE:: を書かないといけないんですよね。
大人しく書く事にします。
0694デフォルトの名無しさん
NGNG基底クラスのインスタンスを渡しているのに、派生クラスにキャストすると
派生クラスのメンバ関数foo2が呼べるのはなぜですか?(最初は落ちるかと思ったんだけど…)
#include <iostream>
class A {
};
class B : public A {
public:
void foo(A* a) {
B *b = static_cast<B*>(a);
b->foo2();
}
void foo2() {
std::cout << "B::hoge()" << std::endl;
}
};
int main(int argc, char* argv[]) {
A a;
B b;
b.foo(&a);
return 0;
}
0695デフォルトの名無しさん
NGNGもしBにメンバ変数の追加があって、そのfoo2がそれを参照してるならやばいよ。
たまたまBで拡張された部分をアクセスしない関数だから大丈夫なだけ
0696デフォルトの名無しさん
NGNGstd::map<std::string, long> testMap;
testMap["111"] = 111;
testMap["222"] = 222;
testMap["333"] = 333;
testMap.erase("222");
こうやって要素を消しても、iteratorでmapをなめると、"222"をキーに持つ要素が出てきてしまいます。
0697デフォルトの名無しさん
NGNG0698動画直リン
NGNG0699696
NGNGちょっと別の質問なんですけど、mapの要素に対して[]を使ってアクセスすると、
なぜか要素のコンストラクタが呼ばれるようです(find()では呼ばれない)。
これってどういう事でしょうか。mapの要素に[]でアクセスするのは効率が悪いんですか?
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNG> ちょっと別の質問なんですけど、mapの要素に対して[]を使ってアクセスすると、
> なぜか要素のコンストラクタが呼ばれるようです(find()では呼ばれない)。
なぜって、仕様読んだのか?
[]は新しい要素を代入することが出来る。
> これってどういう事でしょうか。mapの要素に[]でアクセスするのは効率が悪いんですか?
効率が悪いとしたら、使い方が間違っとる。
0702696
NGNGだから、例えば
std::map<std::string, CMyClass> theMap;
theMap["test"];//追加される
theMap["test"];//参照
theMap["test"];//参照
という感じで、追加されるのは最初の一回目だけで、後は参照するだけ
だと思っていたんですが、二回目以降もCMyClassのコンストラクタが呼ばれてます
theMap["test"]
theMap.find("test");
theMap.find("test");
こういうやり方ならコンストラクタは一回しか呼ばれません
0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG他の言語の経験は?
0705デフォルトの名無しさん
NGNG推薦図書/必読書のためのスレッド PART 10
http://pc2.2ch.net/test/read.cgi/tech/1051496506/l50
0706デフォルトの名無しさん
NGNGoperator[] が
return insert( make_pair(key, val()) )->second
で実装されてる環境(VC6,7,Bcc5など)だと二回目以降も
デフォルトコンストラクタがよばれるし、
iterator i = find( key )
return ( i != end() ? return i->second : insert( make_pair(key, val()) )->second);
と実装されてれば(gcc3など)一回しか呼ばれないし。処理系による。
0708デフォルトの名無しさん
NGNG>wchar_t wt[256];
>_wcspcpy(wt, L"あ あ あ");
こういう使い方。
この場合、wtの中身は、UTF-8ですか?UTF-16ですか?
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGまずUTF-8みたいなマルチバイトではないだろうが
UTF-16かどうかは実装依存
Visual C++だとUCS-2, glibcだとUCS-4とかじゃなかった?
0711708
NGNGじゃあぁ、コンパイラ調べれば分かりますね。ちなみにBCBでつ。
DBにUNICODE入れようと思うのですが、UTF-8/16混在させたら読むに読めないから怖いですね。
UCSってのが何か良く分からないです。
0712デフォルトの名無しさん
NGNGこのへん読むとヨシ
http://euc.jp/i18n/charcode.ja.html#chap7
UCSは文字集合で、UTFは交換用符号だが
UTF-16というと、同じ2バイトでもUCS-4の文字集合を表現するために
16bit=1文字とは限らないので扱いにくい。
UCS-2といった場合は必ず16bit=1文字で表現できる。
で、BCBならWin32だろうけど、それならVCと同じじゃないかな。
0714デフォルトの名無しさん
NGNG今までは 16bit/2byte 渡せばすむところを、w_char のポインタを渡さなきゃいけなくなったり。
0715713
NGNG既存とはCの基本ランタイムwfopenみたなヤシですか?
まじー?
0716デフォルトの名無しさん
NGNG0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNG受けてくれればいいのに。
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNGまったくお恥ずかしい限りです。
0721デフォルトの名無しさん
NGNGx.str( std::string() );
0722720
NGNGアリガ�d
もう1つ
どうしてx.str( std::string("test") );
はダメなんですか?
0724デフォルトの名無しさん
NGNGダメって、なにが?
0726デフォルトの名無しさん
NGNG何故そういう仕様になってるのかよく分かりませんでした。
int f(int, int = 3, int);
と宣言して、
f(3,,4); //OK
f(,,4); //デフォルト値なしの引数が省略されているのでエラー
となるような仕様では何故駄目なんでしょうか?
0727デフォルトの名無しさん
NGNGデフォルト引数を利用する場合
基本的には引数を省略する場合が多いんで、
途中に余計なコンマを書くよりは、
何も書かないでいいようにした方が効率的で分かりやすい。
デフォルト引数が複数ある場合には
f(3, , 4); というように指定したいと思う事もあるけど、
コンマの個数が増えてくるとソースが読みにくくなるし、
コンマの個数を間違えるとバグになるというのも困るので、
省略できないのも仕方が無いとも思う。
個人的には、名前付き引数があればええんでないかな、と思うのだが、
まぁ、無いものは仕方が無い、と。
0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNGclass A {
A(int i) {}
};
class B {
A m_cA[8];
};
としたとき、B::m_cAを初期化するにはどうすればよいでしょうか。
0730デフォルトの名無しさん
NGNGttp://www.parashift.com/c++-faq-lite/ctors.html#faq-10.5
0731デフォルトの名無しさん
NGNGDVからIEEEでキャプチャしてリアルタイム処理するプログラム組んでて
ttp://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/index.html
を使ってやっているんですが、むちゃくちゃかくかくするんです。
単なる処理速度の問題なのかどうか、、
cはできるんですがwinプログラムは始めてで、フレームレートあがるにはどこいじればいいかわかんない
たのむ!たすけて
0732729
NGNGなるほど、この構成自体がコンパイル通らないのですか。
情報感謝です。
0733デフォルトの名無しさん
NGNG配列の各々のオブジェクトに、違った初期化をする方法で
cinからもってくる方法がストラウストラップに載ってるね(p.300-301)。
まぁここまでするのもね。
0734デフォルトの名無しさん
NGNG多分処理速度。圧縮処理汁!!
0735デフォルトの名無しさん
NGNG構造体は
・アクセス修飾子が無い。
・メソッド、コンストラクタ、デストラクタが定義できない。
以外に何かありますか?
0736デフォルトの名無しさん
NGNG> ・アクセス修飾子が無い。
> ・メソッド、コンストラクタ、デストラクタが定義できない。
そんな差は無い。
0737デフォルトの名無しさん
NGNGアクセス修飾子もあります。
クラスとの違いはデフォルトの
アクセス修飾子がprivateかpublicかの違いのみです。
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGC++ はほぼ同等の扱いにしてるけど。
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNGそれに共感を覚えたんだけど、どういう決まりだったかすっかり
忘れてしまったな。
0744デフォルトの名無しさん
NGNG変数を一度に沢山定義して、
それを一度に受け渡しするためのものに過ぎない。
一方クラスは具体的にどんなメンバ変数があるかは隠蔽しちゃってて、
使う側からは、どういう種類のデータを扱えて、
どういう機能を持っているかさえ分かっておけばいいようになっている。
つまり、データの抽象化を行ったものがクラスと言える。
メンバ関数を通してデータを扱う場合と言ってもいいかもしれない。
でも、ポリモーフィズムとかも重要な性質だろう。
C の FILE 構造体はクラスみたいな使い方をしてるけど、
これは C にはクラスがなかったからこうしてるだけ。
こういうのは、オブジェクト指向言語ではクラスにすべきだろう。
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGCの構造体、C++の構造体、C#の構造体みたいに、
狭い範囲でそれぞれ意味が定義されてるもんじゃないの?
オブジェクト指向という括りで通用する構造体の定義ってあるの?
0747デフォルトの名無しさん
NGNGをもつかで区別すりゃいいんでないかね。
0748デフォルトの名無しさん
NGNG#include<math.h>
#include<conio.h>
main(){ float a,x,b,x1;
printf("入力→");
scanf("%f",&x);
for(;;){
a=exp(x)-3*x;
b=exp(x)-3;
x1=x-a/b;
if(fabs(x1-x)<0.0000001)break;
x=x1;
}
どこがおかしい?
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNGmain(){ float a1,a2,X=0,x=0,x1=4,x2,s=0,b,i,s1;
printf("分割数入力\n");scanf("%f",&b);
printf("α0入力→\n");scanf("%f",&a1);
printf("α1入力→\n");scanf("%f",&a2);
for(i=1; i<=b; i++){x=x+(1/b);
x2=(a1*a1)+(x*x)/(1+exp(x));
s1=((x1+x2)*(1/b))/2;x1=x2;s=s1+s;
}for(i=1; i<=b; i++){X=X+(1/b);X2=(a2*a2)+(X*X)/(1+exp(X));
S1=((X1+X2)*(1/b))/2;X1=X2;S=S1+S;
}
ごめん。こっちだった。
0753デフォルトの名無しさん
NGNG0754デフォルトの名無しさん
NGNGとでも言って欲しいのか?
0755デフォルトの名無しさん
NGNGパナウェーブの仕業か!
0756デフォルトの名無しさん
NGNG内容としては、ストラウストラップの10章の部分なんですが、
大域・名前空間オブジェクトの順序依存はさけるべきだという
話があって、で初回スイッチというテクニックが紹介されて
いました。オブジェクトが0かどうかをチェックしていますが、
これは、どういうことなんでしょうか?0だとどうで、0じゃないと
どうなんでしょうか?そもそも順序依存とは、オブジェクトが確保
されたかどうかですか?それとも初期設定されたかどうか?
0757デフォルトの名無しさん
NGNG読まずにレス。静的なポインタ変数をぬるぽと比較してると見た。
0758デフォルトの名無しさん
NGNGあの人の書いた本で、ストラウストラップ本とか言われてるのがあるの?
# お、ググったら1件だけあった>ストラウストラップ本
0759デフォルトの名無しさん
NGNG"Stroustrup本"でググったらもうちょっとでてきたぞ
0760r
NGNGenum hanage_len_t{ LONG, SHORT };
const hanage_len_t length;
Hanage( hanage_len_t l ) : length( l ) {}
};
こんなクラスがあるんです。このクラスのインスタンスを作るには
Hanage hanage(Hanage::LONG);
だとか、
Hanage* pHanage = new Hanage( Hanage::SHORT );
なんて書きますよね。
ここで、この Hanage::LONG の Hanage:: の部分が、
Hanageのインスタンスを生成しまくる場面ではすごくめんどくさいのです。
たとえば、
class HanageGenerator {
using class Hanage; // ←こんなのを書いて
Hanage** Create( int n ) {
Hanage** buf = new Hanage*[n];
for( int i = 0; i < n; i++ )
buf[i] = new Hanage( i % 2 ? LONG : SHORT ); // ←これ!Hanage::の省略!
return buf;
}
};
こんな風に書けたら素敵だなぁ、って思うのです。
で、これ-----Hanage::の省略----の実現方法を知ってる人がいたら
教えてくださいませ。
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGnamespace hanage { } で囲み、
enum hanage_len_t はクラスの外でこのnamespace内に移動すれば
using namespace hanageでできないこともないが、美しくはないか
0763756
NGNGのことです。すんません、わかりづらかったようで。
で、その10章のラストにアドバイスとして次のようなことが書かれて
います。
・大域、名前空間内オブジェクトを構築するときには、順番への依存を避けよ。
・順番への依存を抑えるためには初回スイッチを使え。
この順番への依存とは何の順番なんでしょうか。まぁたとえば静的メンバ
をもつクラスが大域スコープで定義された時のように、ある大域オブジェクト
が他の大域オブジェクトを参照する時のことなんでしょうが、これは要するに
参照しようとした時に、まだ使えない場合があるということなんですかね。
それとも初期設定がされてるかどうかって話なんでしょうか。
10章で紹介されている初回スイッチ(よく使われる戦略だそうで)ですが、
bool型の静的メンバをもつクラスのメンバ関数で、その静的メンバがfalseか
どうかをチェックしています。falseならtrueをセットして初期設定してる
ようです。この手法はコンストラクタがない静的オブジェクトが0で初期設定
されることを利用しているということだそうですが、falseの時はどいう時で
trueの時はどいう時なんでしょうか?(ってわかりづらくてすんません)
0764デフォルトの名無しさん
NGNG大域オブジェクトの初期化の順番は処理系依存
> 初回スイッチ
シングルトンの実装方法を見れば判ると思う
0765デフォルトの名無しさん
NGNGなんでそんなことも分からないのかが分からない。
初期化してないときがfalseで初期化済みがtrueに決まってるだろ。
bool型の静的メンバの名前が「initialized」だし。
>参照しようとした時に、まだ使えない場合があるということなんですかね。
>それとも初期設定がされてるかどうかって話なんでしょうか。
まだ使えない=初期設定がされてない なので言ってる事がトンチンカン。
0766756
NGNG順番とは初期化のことなんですね。じゃ、とりあえず
初期化されてなくても、参照はできるということは
保証されてるってことですね。うーむ。ということは
大域オブジェクトに何か値をセットするような関り方を
している場合、値をセットした後、0にもどされるって
場合があるってこと?こんがらがってきた・・・。
シングルトンですか・・・なんでしょうかそれは。
0767デフォルトの名無しさん
NGNG逆。
初期化されていないオブジェクトを参照できるから、危険。
シングルトンはデザインパターンの本を見れば書いてあるよ。
0768756
NGNG言ってることは間違ってないですよね?
そうですか。ちょっと本を探してみます。
ありがとうございました。
0769デフォルトの名無しさん
NGNGてっきりコンストラクタ呼び出しのことかと思ってた・・・
それから、初期化時のコンストラクタ呼び出しの順序だけじゃなくて、
mainを抜けた後のデストラクタ呼び出しについても、同様の問題が
起こりうることは覚えておいたほうがいいと思う。
0770デフォルトの名無しさん
NGNGおこらねーだろ。
0771デフォルトの名無しさん
NGNGデストラクタ呼び出し後のオブジェクトを参照する場合。
0772デフォルトの名無しさん
NGNG理解する気失せるわ。やっぱいろいろと不親切な本や。
Effective C++の47項を見るか、あるいはSingletonパターンでいいと思う。
0774デフォルトの名無しさん
NGNGとりあえず、 Hanage::hanage_len_t は Hanage::len_t のようにすべき。
で、
inline Hanage* create( Hanage::len_t len ) { return new Hanage( len ); }
こんなやつを定義すると、ナントカ参照という仕様により
Hanage* p = create( Hanage::LONG );
と書ける。
あからさまに冗長な new Hanage( Hanage::LONG ) よりは読んでて気持ちいい。
でも、実用はお勧めできない。
0775デフォルトの名無しさん
NGNG0クリアはされないかと。
コンストラクタ以前にスタートアップコードのあたりで0クリア済みじゃない?
初期化ってのはコンストラクタが呼ばれること。
0クリア云々のくだりはbool型のinitializedのことで、他のクラスの事じゃない。
false==0ってことは理解してる?
initializedが最初の実行時は必ずfalseだから、それで初期化済みか判定して
いるってこと。
で、例の本にもデストラクタの問題も書いてあって、解決法としてatexit()と
参照カウンタをチョロっと紹介してる。
>>772
あの本はテクニックを解説する本じゃなくて、C++の言語仕様を説明する本だから
Singletonなんてあの程度の解説で十分かと。
逆に言語仕様と関係ない部分ばかり説明されても困る。
ただでさえ分厚い本なんだし。
756が何でこの本を読んでいるのかはちょっと疑問。
これは入門書じゃないぞ。
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGVC++のデバッガでは出来てるっぽくみえたんだけど
#include <stdio.h>
#include <string.h>
class CLS_A{
char m_a[16];
public:
CLS_A(){strcpy( m_a, "Test");};
~CLS_A(){};
};
void main(){
CLS_A *A = new CLS_A;
FILE *fp;
fp = fopen("TEST.bin", "w");
fprintf( fp, (const char *)A);
fclose(fp);
delete A;
CLS_A *C = new CLS_A;
fp = fopen("TEST.bin", "r");
fscanf( fp, (const char *)A);
fclose(fp);
delete C;
}
0778デフォルトの名無しさん
NGNGC言語の勉強用に買ったんですが、どうやってもコンパイルできません。
VC++を.netで初めて使ったのでかなり試行錯誤してる段階です。
それと.net用の解説書を買いにいったのですが近所のパソコンショップ
数件まわったのですが6.0用のしかありませんでした。
6.0の解説書でも参考になるんでしょうか?
初歩的な質問ですいません。
0779デフォルトの名無しさん
NGNGfscanf( fp, (const char *)A);
( ´_ゝ`)フーン…
0780r
NGNGVC++は知らないけど、
C++なら、Cの殆どのコードはコンパイルできるはず。
というか、「どうやってもコンパイルできません」って書いているけど、
具体的にどうやったんだ?それをまず書け。
0781デフォルトの名無しさん
NGNG#include <stdio.h>
void main()
{
printf( "〜〜〜〜" );
}
コンソールモード、デバックで開始
するとこれらのプロジェクトは古い形式で構成されてます
と警告気味のコメントがでます。
「はい」をえらぶと6個のエラーがでます
エラーC2018 文字 0x40は認識できませんが3つ
エラーC2018 文字 0x81は認識できませんが3つ
です。
0783デフォルトの名無しさん
NGNGん?それコンパイルできるはずだけど・・・。コンソールモードって
プロジェクト立ち上げるときに選ぶやつを言ってるのかな?
まずメニューより[ファイル]→[新規作成]→[プロジェクト]と
進む。[テンプレート]の欄でWin32プロジェクトを選び、
適当なプロジェクト名を入力してOKを押す(保存先変えるなら変える)。
んで[概要]と[アプリケーションの設定]というのがでてくるんで、
[アプリケーションの設定]タブをクリックしてコンソールアプリケーションを
選択して、空のプロジェクトにチェックを付けて完了。
この手順でやってるの?
0784783
NGNGprintf( "〜〜〜〜" );
って〜〜〜〜の部分をそのまま使ってるんかい(w。
最初はHellow World!って決まってるのに・・・・。
全角じゃなくて半角英数字でも入れてみたら。
0785783
NGNG0786デフォルトの名無しさん
NGNG調べてみたんですが全角スペースは使ってないっす。
解説サイトからひろってきたりしたサンプルソースなども
すべてエラーがでます、、
0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNGどう考えても全角スペースぽ
>783
べつにそこは〜〜〜でもなんでもよいでわないか。
0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNGその手順とほとんどおなじっす。
コンソールに変える手順がすこしちがって
左のプロジェクトのプロパティからリンカ→システム
サブシステムから変えてました。
>>784さん
786でも書いたとおりサンプルソースなど
を貼り付けても全行にわたってエラーがでます。
0791デフォルトの名無しさん
NGNGprintfの前に2つの全角スペースが入ってる
0792デフォルトの名無しさん
NGNGclass A{
...
}
じゃなくて
struct A{
...
}
にすると何かいい事あるの?
0793デフォルトの名無しさん
NGNG露骨に全角スペースだと思うが・・・・・・
ttp://www.hidecnet.ne.jp/~sinzan/tips/vc/vc_tip0b.htm
0794デフォルトの名無しさん
NGNGpublicメンバから書きたい場合、public:を省略できる。
0795デフォルトの名無しさん
NGNGダメ。
CLS_A の中にファイル書き込み/読み出し用のメンバ関数か
m_a を返すメンバ関数を追加しよう。
あと、>>779 の言う通り、
fscanf をあーいう風には使えない。
同じく、fprintf もダメ。
fprintf/fscanf じゃなくて fputs/fgets を使おう。
0796デフォルトの名無しさん
NGNG0x81 0x40 は全角スペースの文字コードです。
確実に全角スペースが原因です。
あと、いきなり実行するのではなく、
ビルドしてから実行しましょう。
0797デフォルトの名無しさん
NGNG俺はソースの可読性
template<typename T>
class trait
{
public:
/**/typedef T result;
};
これより
template<typename T>
struct trait
{
/**/typedef T result;
};
こちらの方がなんか良くない
0798デフォルトの名無しさん
NGNG漏れは
class C {
int n;
};
よりも
class C {
private:
int n;
};
の方がなんか良いと思ってるから賛同しかねる。
つか、/**/ってなに?
そゆコーディングスタイルなの?
0799デフォルトの名無しさん
NGNG顔文字だろ
0800デフォルトの名無しさん
NGNG(*_*o);
0801デフォルトの名無しさん
NGNGカコイイ
0802デフォルトの名無しさん
NGNG整数を返す、rand()の代わりになる関数を作ろうとしています。
条件としては、
・乱数の周期がそれなりに長い。
・CPUのタイプに依存しない(浮動小数点を使うのは×)
・再現性がある。前回GetRand(5/*key*/) = 123だったときは、次もGetRand(5) = 123である必要がある。
・iterateしなくてもいい。int GetRand(int inKey)のように、前回の結果が必要でなく、キー(種)さえ与えればいつでも値を得ることが出来る。
乱数発生に詳しい方、お願いします。
0803デフォルトの名無しさん
NGNG0804デフォルトの名無しさん
NGNG0805デフォルトの名無しさん
NGNGそれって、つまり同じ値は一回づつしかでない、循環する数列を生成するってことかね
0806デフォルトの名無しさん
NGNG{
srand(inKey);
return rand();
}
・再現性がある。前回GetRand(5/*key*/) = 123だったときは、
次もGetRand(5) = 123である必要がある。
・乱数の周期がそれなりに長い。
この2つが重なるのが全然意味わかんないんだけど。乱数なめてるだろ?
0807デフォルトの名無しさん
NGNGそーゆーGetRandにとって、周期って何の意味があるんだろね?
int-intの写像としか思えないが、、
0808デフォルトの名無しさん
NGNG「周期が長い」というのは、
GetRand(0) = 11
GetRand(1) = 22
GetRand(2) = 33
GetRand(3) = 44
GetRand(4) = 11
GetRand(5) = 22
と、簡単に値が繰り返すようでは困る、という意味で書きました。再現性がある、というのは別問題だと思います。
例えば円周率を思い出してください。小数点の値が繰り返しパターンになることはありませんが、少数第2位はいつ見ても「4」です。
0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNG当たり前だろ? 円周率を示す数値は一つしか存在しない。
0811デフォルトの名無しさん
NGNG>srand(inKey);
>return rand();
これで「再現性がある」というキミは天才。
0812デフォルトの名無しさん
NGNG0813デフォルトの名無しさん
NGNGC++の乱数にしたってどうせ擬似乱数に過ぎんのだし、
同じようなことは出来るんじゃないの?
0814デフォルトの名無しさん
NGNGだから、GetRand(5)とすれば、円周率の少数第5位を返すような関数が欲しいんです。
あと処理系依存するのも駄目です。IntelのチップでもAMDのチップでも、同じキーを与えたら同じ答えが返ってくる必要があります。
なので、浮動小数点の計算や、乱数表を使うやり方はいけません。
0815デフォルトの名無しさん
NGNG?
#include <iostream>
#include <cmath>
using namespace std;
int GetRand(int inKey)
{
srand(inKey);
return rand();
}
int main()
{
for(int i=0;i<50;i++)
{
cout << GetRand(i%5)+1 << endl;
}
}
これで再現性が無かったらどうやったら再現性がある事になるんだろう…
0816デフォルトの名無しさん
NGNGコンピュータによって持ってる乱数表が違う。
0817デフォルトの名無しさん
NGNG○cout << GetRand(i%5+1) << endl;
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG乱数表持ってる実装のrandがあったら教えて下さい。
0820デフォルトの名無しさん
NGNGさっきから乱数表とか言ってる香具師は馬鹿ですか?
Portableじゃなきゃいけないなら自分で線形合同実装したら?
int GetRand(int seed)
{
seed = seed * 1103515245 + 12345;
return ((unsigned int)(seed / 65536) % 32768) & 0xff;
}
0821デフォルトの名無しさん
NGNGガンオタし値
0822デフォルトの名無しさん
NGNG自分が馬鹿なのを思い知らされたからってネタに走るのは止めて下さい。
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNGおおっ それは何ですか
ぐぐった時に名前だけは見たんですが>線形合同
それで常に変化する値が取れるんですか
0825デフォルトの名無しさん
NGNG>>820とか>>806じゃ駄目なの?
0826デフォルトの名無しさん
NGNGrand()のソース見たら大抵それが書いてあります。
でもintが何bitかによって結果変わるから完全にPortableではない。
0827デフォルトの名無しさん
NGNG0828デフォルトの名無しさん
NGNGレベルの低い話はCスレでやれ。
0829デフォルトの名無しさん
NGNGCでもないだろ。アルゴリズム系スレか?
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNGなるほど〜、そうでしたか。動かしてみたんですが、十分変化する値が取れるようになりました
intはまあ、今の所32bitの環境でしか動かす予定が無いのでOKです
ありがとうございまし
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG言っておくけど、>>820は>>812と組み合わせないと乱数じゃないよ
0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNG線形合同法にしろMT法にしろある内部状態から次の値は決まってるわけだから
内部状態を外部から与えれば以前出した状態を再現できるはず。
内部状態と値は別物として考えること。
0839デフォルトの名無しさん
NGNGその場合、
unsigned long GetRand( unsigned long mt[624])
になってしまうとおもうぞ
0840デフォルトの名無しさん
NGNG> ・乱数の周期がそれなりに長い。
> ・CPUのタイプに依存しない(浮動小数点を使うのは×)
> ・再現性がある。前回GetRand(5/*key*/) = 123だったときは、次もGetRand(5) = 123である必要がある。
> ・iterateしなくてもいい。int GetRand(int inKey)のように、前回の結果が必要でなく、キー(種)さえ与えればいつでも値を得ることが出来る。
の条件を既に満たしていると思うんだが。
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNGfor (i = 0; i < N; i++) {
x = GetRand(i);
;
}
0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNGstd::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
int* p = &vec[3];
vec.erase(vec.begin());
こうやった場合、もうpの値は保証されないんですか?
0846デフォルトの名無しさん
NGNG○ int* p = &vec[2];
0847デフォルトの名無しさん
NGNG*p == vec[3]
は両方とも保証されない。
0848デフォルトの名無しさん
NGNGlistなら保証されますかね
0849デフォルトの名無しさん
NGNG要素を指すイテレータについての保証は規格化されてるが、
ポインタについては何も保証が無いと思われ。
0850デフォルトの名無しさん
NGNGあらいがとうございます、わかるました。
0851777
NGNGこんな感じ?
class CLS_A{
char m_a[16];
public:
CLS_A(){strcpy( m_a, "Test");};
~CLS_A(){};
void m_put(FILE *fp);
void m_get(FILE *fp);
};
void CLS_A::m_put(FILE *fp){
fputs( m_a, fp);
}
void CLS_A::m_get(FILE *fp){
fgets( m_a, sizeof(m_a), fp);
}
0852デフォルトの名無しさん
NGNGseed には unsigned int 使おうよ。
seed * 1103515245 の結果がおかしくなるよ。
>>834
符号なし32bit整数なのを保証するために
typedef unsigned int randseed_t; とか typedef するといいかも。
環境によって定義を切り替えればいい。
尤も、CHAR_BIT が 9 な環境のことまで考えるとアレだけど、
普通はそこまで考える必要はない。
まぁ、それでも seed を毎回 0xFFFFFFFF でマスクすればいいかね。
0853デフォルトの名無しさん
NGNGそんな感じ。
で、いくつか補足すると、
1. 関数定義の { } の後にセミコロンは付けない。
2. m_a の初期化は
CLS_A() : m_a("Test") { }
とした方が良い。
なぜなら、strcpy だと初期化する文字列を変えてみたときに
m_a のサイズを超えていてもコンパイルできてしまうから。
3. メンバ関数名には普通 m_ を付けない。
0854デフォルトの名無しさん
NGNG> 3. メンバ関数名には普通 m_ を付けない。
おいおい、こいつどこから紛れ込んだんだ?
0855デフォルトの名無しさん
NGNGメンバ変数名じゃなくてメンバ関数名だってことに気付いてる?
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNG何のために他のメンバ関数や普通の関数と
名前空間が分かれてるのか分からんやんけー!
0858デフォルトの名無しさん
NGNG普通の関数と名前空間が分かれてる、の方だけで良かった。
0859デフォルトの名無しさん
NGNGビル・ゲ@ツに洗脳された人がm_なんてつけるんだ。
>>858の言うようにもし必要になったらどうせ限定子つけるから。
0861デフォルトの名無しさん
NGNGメンバ変数のsuffixに_を付けるようになりました。
0862デフォルトの名無しさん
NGNGメンバ変数はアリだとは思うが、
最近実装しないからどうでもよくなってる・・・
0863超初心者
NGNGd3drm.libというのを開くことができないという
エラーがでるのですがなぜでしょうか?
0864デフォルトの名無しさん
NGNGえ、マジっすか?
手元の「C++標準ライブラリ チュートリアル&リファレンス」
って本には
要素の挿入や削除が行われても他の要素のポインタ、参照、反復子は無効にならない。
と書かれているのですが・・・
0865デフォルトの名無しさん
NGNGvector で実験してみろ。サイズが2倍に拡張された瞬間に死ぬから。
list、連想コンテナなら大丈夫だと思った。
dequeはしらん。
0866デフォルトの名無しさん
NGNG>>847
listなら保証されますかね
849 名前: デフォルトの名無しさん 投稿日:03/06/06 00:38
>>848
要素を指すイテレータについての保証は規格化されてるが、
ポインタについては何も保証が無いと思われ。
で、vectorで実験してみろとは如何に?
0867デフォルトの名無しさん
NGNG(0=A、1=B、2=C…)っていうような数字に対応したアルファベットを得たいとき
sprintf(buffer, "%c", (char)('A'+num));
で何か不都合な点はある?
0868デフォルトの名無しさん
NGNG*buffer = char('A' + num);
じゃダメなのか?
0869デフォルトの名無しさん
NGNGいや、一文字だけでない場合もあるんで…
とにかくありがと
0870デフォルトの名無しさん
NGNG#define Encode(n) (10000 + (n))
#define BEER 1
#define SAKE 2
#define LLBEER Encode(BEER) // ←これ
#define LLSAKE Encode(SAKE) // ←これ
0871デフォルトの名無しさん
NGNGcharにキャストしてもintに戻されるね。
0872デフォルトの名無しさん
NGNGfor(int i=0; i<len; i++) {
buffer[i] = char('A' + num[i]);
}
sprintよりこっちの方が速い。
0873デフォルトの名無しさん
NGNGの方が26倍安全です
0874デフォルトの名無しさん
NGNG安全性はnumの範囲に依存するんだから同じだろ。
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG0877あらしって馬鹿だね
NGNGあらしって馬鹿だね。どうせろくな人間じゃない。
0878デフォルトの名無しさん
NGNGプログラムをC言語で作成してください。お願いいたします。
0879デフォルトの名無しさん
NGNGソースを自分しか見ないのならそれでいいだろうけど
0880デフォルトの名無しさん
NGNGstr[i] = "";
}
という文を書いたのですがエラーがでます
参考書が手元になく、調べることもできません
エラーの原因を教えてもらえないでしょうか
ちなみにChar型でstr[10]と宣言しています
0881デフォルトの名無しさん
NGNGchar *str[10]と定義すればOK
0882881
NGNGChar -> charと置き換えて・・・
str[i]の型はcharでしょ?""(文字列リテラル)が返す型はchar *だから合わない。
0883デフォルトの名無しさん
NGNG解説ありがとうございます
課題をやっていたのですが、エラーの原因がわからなくって詰まってました(;´Д`)
これで続きができますヽ(´ー`)ノ
0885880
NGNGデフォルトコンストラクタで配列の中身を初期化しようとしてたのですが
これじゃぁ不十分なのですか?
0886デフォルトの名無しさん
NGNGstd::string使えよ…
0887デフォルトの名無しさん
NGNGもしかしてCharってcharの間違いじゃなくて、自分でつくったクラス?
0888デフォルトの名無しさん
NGNGfor(int i=0;i<10;i++){
str[i] = '¥0';
}
0890デフォルトの名無しさん
NGNGmemset使え つーか長さ0の文字列にしたいなら先頭str[0]に'\0'を入れればよし。
・・・・全然C++らしくねぇ
0891デフォルトの名無しさん
NGNGマクロの所の ERR_ENTRY ってどう書けばいいんですかね?
で、どうやって使うんだろう?
文の意味があんまり読み取れなかったからよくわかんなかったんだけど。
0892デフォルトの名無しさん
NGNGどのようにすればできますか?どなたかポインタだけでもお願いします。
0893デフォルトの名無しさん
NGNG0894デフォルトの名無しさん
NGNGポインタというところにツッコみたくてうずうずする。
std::string str;
std::getline(file, str);
0898デフォルトの名無しさん
NGNG<errcode.h>
#ifndef ERR_ENTRY
#define ERR_ENTRY_BEGIN enum Error {
#define ERR_ENTRY(code, value, str) code = value
#define ERR_ENTRY_END };
#endif
ERR_ENTRY( ERR_OK, 0, "No Error" ),
以下略
<errcode.cpp>
#define ERR_ENTRY_BEGIN
#define ERR_ENTRY(code, value, str) lookup.insert( make_pair(code, (const char*)str) )
#define ERR_ENTRY_END
void init_map() {
#include "errcode.h"
}
ってことじゃないのかと思ってたのだけどどーだろ。
0899デフォルトの名無しさん
NGNGdelete をしていいものなんでつか?
しない場合はメモリリークと 考えていいのかな?
staticにするやつをオートポインタにしとけばOK?
なに言ってるか自分でもよくわからん・・・
0900デフォルトの名無しさん
NGNG・onexitを使う。
・インスタンスを静的に生成する
等
パターンハッチングのシングルトンについて語ってる所とか読んでみてね。
0901デフォルトの名無しさん
NGNG意図してないのにアクセスできなくなり、メモリが無駄になる状況がメモリーリーク。
シングルトンは意図してんだからメモリーリークとは言わないのでは?
0902901
NGNG自分だったら気にせずほっとくかな。
0903デフォルトの名無しさん
NGNG0904デフォルトの名無しさん
NGNG0905r
NGNGclass Singleton {
Singleton() {}
public:
Singleton* GetInstance() {
static Singleton instance;
return &instance;
}
}
これできちんと削除される。
でもなぜかあんまり推賞されてないみたい。
0906デフォルトの名無しさん
NGNG昔は i++ を使ってた貧弱な坊やでした。
++i を使うとかっこよく、お金持ちで、モテモテになるよということを聞き、
そんなばかな、と思いつつも、
騙されてもいいかと ++i を使うようにしました。
それがなんと ++i を使うようになってからというもの、
メキメキ筋肉がつくわ、競馬で十万馬券が当たるわ、
彼女は出来るわで、人生変わりました!
みんなも ++i で人生の勝ち組になりましょう!
いや、++ 演算子のオーバーロードとかすると
どっちの方を使う癖をつけるといいかがよく分かるよね。
0907デフォルトの名無しさん
NGNG何かの本かサイトかで推奨できない理由を見た。
確か、instance の生成がロックされてないので
マルチスレッドで問題になる、というものだったはず。
0908デフォルトの名無しさん
NGNGパターンハッチングですね
0909デフォルトの名無しさん
NGNGonexit?
・・・・
初耳だと思い、ぐぐったら、単にOnExitのことか・・
>>903
そうだ。たまに++i を
見かけるがなんでだろうと思ってた。
どっちもいっしょだと思い、好みの問題として放置してた。
それが教育的な理由ってなんなの?
0910デフォルトの名無しさん
NGNGatexitと間違えた。
0911デフォルトの名無しさん
NGNG>>903=>>906は
http://pc2.2ch.net/test/read.cgi/tech/1051496506/
追い出されたアフォなので無視してOK。
組込型に対しては最適化されるの記述も読めなかったんだろうか…
0912デフォルトの名無しさん
NGNG普通の数だと最適化で一緒になると思うけど、
イテレータとかでは ++it の方が効率的な場合も多い。
it++ だとイテレータを進める前のイテレータを生成して、
それを返すことになるからね。
0913デフォルトの名無しさん
NGNGこんなイイもんがC言語にあったとは・・
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNG組み込み型とイテレータとで表記変えるのは気持ち悪い。
どちらかに統一するとするならやっぱり ++i だろう。
C ならどっちでも好きな方を使えばいいと思うけどね。
0916デフォルトの名無しさん
NGNG0917899
NGNGすまん。実は、クラスのインスタンスを唯一にしたいのではなく
クラスのプライベートメンバ変数を唯一にしたかった。
そんでstatic つけた。
しかしその変数はとあるユーザ定義型のポインタで
終了処理が必要なものであったと。
やっぱクラスで一枚包んどけばいいだけかな。
終了。
0918デフォルトの名無しさん
NGNG折角C++なのにコンテナ使わないのは非常に勿体無い
0919デフォルトの名無しさん
NGNG0920891
NGNGレスありが�d。
それって結局 map を作っちゃうって事?
そのまま書くのに比べて何が利点なのかな?
俺が考えてたのは
<errorcode.inc>
ERR_ENTRY(ERR_OK, 0, "No Error"),
ERR_ENTRY(ERR_INVALID_PARAM, 1, "<description>"),
-以下略-
<errorcode.h>
#undef ERR_ENTRY
#define ERR_ENTRY(name, value, desc) name = value
enum ERR {
#include "errorcode.inc"
};
extern const char* ERR_NAME_TBL[];
<errorcode.cpp>
#undef ERR_ENTRY
#define ERR_ENTRY(name, value, desc) value
const char* ERR_NAME_TBL[] = {
#include "errorcode.inc"
};
<foobarbaz.cpp>
#include "errorcode.h"
int main() {
std::cout << ERR_NAME_TBL[ERR_OK] << std::endl;
return 0;
}
こんな感じかなぁと思ったんだけど、結局配列作っちゃうからマクロな意味が
あんまりないかなと思って。コンパイル時にすべてが解決されるような
いい方法があるのかなぁ?
0921898
NGNG本の文脈からすると利点は
ERR_OK = 0 と ERR_OK => "No Error" って対応を
分けて2箇所に書くのは面倒だし間違いやすいから、マクロ使ってコンパイル時に
ソース構造を自動生成させることで、1箇所にまとめることもできる
って意味かと。
エラー値は実行時まで決まらない(コンパイル時定数じゃない)から、
> コンパイル時にすべてが解決される
は無理。
0922デフォルトの名無しさん
NGNG途中で削除できるわけでも無いし、起動時に生成されて終了時に削除されるのも同じだし。
0923デフォルトの名無しさん
NGNGあの方法では、起動時ではなく、
GetInstance()が初めて呼ばれたときにに生成されるはず
0924デフォルトの名無しさん
NGNGグローバル変数のコンストラクタからメンバー関数呼んでるとまずいことになる可能性があったり。
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNGそれらしきものを自分で作ってみましたが、どうも設計がいけてない
0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNG何がしたいのかわからん。
0930デフォルトの名無しさん
NGNGclassのprivate/protected相当ってことだよね。
ない。
.cppだけに書くかさらにnamespace作って混ざらないようにするくらい。
0931デフォルトの名無しさん
NGNGそうなんです。クラスにしたら全てがstaticな関数になったんで
namespace の方が簡単でいいかな、っと。
ありがとうございました。
0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG何がしたいのかわからん。
0934デフォルトの名無しさん
NGNG.cpp 内で無名 namespace 内で定義したものは
別の .cpp 内からは参照できない。
static 関数の C++ 版だね。
0935デフォルトの名無しさん
NGNGこの2種類の方法で試みたのですが、エラー出てしまいますい。
SampClass* SampClass::GetAddress(){
return &this;
}
void SampClass::GetAddress(SampClass* samp){
samp = &this;
}
0936デフォルトの名無しさん
NGNG0937932
NGNGソースがみたいのです
0938デフォルトの名無しさん
NGNGSTLport見ろ。
ただし、規格と実装を混同するなよ。
0940デフォルトの名無しさん
NGNG{
A<int> a;
}
↑↑Test.cpp↑↑
↓↓A.h↓↓
#pragma once
template<class T>
class A
{
public:
A(void);
~A(void);
};
↑↑A.h↑↑
0941940
NGNG#include "A.h"
template <class T> A<T>::A(void)
{
}
template <class T> A<T>::~A(void)
{
}
↑↑A.cpp↑↑
Test error LNK2019: 未解決の外部シンボル "public: __thiscall A<int>::~A<int>(void)" (??1?$A@H@@QAE@XZ) が関数 _main で参照されました。
Test error LNK2019: 未解決の外部シンボル "public: __thiscall A<int>::A<int>(void)" (??0?$A@H@@QAE@XZ) が関数 _main で参照されました。
Test fatal error LNK1120: 外部参照 2 が未解決です。
どうすればいいですか?
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNGexportだっけなぁ。なんかキーワードが必要だったとおもうなぁ。
0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNG0946940
NGNG0947デフォルトの名無しさん
NGNG0948940
NGNGみなさまありがとうございました
0949デフォルトの名無しさん
NGNGSTLportは古いコンパイラに対応するために色々無理を
しているから、さすがに読ませるのはどうかと思うぞ。
gccのlibstdc++くらいでいいんじゃないか?
ところどころ実装が汚いor間違っている部分があるけど。
(例外まわりとか)
0950デフォルトの名無しさん
NGNG(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
(^^)(^^)(^^)(^^)(^^)(^^)
山崎渉
0951デフォルトの名無しさん
NGNGstd::istringstream ist(static_cast<std::string>(std::string(
(std::istreambuf_iterator<char>(std::cin)),std::istreambuf_iterator<char>())));
もちろんstringを別にしないでだよ。
0952デフォルトの名無しさん
NGNGVC7コンパイルとおりました。
g++はダメだったもので。
0953デフォルトの名無しさん
NGNGマチクタビレタ〜
☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < 次スレまだ〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
0954デフォルトの名無しさん
NGNGマチクビタレタ〜
☆ チンチン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < みかんっておっぱいに似てるよね〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
0955_
NGNGとか宣言したときにaのデストラクタを明示的に呼べますか?
ブロック抜けた時じゃなくて。
0956デフォルトの名無しさん
NGNG多分無理。
0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNGちなみそれは宣言ではなく定義ちゅ―のでは。
0959デフォルトの名無しさん
NGNG0960Not 958
NGNG0961デフォルトの名無しさん
NGNGint func()
{
    vector <int> t1;
    {
        vector <int> t2;
    }
   return 0;
}
とか
0962デフォルトの名無しさん
NGNG0963嘘かも。
NGNGで、
delete &a;
0964デフォルトの名無しさん
NGNGvoid func(){
pv = new std::vector<int>;
pv->push_back(int(10));
}
void destroy(){
pv->~vector<int>();
}
0965964
NGNGnewはdeleteで対応が常識。
0966デフォルトの名無しさん
NGNGhttp://www1.free-city.net/home/s-rf9/page002.html
0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNGみたよ〜♪
ぼくねーグッズ持ってるからねいらないやー。
ちなみにおしり入れるやつね。
0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNG0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG環境依存です(;´Д`)人スンマセン
0973デフォルトの名無しさん
NGNGカーソル移動ということはカーソルが無くてはいけないな。
このスレは環境依存の話はナシだからきっと自作なのだろう。
ということで、藻前の作ったカーソルを見せてくれ。話はそれからだ。
0974デフォルトの名無しさん
NGNG{
POINT pos; // 位置
int bShow; // 表示フラグ
}
0975デフォルトの名無しさん
NGNGないなら立てるけど。
0976デフォルトの名無しさん
NGNG次スレおながい
0977v(^・^)v
NGNGあー、、、やっぱりだめだった。YBBじゃ無理か。でしゃばってスマソ
0978デフォルトの名無しさん
NGNG言語仕様やライブラリの点で。
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG言語仕様いじる以前の問題っぽ。
0981デフォルトの名無しさん
NGNGOWLやらMFCやらQtやらwxWindowsやら、
ただし標準にならないだけ。
おかげでいつまでたってもライブラリ覚えなおすはめに。
0982デフォルトの名無しさん
NGNGしまくり。
http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1444.html
http://www.cuj.com/experts/ の2002年の連載"The New C++"
あたりをどうぞ。
0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNGぱっと見た感じ、要するに、boost, loki, C99 辺りの
ライブラリの一部が標準に追加されそうってことかな?
0986デフォルトの名無しさん
NGNG0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG漏れにはわからん。使えるんだから別にいいべ。
0990デフォルトの名無しさん
NGNG同意
ライブラリなんかどうでもいいからtypeofを速く
0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG↓次スレは任せた
0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNGでかした
0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。