C++相談室 part22
■ このスレッドは過去ログ倉庫に格納されています
0001v(^・^)v
NGNGただし質問の前にFAQに一通り目を通してください。
また、テンプレートライブラリ(STL含む)に関する質問は
専用の別スレへどうぞ。
過去スレ、関連スレ、関連リンクなどはこちら>>2-7
0002v(^・^)v
NGNG1 http://mimizun.mine.nu:81/2chlog/tech/piza.2ch.net/tech/kako/980/980175292.html
2 http://pc.2ch.net/tech/kako/996/996640937.html
3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
14 http://pc2.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc2.2ch.net/tech/kako/1043/10436/1043605481.html
16 http://pc2.2ch.net/tech/kako/1045/10457/1045746245.html
17 http://pc2.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc2.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc2.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc2.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc2.2ch.net/test/read.cgi/tech/1057580107/
0003v(^・^)v
NGNG[C++ FAQ]
http://www.parashift.com/c++-faq-lite/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[禿 Stroustrup]
http://www.research.att.com/~bs/
[C++ 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/
[cppll (ML)]
http://www.trickpalace.net/cppll/ (日本語)
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]
http://www.microsoft.com/downloads/details.aspx?FamilyId=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=ja
[DigitalMars]
http://www.digitalmars.com/
[OpenWatcom]
http://www.openwatcom.org/
[Comeau]
http://www.comeaucomputing.com/
[Intel]
http://www.intel.com/software/products/compilers/
[Metrowerks]
http://www.metrowerks.com/mw/default.htm
0006デフォルトの名無しさん
NGNG| | | ノ\__ヽ
ヽ二二 ヽ -―人 、 | \ノ◎)
_____/ /'(__)ヽ____|
/ / _(__)∩ \
| |/ ( ・∀・ )ノ RUBY! \
.\ヽ、∠___ノ\\ \
.\\::::::::::::::::: \\ \
0007v(^・^)v
NGNG[Boost]
Boost http://www.boost.org/
(日本語) http://user.ecc.u-tokyo.ac.jp/~s31552/wp/boost/
(日本語) http://www.kmonos.net/alang/boost/
[STL]
STLport http://www.stlport.org/
SGI-STL http://www.sgi.com/tech/stl/
STLFilt http://www.bdsoft.com/tools/stlfilt.html
(日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
(日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
http://www.moderncppdesign.com/
LokiPort-MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
[他]
ACE http://www.cs.wustl.edu/~schmidt/
Blitz++ http://www.oonumerics.org/blitz/
flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
[他ライブラリリンク集]
http://www.trumphurst.com/cpplibs/cpplibs.phtml
(日本語) http://www.kmonos.net/alang/cpp/lib.html
0008v(^・^)v
NGNG[【C++】template 統合スレ -- STL/Boost/Loki, etc.]
http://pc2.2ch.net/test/read.cgi/tech/1047978546/l50
[【C++】Boost使い集まれ!]
http://pc2.2ch.net/test/read.cgi/tech/1033830935/l50
[C/C++の宿題やらせてください。]
http://pc2.2ch.net/test/read.cgi/tech/1058283913/l50
[初心者にVisual C++を教えるスレ]
http://pc2.2ch.net/test/read.cgi/tech/1056280510/l50
[VisualC++(MFC限定)相談室]
http://pc2.2ch.net/test/read.cgi/tech/1056584836/l50
[ATL 相談室]
http://pc2.2ch.net/test/read.cgi/tech/1029029882/l50
[C/C++でのWindowsPrograming議論スレ(質問お断り)]
http://pc2.2ch.net/test/read.cgi/tech/1049790146/l50
[COMの世界を斬る!]
http://pc2.2ch.net/test/read.cgi/tech/981823340/l50
[managed C++ やろうぜ!!]
http://pc2.2ch.net/test/read.cgi/tech/1014486422/l50
[C++Builder相談室]
http://pc2.2ch.net/test/read.cgi/tech/1054280736/l50
[タダで使えるBorland C++]
http://pc2.2ch.net/test/read.cgi/tech/1054390397/l50
[Code of the Nerds" Digital Mars C/C++]
http://pc2.2ch.net/test/read.cgi/tech/1044210976/l50
[GCCについて]
http://pc2.2ch.net/test/read.cgi/tech/1046179115/l50
[OpenWatcom C++]
http://pc2.2ch.net/test/read.cgi/tech/1033433728/l50
[タダで最強!フリーC/C++コンパイラ]
http://pc2.2ch.net/test/read.cgi/tech/1035882599/l50
00091
NGNG0010デフォルトの名無しさん
NGNGhttp://jbbs.shitaraba.com/game/bbs/read.cgi?BBS=1314&KEY=1060147851&LAST=100
0011デフォルトの名無しさん
NGNG0012v(^・^)v
NGNG【C++】template 統合スレ -- STL/Boost/Loki, etc.
part1 http://pc2.2ch.net/tech/kako/1037/10377/1037795348.html
part2 http://pc2.2ch.net/test/read.cgi/tech/1047978546/l50
【C++】Boost使い集まれ!
http://pc2.2ch.net/test/read.cgi/tech/1033830935/l50
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
0013v(^・^)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/l50
祝・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/tech/kako/1045/10455/1045542179.html
part6 http://pc2.2ch.net/test/read.cgi/tech/1054280736/l50
タダで使えるBorland C++!
part1 http://pc3.2ch.net/tech/kako/1002/10023/1002377328.html
part2 http://pc2.2ch.net/tech/kako/1030/10304/1030493157.html
[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
0014v(^・^)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
0015v(^・^)v
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG違う。今はJava。
0018デフォルトの名無しさん
NGNGで特定の文字列を含む要素を削除したいのですが
どのようにすればいいのでしょうか?
0019デフォルトの名無しさん
NGNG00201
NGNGテンプレ長いので整頓して>>2-8にしたんだけど、ダメすか?
>>18
struct contains {
const string& key;
contains( const string& key ) : key(key) {}
bool operator()( const string& str ) const { return str.find(key) != string::npos; }
};
lst.erase( remove_if( lst.begin(), lst.end(), containe("hoge") ), lst.end() );
0021デフォルトの名無しさん
NGNG> const string& key;
> contains( const string& key ) : key(key) {}
> bool operator()( const string& str ) const { return str.find(key) != string::npos; }
>};
前スレによるとこの時コンストラクタに渡されるテンポラリstring("hoge")の
生存期間はコンストラクタを抜けるまでという事になっているから
これでは駄目なのではないのか?そうだとすれば
const string key;と書くべきという事になるのだが…
0023デフォルトの名無しさん
NGNG829は関数呼び出しの参照パラメータに結合した場合で
827はコンストラクタの初期化リストに結合した場合だから
827が適用されるように見えるのだが?
002418
NGNG0025デフォルトの名無しさん
NGNGコンストラクタの初期化リスト( ctor-initializer / 12.6.2.1 )とは
constructor()
: parent_class( ... ), member( ... ) ← これ
のことであって
new constructor( ... ) ← これ
のことではない。こっちはコンストラクタ関数呼び出しの際の参照パラメータへのbind。
0026デフォルトの名無しさん
NGNGそれはもちろん承知だが、つまり
contains() : key(string("hoge")) {}
は駄目という事か。なるほど
具体例がないからよく分からなかった。
002718
NGNG0028デフォルトの名無しさん
NGNGこっちもためしてみな。
lst.remove_if( contains( "hoge" ) );
0029デフォルトの名無しさん
NGNGそれだ!
0030デフォルトの名無しさん
NGNGインクルードするとヘッダー1が受け継がれてしまうのですが、
これを受け継ぎたくないのです。
ヘッダーのみでインラインクラス作る時にこの制約が生じると思うのです。
cppでインクルードしたいヘッダーをインクルードすればこれを回避できるのですが、
2つのファイルに分離してしまいます。
解決策はあるのでしょうか?
0031デフォルトの名無しさん
NGNGあるなら(今のところ)あきらめるしかない。
あるいは独自のネームスペースに閉じ込めてもいいが
マクロはどうにもならない。
0032C++ユーザーはSCOに金を払え!
NGNGスしています。当社はC++から多くのロイヤルティ収入を得ていま
す。カルデラの知的資本の奥の深さには驚かされました。
http://www.zdnet.co.jp/enterprise/0208/20/nw_01.html
0033デフォルトの名無しさん
NGNGたとえばヘッダ2で必要としている(ヘッダ1内の)宣言が型名で、
ヘッダ2の中ではそれへのポインタとして利用されているだけなら、
ヘッダ2の中でその型名だけ(それが型名であると)宣言してやれば、
ヘッダ2がヘッダ1をインクルードする必要はなくなる。
もしヘッダ2がインクルードされる前にヘッダ1がインクルードされていれば
中身のあるその宣言を使えばいいし、逆にインクルードされていなければ、
ヘッダ2の中で自前で必要最低限の宣言だけしてやれば良い。
...しかしたとえそれが型名であっても、ヘッダ1でテンプレートが使われていたり、
ヘッダ2でポインタや参照以外の使われ方をしていたりすると、
>>31 のいうとおり、どうしようもないだろうな。
ってゆーか漏れはそもそも、そういう構成自体がどうかと思うが。
0034デフォルトの名無しさん
NGNG乙!!
0035名無しさん@Emacs
NGNGC++で書かれた二つのライブラリを組合わせて一つのプログラムを
作りたいのですが、それぞれに別のメモリ管理ポリシーをもってます。
つまりそれぞれで operator new() を別のものにしてやりたいのですが、
うまい方法はないでしょうか?
それぞれのライブラリはもう書きあがっているので、できるだけ
ライブラリのコード自体はいじらずに、ヘッダをちょこっといじるだけで
すむとうれしいのですが..
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG継承させればいいんでないか?
0038デフォルトの名無しさん
NGNGC++のRTTIについて質問なのですが、これってC++は
どうやって実現しているのですか?
文字列で各インスタンスに埋め込んでいるのでしょうか?
0039デフォルトの名無しさん
NGNG普通は、仮想関数テーブルに型情報を置いてある。
仮想関数テーブルがどこにあるかは前スレを見れ。
0041デフォルトの名無しさん
NGNGRTTIは仮想関数画ナイトダメ
0043デフォルトの名無しさん
NGNG>>40
No, それだと C との互換性がなくなっちゃうから。C++ 標準規格では、
仮想関数を持たないクラスに対して downcast できないことになってる。
5.2.7 Dynamic cast
1 The result of the expression dynamic_cast<T>(v) is the result of converting the expression v to type
T. T shall be a pointer or reference to a complete class type, or “pointer to cv void”. ...
(2-5 upcast とか null ポインタの扱いなど)
6 Otherwise, v shall be a pointer to or an lvalue of a polymorphic type (10.3).
0045デフォルトの名無しさん
NGNG適用すると、実際の型が返ってくるとは限らない。
5.2.8 Type identification
3 When typeid is applied to an expression other than an lvalue of a polymorphic class type, the result
refers to a type_info object representing the static type of the expression.
>>42
処理系とテストコード晒してみ?
0046デフォルトの名無しさん
NGNG親クラスから子クラスのポインタにキャストするような
使い方は、あんまりしないわな
(あ、でもCRect->RECT*みたいなのがあるか)。
004738
NGNGていねいにありがとうございます。m(__)m
環境はVC++6.0で
#include <iostream>
#include <typeinfo>
using namespace std;
class CBase
{
};
class CDerived : public CBase
{
};
int main(){
CBase* p;
p=new CDerived;
cout << typeid(p).name() << endl;
delete p;
return 0;
};
こんな簡単なコードで試しているのですが、出力はCBaseへのポインタ
と出ます。
でCBaseに仮想関数を追加してもやはりダメでした。
0048デフォルトの名無しさん
NGNGメニューバーから [プロジェクト] - [設定] で設定ダイアログ表示
[C/C++] タブ選択
「ランタイムタイプ情報 (RTTI) を有効にする」のチェックボックスを確認
0049デフォルトの名無しさん
NGNG#include <typeinfo.h>
class Base {
public:
virtual void vvfunc() {}
};
class Derived : public Base {};
using namespace std;
main()
{
Derived* pd = new Derived;
Base* pb = pd;
cout << typeid( pb ).name() << endl; //prints "class Base *"
cout << typeid( *pb ).name() << endl; //prints "class Derived"
cout << typeid( pd ).name() << endl; //prints "class Derived *"
cout << typeid( *pd ).name() << endl; //prints "class Derived"
delete pd;
}
0050デフォルトの名無しさん
NGNGtypeid( expression )
0053デフォルトの名無しさん
NGNG> cout << typeid(*p).name() << endl;
これで CDerived と表示されない?
005530
NGNGありがとうございます。
>ってゆーか漏れはそもそも、そういう構成自体がどうかと思うが。
そうですね。
ヘッダー1(class1)をヘッダー2(class2)でインクルードせずに
プロトタイプ宣言して使っても
結局はヘッダー2もインクルードしないとコンパイルできない...。
ただ、後からヘッダー1以外で定義した(class1)を選択できる
余地は生まれるわけだが、(class1)のあるヘッダーを探さなければいけない罠。
0056デフォルトの名無しさん
NGNG#includeディレクティブって、みなさんどこに
書きますか?
.cppにまとめて書いている人を良く見かけますが
.hでそのクラスの実装で必要なのをインクルード
してはマズイでしょうか?
0057>>2ちゃんねらーの皆さん
NGNGこれらの寺院にて諸願成就を祈願しましょう。(爆)
(1-3件目)
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(4件目)
--------------------------------------------------------------
寺院名 吉祥山唐泉寺
通称 江戸川不動尊
所属宗派 真言宗泉涌寺派
住所 〒133−0051
東京都江戸川区北小岩七丁目10−10
京成電鉄の小岩駅から徒歩約15分
(JR線の小岩駅は、
京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号 03−3658−4192
住職 高田正圓
(女住職で、先代住職(高田真快)の奥さんであった模様。)
本尊 不動明王
祈祷日及び祈祷時刻
通常は毎日午前6時より(150分前後かかる模様)
行われるが、毎月28日には(不動明王縁日として)
午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩) 3000円 5000円 10000円
(特別護摩) 30000円(21日間) 100000円(108日間)
300000円(365日間)
--------------------------------------------------------------
0058デフォルトの名無しさん
NGNG継承関係があったりメンバ変数として実態を持つ場合には、当然ヘッダに
書く必要がある。ただし、そうすると
1. ヘッダ A に private メソッドを追加
2. ヘッダ A を include している別のヘッダ A1, A2, A3... も
影響を受ける (と make や統合環境のビルドシステムは理解する)
3. 結果としてヘッダ A, A1, A2, A3, ... を直接・間接に include している
ソースコードは全部リコンパイル
となって、規模が大きくなってくるとキツイ。
俺は極力ヘッダ同士の include はせずに、実装も impl イディオムや
インターフェース継承 + FactoryClass などを使って隠蔽するように
してる。
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG58のとおりだが、
他に、相互参照したときにエラーになるなど。
006156
NGNGなるほど...
.cppでインクルードすると#includeを書く順番に気を
つけないといけないので、.hに書けばいいのにと
思ったのですが、書籍によっては徹底的に.cppで
まとめてインクルードしているもので。
58さんの方法、まだ初心者なのでよくわからないのですが
もっと勉強しますです。。。
0062デフォルトの名無しさん
NGNG> つけないといけないので
それはヘッダの書き方が間違ってる気がする。
006356
NGNGありがとうございます。
でも、Grid.hとCell.hがあったらGrid.h中でCell.hを
インクルードしておいて、プログラム中ではGrid.h
だけインクルードするようにしたいですね、やっぱり...
みなさんみたいにもっといっぱい経験を積まなきゃぁ
0064デフォルトの名無しさん
NGNGGridだけでCellを使わないならCell.hをインクルードする必要はないでしょ。
Cellも使う時だけCell.hをインクルードすればいいだけだし。
勝手にまとめてインクルードされて些細な変更でまとめて再コンパイルされるより、使うものだけインクルードした方がマシ、
何十個もインクルードするわけじゃないんだから。
0066デフォルトの名無しさん
NGNG何か参考になるサイトがあれば教えてください。
0067デフォルトの名無しさん
NGNGclass CTest{
public:
CTest();
private:
int m_nValue;
};
というクラスがあって、m_nValueを初期化するのに
CTest(){m_nValue=100;}
と書いている場合と
CTest():m_nValue(100){}
と書いている場合がありますが
どう違い、使い分けているのでしょう?
0068デフォルトの名無しさん
NGNG代入と初期化の違いを調べろ。
0069デフォルトの名無しさん
NGNG何も考えずに
CTest():m_nValue(100){}
使え
0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNGhttp://that.2ch.net/test/read.cgi/gline/1038243550/
0075デフォルトの名無しさん
NGNGなぜあのようになっているか理由が示された文書はありますか?
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNGその判定関数のはどうしたらいいんでしょうか?
戻り値がboolで仮引数がpairにしているんですけどエラーでコンパイルできません
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNGそれオレも知りたい。
引数を微妙に変えたoperator new()を用意して、
MFCのデバッグ用operator new()とぶつからないようにしたりしてる。
もうちょっとなんとかならんのか…
0080デフォルトの名無しさん
NGNG008177
NGNG{
return a < b;
}
と関数を書いて
map<string,double> x(hantei);
とかいています。
したいことはコンテナの並び順をdoubleの値で順番が決まるようにしたいんです。
0082デフォルトの名無しさん
NGNG0083_
NGNG0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG1.釣り
2.参考にした文献にそう書いてあった
3.やっぱり釣り
0086デフォルトの名無しさん
NGNG> したいことはコンテナの並び順をdoubleの値で順番が決まるようにしたいんです。
無理。んなことしたらmapじゃなくなる。
あと比較関数はテンプレートの引数に。
0087デフォルトの名無しさん
NGNGtypoだよね
008881
NGNGmap<K,V> m(cmp);
キーの型が const Kで値の型がVである空のmapを生成する。ただしキーの順番は判定関数の
cmpで決められる。
って書いてあったんです。
キーでしか並べられないことは理解しました。正しくは
map<K,V,cmp> m;
と書くのでしょうか?
0089デフォルトの名無しさん
NGNGpointer_to_binary_functionにしとくとか
0090デフォルトの名無しさん
NGNGコンストラクタに渡せる比較関数は、
map<K,V,CMP> ← としたときの、CMP 型のオブジェクトのみ。
map<K,V, bool (*)(const K&,const K&> m( &cmp );
とでも書くか、もっと綺麗に書くなら比較関数を
関数オブジェクト(わかんなけりゃgoogleれ) にするか。
0091デフォルトの名無しさん
NGNG前者の記述も間違いではないがこの場合 cmp は less<Key> に限定されるから意味がない。
後者の記述で、cmp には関数オブジェクトのクラスを指定すればいけるばず。
0092
NGNG俺、払ってないんだけど…
0093
NGNGMozillaQuestによると、SCOはC++の権利も主張しはじめたようです。
http://mozillaquest.com/Linux03/ScoSource-02_Story03.html
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNGC++でキーのログをとりたいんですがどーすればいいですか?
JAVAみたいにキーイベントあるんでしょうか?
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG0098
NGNGそれは C++ にあるとかないとか、の問題じゃないと思う。
つーか、使っている OS のイベントハンドラにアクセスするためのライブラリがあればできるんじゃない?
0099デフォルトの名無しさん
NGNG独習?
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGCマガジン
0102デフォルトの名無しさん
NGNGCマガジン
0103
NGNGSCO に吸い取られて餓死しそうです。
0104デフォルトの名無しさん
NGNGコンパイル通らないけど、こういうのってだめなんだっけ?
#include <vector>
#include <map>
class A{};
class B{};
class C{
public:
C(){}
C(const std::pair<const A, B> &in){}
};
int main(){
std::map<A, B> m;
std::vector< C > v(m.begin(), m.end());
return 0;
}
0105デフォルトの名無しさん
NGNGありがとうございます。
調べてみます。
0106デフォルトの名無しさん
NGNGVC7では通る
0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG友達に聞いたところ、ゲームを作ったり本気でやりこむつもりなら、
CやC++が良いと言われました。
そこで質問なのですが、
C++を理解するためにはCの知識は必要ですか?
どういう順序でやっていくのが良いと思いますか?
夏厨ですがよろしくお願いします。
0109デフォルトの名無しさん
NGNGいきなりC++でじゅうぶん。人並みの頭があれば。
0110デフォルトの名無しさん
NGNGそれほど難解なのですか?
また、ゲームを作る事を目標にした時、
CよりC++の方が適しているのでしょうか?
(この二つの違いも良く分かってないもので。。)
0111デフォルトの名無しさん
NGNG難解ということはないが、いろんなことができるので
"全部"使えるようになろうと思うとかなり大変ということ。
一部しか知らなくても十分使えるので、徐々に知識を増やせばいい。
CとC++の違いだが、C++はCを拡張した言語なので、基本的に
C++はCのすべての機能を含み、さらに多機能だと考えて良い。
ただし、Cの機能だけを前提にした書き方と、C++の機能があるときの
書き方の主流は違っているので、C++目的に先にCを覚えるのは遠回りかも。
0112デフォルトの名無しさん
NGNGC++の方が適している。今時純粋なCで組むやつなんか少ないと思われ。
C++は他の言語に比べると難解と言えるかもしれない。
0113デフォルトの名無しさん
NGNG(Cと比べて)C++のいいことろ
・オブジェクト指向を実現しやすい
・STLが便利(有り難味はそのうちわかる)
・低水準な部分(ハード周りの部分)を気にしなくてすむかもしれない
悪いところ
C++自身の入門書でよいものがない(大抵はCなどの経験が前提)
細かいことを気にしだすときりがない
はじめにGUIに手を出すと挫折する
0115デフォルトの名無しさん
NGNGVC6だとSTL関連は通らないことが多いかも
0116デフォルトの名無しさん
NGNGみなさん自作の共通関数とかってどうやってプロジェクト
に取り込んでコンパイルしていますか?
cppに例えばSumという関数を定義して、それを別のcpp
から呼びに行くと「定義されていない識別子です」と
叱られるのですが。
0117デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGすぱしーば
0119デフォルトの名無しさん
NGNGヘッダファイル書け(´д`;)
0120デフォルトの名無しさん
NGNGヘッダーファイルというものを知らんのか
0121デフォルトの名無しさん
NGNG知りませんが何か?
0122デフォルトの名無しさん
NGNGそこまで根源的な初歩を知らないなら
まずは入門書嫁
0123116
NGNG121は私ではありません。TT
ヘッダ.hと実装.cppに分けて、ヘッダ
を取り込んだのですが、関数を呼んでいる部分で
「グローバルネームスペースにない」といって
叱られます。
0124デフォルトの名無しさん
NGNG簡単な例を見せて
0125デフォルトの名無しさん
NGNGnamespaceが本当に違っているのでなければ、
ヘッダに書いた関数プロトタイプの引数のどっかが違ってるとかじゃないの?
0126116
NGNG別のcppでそのヘッダをインクルードして
using namespace Common;
とやっても、
Common::Func();
だと通るのですが、ただの::Func()
だと通りません。
遅れたのですがVC++6.0です。
0127デフォルトの名無しさん
NGNG::Func()はusingの外のグローバルネームスペースから探すから当然では
Func()だろ
0128116
NGNGレスありがとうございます。
ソースですが
-- Common.h --
namespace Common
{
void Func();
}
-- Common.cpp --
void Common::Func(){//処理...}
-- 別のcpp --
#include "Common.h"
using namespace Common;
void main()
{
::Func(); // 通らない
Common::Func(); // 通る
}
こんな感じです。
0129デフォルトの名無しさん
NGNGだから、::Func()と Func() は違うぞ。後者に汁
0131デフォルトの名無しさん
NGNGCの知識が全然役に立たないのは仕様ですか?
他言語からの移行組はCやる必要なかった?
0133デフォルトの名無しさん
NGNGうん
0134デフォルトの名無しさん
NGNGしかし、C++の入門書はCからの差分のみ書かれている場合が多いので、
いきなりclassのソースが出てきてstructとの比較……とかやられても
さっぱり理解できない気がする。
文法からしっかり説明されてる本ならいいけどね。
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGどれを使ったらいーんですか?
一番メジャーなやつ教えてください。
0137デフォルトの名無しさん
NGNGC++処理系?
unix/linux系ならGCC3.x
WindowsならMS純正ってことでVisualC++.NET2003がC++的に無難かね
0138デフォルトの名無しさん
NGNGみたいな関数があって、返り血の各要素を変数
v1,v2,v3...
に格納したいんですけど簡単な方法ありますか?
perlみたいに (v1,v2,v3,...) = func(); とできればよいんですけど
0139デフォルトの名無しさん
NGNG配列のまま使わない理由は?
v1, v2...のほうが面倒だらけじゃんか
0140デフォルトの名無しさん
NGNGbolandのはダメって友達が言ってたんですが・・・
0141デフォルトの名無しさん
NGNGちょっと抽象的過ぎました。すいません。例えば
vector<string> func(string s);
string s = "会社,社員,社員コード";
(company,name,code) = func(s);
のようにしたいんですが。
0142デフォルトの名無しさん
NGNGゲイツのC#にしとけ
0143デフォルトの名無しさん
NGNGまちがえた欝だ。
0144デフォルトの名無しさん
NGNGまあ簡単で安全な記法はないが、結果を構造体にすれば多少使いやすくなる:
struct record {
std::string company, name, code;
record(const std::string& com, const std::string& nam, const std::string& cod)
:company(com), name(nam), code(cod) {}
};
record vector_string_to_record(const std::vector<std::string>& v)
{
return result( v[0], v[1], v[2] );
}
0145デフォルトの名無しさん
NGNGvector ≠ 配列
>>138
vector <string> rtn = func();
company = rtn[0];
name = rtn[1];
code = rtn[2];
じゃだめなん?
0146デフォルトの名無しさん
NGNGあ、 return result は return record の間違い
0147デフォルトの名無しさん
NGNGを実現するテンプレートは作れると思う。
0148デフォルトの名無しさん
NGNGmicrosoft の製品にはmicrosoftの製品で・・・。
つまり vc2003つーことだ。
0149デフォルトの名無しさん
NGNGboost::tuple<string,string,string> f(string);
string s,s1,s2,s3;
boost::tie(s1,s2,s3)=f(s);
0150デフォルトの名無しさん
NGNGboost便利棚
0151138=141
NGNGこんな方法もあるんですね。勉強になります。
>>145
たしかに地道に代入するのが手っ取り早いかも。
>>147
どうやるんだろう。全然思いつかないです。
>>149
と思ったらboostにはこんな便利なものがあるんですか。これを機会に導入してみよう。
0152デフォルトの名無しさん
NGNGエディタ等が違うだけですか?作れるプログラムの種類が違って来たりするのでしょうか?
0153デフォルトの名無しさん
NGNG私はVC++でコンパイルするソースもgccでコンパイルするソースも
同じエディタを使ってますが。
0154デフォルトの名無しさん
NGNGつくれるぷろ�cの種類が違います
0155デフォルトの名無しさん
NGNG簡単なソースも書いた。拡張子も.cppにした。
cd使って.cppが置いてあるフォルダまで行く事も出来た。
で、コンパイルするには後なにをすれば良いんだ?
HSPはボタン一発で全部やってくれたんだが
CとかC++ってなんか小難しいのな。
0156デフォルトの名無しさん
NGNGmakefile で ググれ。
俺はVCしか使ったこと無いんで、これ以上説明できん。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG名前をしくじるのか?
0159デフォルトの名無しさん
NGNG> bbc failname
なんか失敗しそうだなw
0160デフォルトの名無しさん
NGNGhttp://www.hi-ho.ne.jp/jun_miura/bccdev.htm
あたり使え
0161デフォルトの名無しさん
NGNG徹夜明けだけど激しくwラタ
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG最初bbcとbcc試してダメだったんだが32を付けないといかんのだな。
objファイルとかtdsファイルとかわけわからん物まで出てきたがな!
お前等thx
exeファイルクリックしても一瞬で画面が消えてしまうのは、
ソースにHSPで言うwaitとかstopを入れてないからだろうか。
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNGno
0170デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNGthx
*
**
***
****
*****
と表示する事に成功したよ。
0173デフォルトの名無しさん
NGNG激しく邪魔なんだけど。
0174デフォルトの名無しさん
NGNGいいよ。
0175デフォルトの名無しさん
NGNG全部開発が終了したら消す。
0176デフォルトの名無しさん
NGNGかまわんが。ソースコードの管理だけはちゃんとしとけよ。
0177デフォルトの名無しさん
NGNGhttp://www.kurumi.sakura.ne.jp/~kumicyou/cplusplus/1305.html
0178デフォルトの名無しさん
NGNG>実は、explicitを使用しない場合、コンストラクタは何回でも呼べる。
> A a = 1; //a = A( 1 );
> a = 2; //a = A( 2 );
このあたりから、間違いなわけだが。
0179デフォルトの名無しさん
NGNGうへえ、コンストラクタでメモリ確保すると異常終了するだって?
むちゃくちゃですな。
'Resource Acquisition is Initialization'の前提が崩れる(笑)
それより代入演算子定義してないからメモリリーク起こしてそうだけどな。
0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGこれは×
> a = 2; //a = A( 2 );
これは○
>(異なるインスタンスを作れば)コンストラクタは何回でも呼べる。
○
0182デフォルトの名無しさん
NGNGA a = 1; // A::A(1)で初期化, a.p確保
a = 2; //a = A( 2 ); これは分解すると:
// 1. 一時オブジェクト tempがA::A(2)で初期化, temp.p確保
// 2. a.operator=(temp)を実行, デフォルトなのでまるまるコピーされ
// a.pが刺していたメモリはリーク、a.pはtemp.pが指す内容になる
// 3. 一時オブジェクトtempが解体, temp.pはfree
// a.pが指している領域は開放済みになってしまう
a = 3;
a = 4;
a = 5;
この時点で、a.pには A(5)の一時オブジェクトのために確保されて
既に開放されたアドレスが入っている。
結果、returnの時点で、aの初期化のときに確保されたpのメモリがリークし、
A(5)の一時オブジェクトで確保されたpが二重解放されてるわけだな。
0183デフォルトの名無しさん
NGNGVCなら
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcmex/html/vcconmanagedtypesmfc.asp
みたいな手は使えない?
試してみたけど、MFCアプリの中でMC++できた。
0184デフォルトの名無しさん
NGNGどっち先に覚えればいいですか?
0185デフォルトの名無しさん
NGNGフツーのC++って何よ
0186デフォルトの名無しさん
NGNG少なくとも小文字と大文字の違い以上のものはあると思うぞ。
0187デフォルトの名無しさん
NGNGどちらか片方でも全て覚えることは無理。
覚えるのではなく、使えるようになればよい。
0188デフォルトの名無しさん
NGNG俺borlandのつかってるけどVCとどう違うのか良くワカラソ
しかもC++はじめたばかりの初心者ときたもんだ
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGC++ = 言語名
「VC++, BCB は、C++で開発するための環境を提供するアプリ」ってことやん。
まぁ、環境固有の言語拡張とかもあるけどさ…
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGちなみに30分前にC言語ライフをスタートしたペーペー。
知識としてはHSPでシューティングからRPGまで一通り作った程度。
Cの知識はウンコみたいなもんです。
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNGぬるぽ と入れたら ガッ と出して欲しいね。
0196デフォルトの名無しさん
NGNG両方関数だけどtest()の中にcoutとか書かれててもそこでは実行されなくて、
main()以下でtest()が呼び出された場合に初めてtest()の中に書かれてるcoutが実行される。
プログラムはmain()以下で始まってそれ以前にある物はただの宣言(設定)みたいな物。
こういう認識で合ってますか?
0197デフォルトの名無しさん
NGNGiostreamを実装せよの部分が良くわからんけど、
何か値を入力出来る様にチャット窓みたいなの作って、
そこに何を入れられても「ぬるぽ」って出力すれば良いって事?
つまり入力する所でエンター押された時に入力された値を無視して、
関数nurupo()に飛ばしてcout << "ぬるぽ" << endl;を実行させる様にすれば良いだけか。
まぁそのチャット窓の作り方から調べないといけないわけだけれども。
0198デフォルトの名無しさん
NGNGbasic_iostreamを派生したクラスを実装しろってことでは
0199デフォルトの名無しさん
NGNGやっぱり俺の理解を超えた難しい意味だったのか。
まぁとりあえず197に書いた「何入力してもぬるぽと表示するプログラム」は出来たよ。
勝手に理解して勘違いしたが勝手に宿題もしたからこれでおk!
0200デフォルトの名無しさん
NGNGガッ
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNGint と float の計算で
100 * 2.33000 が 232 になってしまいます。
コンパイラもwarning(floatからintへの変換でデータが失われている
かもしれない)といっているのですが、
こんなときどうコーディングすればいいのでしょうか?
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNGintの100をfloatに型キャストすればいいんじゃないの?
(float)100*2.33000
俺は試してないからね。自分で試してみてね。
0205デフォルトの名無しさん
NGNG0206202
NGNGサンクスコです。
でもboost入ってないんです。TT
>>204
それもやってみたのですがダメです。
10000をかけると23299になりますた。
ウォッチだと2.33000ってなってるのに
なんなんでしょう。TT
どうもです。。。
0208デフォルトの名無しさん
NGNG0209202
NGNG>>208
四捨五入、あるいは切り上げはできたらしたいのですが
nWidth * fZoom のどこでしたらいいのでしょう。
初心者質問でしみません。。。
0210デフォルトの名無しさん
NGNGfloatをdoubleにキャストしても駄目みたい。
内部表現の問題だろうな。
0211202
NGNGですよね。doubleにキャストしてもダメでした。
デバッグウィンドウにも2.33000って出てるのに
タチ悪いです。VC++6.0なんですがこんななんですね。。。
0212デフォルトの名無しさん
NGNG#include <cmath>
四捨五入:
static_cast< int >( std::floor( nWidth * fZoom + 0.5f ) );
切り上げ:
static_cast< int >( std::ceil( nWidth * fZoom ) );
四捨五入のfloorはいらんかも。
0213212
NGNG0214デフォルトの名無しさん
NGNG俺が確認したのはBCCだったよ。結果は同じだった。
0215202
NGNG212さんの切り上げでみごと解決しますた。(端数の
原因はわからないので保留しますた。stdははずしたら
通りますた。)
遅くにほんとにどうもありがとう!!...(TT)...
0216デフォルトの名無しさん
NGNG根本的に無理かもしれない。もとデータがすでに2.33ではないのだから。
この場合は四捨五入で逃げられるかもしれないが、
今度は.5境界近辺で同じ問題に遭遇するので根本的解決にはならないかも。
0217デフォルトの名無しさん
NGNG0218202
NGNGだからBCCでもVCでも同じ現象なんでしょうか。
>今度は.5境界近辺で同じ問題に遭遇するので根本的解決にはならないかも。
印刷のズレ程度なのでとりあえず保留しておくことにします。
端数ってムズいですね。。。
0219デフォルトの名無しさん
NGNG最終結果を1/100なり(必要なら50足してから)するのが、一番まともな気がするけど。
利息や消費税計算とかはそうじゃないのかな?知らないけど。
0220202
NGNG>浮動小数点数の計算は数学のようにはゆかない。
つねにそれを頭に入れておかないといけないんですね。
お金がらみじゃなくてよかたー。
>>219
>こういうのって(最終的にintが必要なら)100倍とか10000倍とかで倍率を整数値で保持しておいて
なるほど...
ちらっと思ったのですが印刷部分でスピードが必要と思い、そのまま
ピクセルで持っちゃったのが悪かったかも。。。
(別のtwipとかの座標系を使うとか...)
0221デフォルトの名無しさん
NGNG昔、COBOL使ってたけど固定小数点だったな。
科学技術計算をさせるときは難儀だったけど。
0222デフォルトの名無しさん
NGNGCOBOLは給与計算とか販売管理、生産管理とかで
実績は十分証明されているもんね。
昔VBでお金からみのシステムの置き換えをやったけど
稼動後以前のシステムと1円合わないとか言われた。
例えばa * b * cでa*bですぐ端数処理するか、全部終わって
やるかの誤差らしかった。んなもん知るかとw
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNG仕様出す方は、切り捨てと四捨五入とJIS丸めの違いを知らないから。
>>202
速度を重視するなら尚更floatなんて使うな。
恐らくはdoubleで充分だし、必要なら整数で実装するべき。
0226デフォルトの名無しさん
NGNG>>225
印刷関係ってことは多分実行環境は PC だし、
多分 double の方が早いだろ。
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNGってことはISO 31/0かな。
IEEEの番号はしらね。
0229デフォルトの名無しさん
NGNGfloatは32ビット、doubleは64ビットで
なんでdoubleのほうが早いの?
0230デフォルトの名無しさん
NGNG80x86 では内部では 80 ビットで計算してるから
どっちでもデータ変換が生じることに変わりはないので、
基本的にはどっちでも速度は一緒。
でも、標準関数では double 型が使われているので、
その関数との受け渡しにおいては
float だとデータ変換が生じて遅くなってしまう。
0231デフォルトの名無しさん
NGNGハードウェアが最初から double を想定して作られてるから。
0233デフォルトの名無しさん
NGNG同じような理由で、charの方がshortやlongより早く処理できると思ったら大間違い。
0234デフォルトの名無しさん
NGNG>>226
boost入れたいのですがHDDがあと200Mぐらいしか...
>>225-231
doubleのほうが早いんですね。知らなかた...
ところで昨日212さんに教えてもらった標準ライブラリ関数
std::ceilですが、なぜVCだとstdがついてるとコンパイル
できないのでしょうか?
VCは初心者なのですがVCにはそんなクセみたいなのが
いっぱいあるのでつか?
0235デフォルトの名無しさん
NGNGif (1990>a&&a>1925)
この二つは同じ意味だと思いますが、処理の早さに差が出たりしますか?
a+=1よりa++と書いた方が速いというのは聞いた事あるのですが、
そういう細かいところで速度をアップするテクニックって他にどんなものがありますか?
0236デフォルトの名無しさん
NGNGCPUやコンパイラに左右されるということを忘れずに。
ちなみに単精度用の関数( sinf とか sqrtf とか )が
用意されているコンパイラもある。
0237デフォルトの名無しさん
NGNG速度に差は出ない。
>a+=1よりa++と書いた方が速いというのは聞いた事あるのですが、
どこの馬鹿にそんなこと吹き込まれたか知らないけど、それは大嘘。
まぁ、演算子のオーバーロードの実装の仕方によれば変わるかもしれないけど。
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNGその例なら、
if( (unsigned)( a - 1926 ) <= 1989 - 1926 )
の方がたぶんはやい。
0240デフォルトの名無しさん
NGNGやー、悪いことは言わない。今は可読性を重視した方がいいと思うよ。
マシン性能があがり、お馬鹿なコンパイラも減ってる昨今だし。
ボトルネック解消なら、別で稼ぐべきかと。
>>237
大嘘ってことは無いと思うけど
0241デフォルトの名無しさん
NGNG今時のコンパイラ(つーかC++コンパイラ)なら同じようなコードを出力するはず。
但し、古い貧弱な環境用のCコンパイラが前者は定数値との足し算、
後者をインクリメントで実装しているのも事実。
>1926云々
単純に年だけで元号を判定することは危険。
なぜならば、1989年はたったの数日しか昭和ではなかったから。
0242デフォルトの名無しさん
NGNGむしろ INC x より ADD x, 1 の方が速いって聞くけどね。
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGでもhoge++は++hogeと書こうな。operator++のことも考えて統一した方がいい。
とか書くと「hage[hoge++]とhage{++hoge]は違うだろ」とか言い出すだろうけど
そういう時は
++hoge
hage[hoge]
か
hage[hoge]
++hoge
と書くもんだ。
0246デフォルトの名無しさん
NGNGVC6 はそうなるね。
古いから標準仕様に追いついてないだけ。
VC .NET なら大丈夫だった気が。
古いのは使うなってこった。
0247デフォルトの名無しさん
NGNGconst int unko;
public:
benkio(void) : unko(100) {}
};
うんこは定数?それともconstオブジェクト?
0248デフォルトの名無しさん
NGNG排泄物
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNGclass benki {
static const int unko=0xBAD;
};
定数になりますた
0252デフォルトの名無しさん
NGNGclass benki {
static const int unko=0xF00D;
};
定食になりますた
0253デフォルトの名無しさん
NGNGScatologyパターンってやつですね
0254デフォルトの名無しさん
NGNGヤヤウケタ
0255デフォルトの名無しさん
NGNG関数を実装するのに
func(CPoint* pPoint)
とポインタで実装するか
func(CPoint& Point)
と参照を使って実装するか迷うのですが
どういう風に使い分ければいいのでしょうか。
0256直リン
NGNG0257デフォルトの名無しさん
NGNGいろいろ流派があるんだけど、大きく分けると2派。
1. NULL が来る可能性がある場合のみポインタで後は参照。
2. 関数内部で値を書き換えるならポインタ、そうでないなら参照
(呼び出し側で、値渡しと明らかに区別が付くように)
俺は 1 の方。
0258255
NGNGレスありがとうございます!
あっ、ヌルポインタが来る場合があるのですね。
MFCを勉強しているのですが、たいていポインタで渡して
いるのでなんでだろうと思ったのですが、積極的に
参照を使ってもいいんですね。納得です!
0259デフォルトの名無しさん
NGNGMFC ってもうかなり古いから、
MFC の設計方針はあんまり当てにならんよ。
0260デフォルトの名無しさん
NGNG折れは特別な理由がない限りはほとんどポインタ。
最悪、仕様変更があったときでも対応しやすいし。
(賛否があるのはわかった上でね。)
0261デフォルトの名無しさん
NGNGだからint unko(const hoge& hage)とかしかつかったことないなぁ。
0262デフォルトの名無しさん
NGNGつか、どうせ生成〜保持〜破棄とポインタで扱うことがほとんどだから、
いちいち関数の引数に渡すときにデリファレンスするのも馬鹿らしいって
理由なんだが。
0263デフォルトの名無しさん
NGNGRTIを駆使すれば実装できるんじゃないかねえ
0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG1. static const int unko = 100;
2. const int unko;(初期化リストで初期化)
3. enum { unko = 100, };
4. クラス外でconst int unko = 100;
5. #define unko 100
6. 憧れのあの子はウンコなんてしない
0267デフォルトの名無しさん
NGNGお前、「6. 憧れのあの子はウンコなんてしない 」と書きたかっただけだろ?
0269デフォルトの名無しさん
NGNG3. enum { unko = 100, };
これ以外は機血画位
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNG0272266
NGNG他人様のソース見る限りでは1は少数派かな?
って事で3で逝きます。
0273デフォルトの名無しさん
NGNG4.はcppファイルの方に書くんでしょ?
それならよく使う。
ヘッダファイルを汚さない手を他に思いつかないんだよね。
0274デフォルトの名無しさん
NGNGcpp内で継承クラス作って、そこに書けばいいのでは?
0275デフォルトの名無しさん
NGNG272 みんな好き好んで 3 を使ってるわけじゃない。
ほんとは 1 にしたいけど、古いコンパイラ(VC6 のとか)は
1 を定数として認識してくれないから。
(固定長の配列の宣言とかに使えない)
>>273
cpp ファイル内で使いたいんなら static つけてファイル内スコープに。
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNG4.2 -1-
"The use of the static keyword is deprecated when declaring objects in namespace scope."
0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGそれがどう関係するのか教えてください。
namespaceスコープではなくclassスコープの話をしているのだと認識していました。
0280デフォルトの名無しさん
NGNGテンプレートとも相性抜群だからおいらも 3 をお薦めしとくよ。
0281266
NGNG状況に応じて4を使い分ければいいかな?
所で文字列定数ってどうしてる?
クラス外で const char* unko = "もりもり";
これは逝って良し?
0282デフォルトの名無しさん
NGNGフォーマルにやる必要がある場合は、面倒くさいけど
文字列定数に関してはそれだけをひとつのファイルに
まとめたりするのがベスト。
おちゃらかでいい場合はリテラル文字列をその場で直埋め。
0283デフォルトの名無しさん
NGNGじゃねぇーの?
0284山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNGstatic const char unko[];
をクラス内に作って、
.cpp 内で const char Unko::unko[] = "もりもり";
と初期化。
0288デフォルトの名無しさん
NGNGファイルかリソースだな
0289デフォルトの名無しさん
NGNG多言語化しやすいしな。
0290デフォルトの名無しさん
NGNGお前はたった数十行規模のプログラムでもそんなことするのか?
まぁ、止めはせんが。
0291デフォルトの名無しさん
NGNGYAGNI
0292まりりんまんそん
NGNG{
int *i;
float *f;
double *d;
i = new int;
f = new float;
d = new double;
//何らかの処理
delete d,f,i; // ←ココ
}
最後の行のdelete文はi,f,dの指す3つの領域をすべて正しく解放しますか?
それとも、
delete d;delete f;delete i;
のようにちゃんとばらばらに記述しないといけませんか?
bcc32でコンパイルしてみてるんですが、いずれもエラーはでません。
ちゅか、メモリが解放されたかどうかのチェックのしかたがわからないよ、ママン。('・c_・` )
0293デフォルトの名無しさん
NGNGdeleteされるのはiだけ。
,演算子(コンマ演算子)を調べるべし。
0294デフォルトの名無しさん
NGNGダメ。 これだと d の指す領域しか開放されない。
(delete d), f, i;
http://www.microsoft.com/japan/developer/library/vclang/_pluslang_c.2b2b_.operators.htm
0295デフォルトの名無しさん
NGNG> ちゅか、メモリが解放されたかどうかのチェックのしかたがわからないよ、ママン。('・c_・` )
Borland の C++Builder を買えば
http://www.borland.co.jp/cppbuilder/papers/codeguard/index.html
とかでチェックできるけど。free版だとなさそうな気がする。
0296まりりんまんそん
NGNGサンクスです。マンコ^h^h^hコンマ演算子、調べてみます。
>>295
今のところ適当なループを書いてクラッシュするまでまわしたりしてますが・・・。
そうですか、ありませんか・・・。;_;
回答ありがとうございました。m(__)m
0297デフォルトの名無しさん
NGNG0298293
NGNG294氏が正しい。
0299デフォルトの名無しさん
NGNGttp://www.tietew.jp/cppll/archive/8838 (後半部分)
0300デフォルトの名無しさん
NGNGコーポレイトソフトウェアていうサポセンの馬鹿が
PGに喧嘩売ってます。
http://money.2ch.net/test/read.cgi/haken/1057486349/287
腹立ちました。
みんなでやっつけにいこう。
0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG宣言した名前に数字や命令などを入れるんですよね?
それで後から書き換える時に楽にできる、と。
そこで疑問なのですが、例えば数字を入れる場合で、
普通に変数でやる場合と何か違いはあるんですか?
命令を入れる場合でも、普通に関数でやれば良いような・・・
あと、C++とC#を比較するとどの辺が違いますかね?
0303まりりんまんそん
NGNGマクロは「単なる文字列である」ことが重要。
例えば
#define M男 鞭で叩かれ蝋燭で熱せられることに喜びを見出す者。雄
と定義すると、
コンパイル時にソースコード中の「M男」という文字列が
「鞭で叩かれ蝋燭で熱せられることに喜びを見出す者。雄」に置き換わる。
単にテキストが置換されるだけなので、
どんな文字の定義も許される。
逆にいうと、置換された結果が正しいプログラム文であるかどうかは、
プログラマが保証しなければならない。
・・・たしか、こんな感じ。
0304デフォルトの名無しさん
NGNGマクロはC言語からのレガシー(遺産)で、昔は const や inline なんかがなかったのよ。
だからいまなら const や inline なんかでやるようなことを全部マクロでやってたわけ。
だから const や inline なんかでできることでマクロを使うの避けましょう。
まぁ、よくわかんなかったら今はとりあえずマクロは他に打つ手が無い時の最後の手段だってことだけ覚えとけ。
0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNG#define TAX 1.0+0.05
void main(){
printf("1000*TAX=%.0f", 1000*TAX);
}
0307デフォルトの名無しさん
NGNGマクロが必要になることってのはあんまりない。
まぁ、完全になくなるってことはないけど。
0308デフォルトの名無しさん
NGNGvoid putchar();
};
0309デフォルトの名無しさん
NGNG考えることができる。
普通のC++の関数の呼び出しは call by value である。
ただし、仮引数が参照の場合は call by reference(参照渡し) である。
0310春は来ない
NGNG0311デフォルトの名無しさん
NGNGコンパイラ依存であれば、VisualC++ 2003 について
教えて欲しいです。
0312デフォルトの名無しさん
NGNGコンパイラがインライン展開可能な関数であればインラインになる。
コンパイラにも依存するが
関数自体にも依存するので一概には言えない。
0313デフォルトの名無しさん
NGNGインライン展開される【保証があるか】
インライン展開される【場合があるか】
どっちが知りたいんだ?
前者なら
http://www.webstore.jsa.or.jp/webstore/Com/FlowControl.jsp?lang=jp&bunsyoId=ISO%2FIEC+14882%3A1998&dantaiCd=ISO&status=1&pageNo=0
後者ならアセンブラ嫁
0314デフォルトの名無しさん
NGNG・再帰
・関数ポインタ
・リンケージの種類
0316デフォルトの名無しさん
NGNG例外処理をしているものは、ほとんど皆無です。
趣味グラムくらいでは、例外処理って、あまり有用じゃないのでしょうか?
0317デフォルトの名無しさん
NGNGんなこたない。
けどC++の例外クラスは腐ってるから簡単お手軽に使う気はあまりしないよ。
せめてエラーの原因をstringで持たせりゃいいのに。
0318デフォルトの名無しさん
NGNGはぁ?
stringで持たせるクラスを派生させればいいだけじゃ?
0319316
NGNG例外処理でコードを埋めようとしたところ、あまりの例のなさに、がっかりしてたとこでした。
>>317
レスありがとうございます。やっぱり使いづらいのですね。
stringなら簡潔でよかですねぇ。処理の流れを分けて、
可読性を高めるはずなのに、かえってシンプルじゃ無くなったりで…。
どっかで綺麗に実装してるコード例とかないかなぁ…。
0320デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNG始めてみたときハァ?って思ったよ。
class exception {
public:
exception () throw();
exception (const exception&) throw();
exception& operator= (const exception&) throw();
virtual ~exception () throw();
virtual const char* what () const throw();
};
まともな例外クラスとはこういうものを言うんだよ。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemexceptionmemberstopic.asp
0325デフォルトの名無しさん
NGNGハァ? それと同じようなモン派生させてそれ使えばいいだろ。何度も言わせんな馬鹿。
0327316
NGNG返り値でエラーチェックに戻ります…レスありがとうございました
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNGclass Error
{
std::string message;
public:
Error(std::string msg): message(msg){}
std::string const &Message(){ return message; }
static void Check(bool exp, std::string message){
if(!exp) throw Error(message);
}
};
int main(int argc, char* argv[])
{
int n = 0;
try{
Error::Check(n==3, "n==0でなければならない");
}catch(Error &e){
std::cout << "ERROR:" << e.Message() << std::endl;
}
return 0;
}
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG0332デフォルトの名無しさん
NGNG自分でasmファイル吐くコンパイルオプション付けて調べてみたらどうですか?
0333デフォルトの名無しさん
NGNG知らないならだまっててね
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNG0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNG/:;:;:;:;:;:;:;:;:;:;:;:;:;,丶
.. さっさと教えれ… /:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;:;.,ヽ
i' ' ' ' ' ' ' ' 'i;:;:;:;:;:;:;:;:;.,|
,.-‐¬ ̄-、¨¬‐、 |\,. 、/ L:;:;:;:;:;:;.;.l
////""`'""''ヽソ-‐l=・= =・= ヽ:;/¨iノヽ、
//////」 -=== } | ,ノ./lllll/、
i//ノソ,._______,.""' '".i, l `_ ./lllll/ ヽ
ヽ彡i.6 ̄ ̄i.,__ノ⌒i.,_ノ ..::ゝ.,_____,,,...- /llllllll/ ヽ
/ヽ ゝ' ,rti.l.l.l.、)ゝノlllllllllゝ.,__,ノlllllllllllllソ .}
⌒`ヽ、ヽ li ./ヽllllllllllllllllllllllllllllllllllllllliゝ / /
、 V ヽ ゝ _,......__ ノノ ヽllllllllllllllllllllllllllllllllli/ ./
丶、,.、,ヽ ミ三 ` ¬ ‐‐---‐¬ ¨ ̄
((  ̄ ̄ ¨¬‐- ..,_
l 川 |
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNG使うのが難しい板ですからね。
質問者のレベルによっては何の役にも立たないんですよ。
0343デフォルトの名無しさん
NGNG只なんだよ、只。
乞食根性は仕方ないが
少しは隠せ、恥を知れ。
0344デフォルトの名無しさん
NGNG技術系メーリングリストで質問するときのパターン・ランゲージ
http://www.hyuki.com/writing/techask.html
真・技術系メーリングリスト FAQ
http://www.geocities.co.jp/SiliconValley/5656/
メーリングリストを掲示板に置き換えても通用するから読んでね。
0345↑↑↑↑↑↑↑↑
NGNG0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNGある
# 人に聞くよりプログラム書いて時間計れ!
0348デフォルトの名無しさん
NGNG知らないならだまっててね
0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG0351デフォルトの名無しさん
NGNGところで、>>322について誰か知りませんか?
自分で調べてみたら?
知らないならだまっててね
チンカス
}
0352デフォルトの名無しさん
NGNGC#って単語を時々きくけど。
0353デフォルトの名無しさん
NGNGアセンブラで見るか、それがわからなきゃ
簡単なベンチマークぐらい書けよ。つーか、レベル低杉。
# >>352は釣りと見た。
0354322
NGNG私は322以降発言していないのですが・・・
私のせいでなんかスレが荒れてしまって本当に申し訳ない・・・
話は変わるのですが、>>322のレスについて誰かご存知の方はいらっしゃいませんか?
0355デフォルトの名無しさん
NGNG謝らなくていいから>>353が言っていることを無視するな
0356デフォルトの名無しさん
NGNGBCC5.5で
/////////////////////////
#include <iostream.h>
int main(void)
{
cout << "test002";
return 0;
}
/////////////////////////
をコンパイルすると、
/////////////////////////
致命的エラー F1003 c:\(省略)\include\stdcomp.h 5: erroe 指令: Must use C++ for STDCONP.h
/////////////////////////
と、表示されコンパイルできないんですが、、、
ちなみに堀越一雄著「決定版初めてのC++」を参考にしています。
著者が使用しているg++コンパイラじゃないと使えないんでしょうか?
それともiostream.hが入ってないだけ?
お願いします。
0357デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG拡張子がcppになっていないとか
0360デフォルトの名無しさん
NGNG本古すぎ
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNGアセンブラのソース眺めれば理論が分かるだろ
0363デフォルトの名無しさん
NGNG拡張子は「c」になってます。
>>360
図書館でC++関連の本を探したらコレしかなかったんで・・・。
0366デフォルトの名無しさん
NGNG拡張子cppにして本屋にいって本を買ってきなさい
0367356
NGNGあっ!
出来ました!
ありがとうございます・・・。
何度もスイマセンが
独習用として買う場合のお勧めを教えて下さいませんか?
値段は安ければ文句無いですがひとまず保留として、
C++初心者分かりやすいのをお願いします。
0368デフォルトの名無しさん
NGNG.hつけるとstd::がいらなくなる???
0369デフォルトの名無しさん
NGNGttp://www5c.biglobe.ne.jp/~ecb/cpp/cpp00.html
所々間違いもあるっぽいがとりあえずこのへんでもみとけ。
0370デフォルトの名無しさん
NGNG.h 付きのヘッダは namespace std が無かった頃の負の遺産なので。
0372デフォルトの名無しさん
NGNG移植性を考えると現状では .h 付きのヘッダのほうがよかったりする。
0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNG最近はネットですむけどね。
0376デフォルトの名無しさん
NGNG英語が読めれば、ネットで読みきれないほどの記事があふれてる。本要らない。
0377デフォルトの名無しさん
NGNGだから
「ある」
ってさっき言ったじゃん
0378デフォルトの名無しさん
NGNGわしの使っている本にはusing namespaceに関する表記がまったくないのですが、
なんかいいサイトを知りませぬか?;q;
0379デフォルトの名無しさん
NGNG.h 付きでないヘッダに対応している処理系を対応し始めたバージョンを併記して
5つ以上リストアップしてくれ。それができないならそんなこと言うな。
できたら負けを認めよう。
0380デフォルトの名無しさん
NGNGとあるクラスでひとつのメンバ関数をconstにしたら、連鎖的に書き換える必要がでてきて、
最終的に全てのメンバ関数がconstになり、全てのメンバ変数がmutableになりました。
これってたぶん使い方を誤ってますよね。
mutableの効果的な使用法を解説しているサイトはありませんでしょうか?
0382デフォルトの名無しさん
NGNGmutable使わない方向でお願いします。
0383デフォルトの名無しさん
NGNGSTLportって printf とか C 言語のときからの標準関数も含んでるの?
0384デフォルトの名無しさん
NGNGそれ以外で mutable を使うことは滅多にない。
0385デフォルトの名無しさん
NGNG意味なし。最強
0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNGメンバ変数を見るだけのメンバ関数にはconstを付けろ
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNGconst_iteratorでも?
0394デフォルトの名無しさん
NGNGconst_iteratorにしる。
0395デフォルトの名無しさん
NGNGconst_iteratorじゃだめ?
0396デフォルトの名無しさん
NGNG> .h 付きでないヘッダに対応している処理系を対応し始めたバージョンを併記して
> 5つ以上リストアップしてくれ。それができないならそんなこと言うな。
知らんが、今後シェア最大になるであろう Visual Studio .NET 2003 には .h 付きヘッダが
含まれていないのだが。それでも .h を入れた方が移植性が高いと思うのか?
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG教授または先輩に見放された理由がよくわかる
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNGそれは今後の話だろ?
現状では同じ VC でも未だにバージョン6が主流。
0401デフォルトの名無しさん
NGNGで、だから.hつけるのかね?
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGまじ!?
じゃあCのソースをコンパイルできないじゃん。
0404デフォルトの名無しさん
NGNG無いのはiosteam.hとかだろ。たぶん。
Cでコンパイルすればいいんだしさ。どうせ。
0405デフォルトの名無しさん
NGNG.h 付きじゃないとダメな処理系の時にはどうしてるの?
#if をいちいち使ってるの?
0406デフォルトの名無しさん
NGNG.h 付きだとダメな処理系の時にはどうしてるの?
#if をいちいち使ってるの?
0407デフォルトの名無しさん
NGNGそんな処理系使ったことないある。
そんな処理系、実際どれくらいあるの?
0408デフォルトの名無しさん
NGNG泣く泣く自分で.h付かないヘッダ作って、中で.h付きのファイルをincludeしてください
0409デフォルトの名無しさん
NGNGで、.h 付きだとダメな処理系ってどれくらいあるの?
0410デフォルトの名無しさん
NGNGVC++.NET 2003
0411デフォルトの名無しさん
NGNGそれだけなの?
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNGコンパイルは通るんでしょ?
0414デフォルトの名無しさん
NGNG67%のシェアをほこる処理系ですが
0415デフォルトの名無しさん
NGNG旧バージョン含めたらでしょ
0416デフォルトの名無しさん
NGNGそれはどこが公表してるどういう数字?
できたらソースきぼんぬ。
0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNGVC++.NET 2002は .h付きもサポートされてるよ。
で、その67%のシェアって、2003のシェアじゃないよな。
0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNG母数が少ないからあんまりあてにはならんけど、
そんなに現状と激しい差はないと思われる。
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGVC6。
あと、最近のバージョンなら大丈夫だと思うが CodeWarrior も。
0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNG標準関数が std 名前空間に入ってくれないから意味が無い。
0427デフォルトの名無しさん
NGNGそんなもの必要ありませんがなにか?
0428デフォルトの名無しさん
NGNG何それ? いやマジで。cstdioは知ってるぞ。
0429デフォルトの名無しさん
NGNG#include <stdio>
int main() {
printf("hoge\n");
return 0;
}
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNG0432デフォルトの名無しさん
NGNGSTLportって printf とか C 言語のときからの標準関数も含んでるの?
以下ループ・・・
0433デフォルトの名無しさん
NGNGは処理系依存の物が沢山あるからそういうことはないよ
処理系で用意されているオリジナルのヘッダを読み込むだけの
同名のヘッダは用意されているけど
0434デフォルトの名無しさん
NGNG// VCだとアウト
#include <stdio>
int main() {
printf("hoge\n");
return 0;
}
0435デフォルトの名無しさん
NGNG例えば stdio.h をインクルードしてるだけの stdio があるってことですか?
0436デフォルトの名無しさん
NGNGstdio.hもcstdioもある
0437デフォルトの名無しさん
NGNGそうなんだ、知らなかったよ。情報ありがとう。
でも >>431 によると STLport を使う事で問題が
万事解決ってわけでもなさそうですね。
0438デフォルトの名無しさん
NGNG> #include <stdio>
そりゃアウトだろう。
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNGで、>>424と>>429は、無視でよろしいですか?
0441デフォルトの名無しさん
NGNGデマはよせ。VC++ は 4.2 から <iostream> を持っとる。
>>440
> で、>>424と>>429は、無視でよろしいですか?
>>403とかも無視でよろしいと思う。
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNG.h 付きだとダメな処理系は VC++.NET 2003 オンリーで、
.h 無しだとダメな処理系は?
0444デフォルトの名無しさん
NGNG>.h 付きだとダメな処理系は VC++.NET 2003 オンリー
これが正しいわけだが。つーか規格嫁。
0445デフォルトの名無しさん
NGNGなんだその噛み合ってないレスは
0446デフォルトの名無しさん
NGNG規格も大切だが移植性の話してるんだから
現状がどうなっているかは重要。
規格にしたがったからって実際に現実の移植性が
いいかとは別問題。
0447デフォルトの名無しさん
NGNGで、きみは.hつけるのかね?
0448デフォルトの名無しさん
NGNGその参考にする為に訊いてるんだから
つけているかつけていないか別問題だろ。
頭悪いなぁ。
0449デフォルトの名無しさん
NGNG規格は一つ。
現実問題は処理系の数だけある。
どっちに依るかは使う処理系によって自ずと決まろう。
0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNGC++を使わないで下さい。
0452デフォルトの名無しさん
NGNGそうそう。規格通りに実装されてなければ意味をなさないし、
実際問題、まだ全てが規格通りに実装されるわけでもないんだし。
0453デフォルトの名無しさん
NGNG0454デフォルトの名無しさん
NGNG実際にそれを使う奴は他の処理系でも意識してコード書くだろ。
特に共通で使えそうなコードならなおさら。
0455デフォルトの名無しさん
NGNG規格化するにはあまりにも多岐にわたっていると。そういうことだな?
0456デフォルトの名無しさん
NGNGまず規格通り .h 無し。
エラーが出るようなら STLport を検討。
それでダメなら .h を足して、対応する std:: の使用を変更する。
このとき、移植性が必要なソースなら処理系で定義済みの
プリプロセッサシンボルで .h の追加、namespaceの変更をスイッチ可能にしておく。
それでだめなら諦めて実装を変える。
このとき、移植性が必要なソースなら処理系で定義済みの以下略
0457322
NGNG0458デフォルトの名無しさん
NGNGまた来やがったなw
0459デフォルトの名無しさん
NGNG0460322
NGNG2ちゃんねるも捨てたもんじゃないな。まだこんなレベルが高いスレッドが
あるんだもんな。しかし、ここに書き込んでいる連中は相当なレベルの高さ
だよなぁ。これじゃ、こんなにレスがつくのも当たり前だよ。本当に322の
レベルは高いと思うけど、それについて行ける奴も凄いな。まったく尊敬
するよ。おれもみんなを見習ってレベルの高い人間になれるように精進する。
そして、みんなについて行けるような立派なプログラマになるよ。まだ見習い
だけど3ヶ月後の俺を見ていてくれよ。みんなをアッと言わせるプログラマに
なるからさ。その時まで、みんなもレベルが高いのを持続してくれよな。
ほんと、2ちゃんねるに来て幸せだよ、オレは幸せものだなぁ。
0461デフォルトの名無しさん
NGNG長文オツカレー、だけどみんなもう飽きちゃってんだよねぇ…。
04621
NGNGclass Basic {
public:
int b;
Basic() {b=10;}
};
//C1.h
#include "Basic.h"
class C1 : public Basic {
public:
int cc1;
C1() {cc1 = 1;}
};
//C2.h
#include "Basic.h"
class C2 : public Basic {
public:
int cc2;
C2() {cc2 = 2;}
};
04632
NGNG#include <iostream>
#include "C1.h"
#include "C2.h"
using namespace std;
int main(int argc, char** argv) {
C1 c1;
C2 c2;
cout << "c1.cc1=" << c1.cc1<<"c1.b="<< c1.b;
cout << "c2.cc2=" << c2.cc2 <<"c2.b="<< c2.b;
return 0;
}
%c++ Main.cpp
In file included from C2.h:1,
from Main.cpp:3:
Basic.h:2: redefinition of `class Basic'
Basic.h:2: previous definition of `class Basic'
となってしまいます。どうしたらよいのでしょうか?
0464デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNGとりあえず、話を聞いてくれる友達を作れw
0467デフォルトの名無しさん
NGNGできましたー。蟻が�。
こんなのに、何時間もかけてたなんて…鬱。
0468デフォルトの名無しさん
NGNGネットワークサポートしてないのでしょうか?(C or C++)
VCなのですが、sys/socket.hなどが見つかりません。
0469デフォルトの名無しさん
NGNGWinsockなんてのがあるよ。でも、あまり期待しないでね。
0470デフォルトの名無しさん
NGNGネットワークが不要な環境や不可能な環境もあるわけで、
ネットワークがCやC++の標準になってしまうと、そういう環境では
非標準のコンパイラしか供給できなくなる。
0471デフォルトの名無しさん
NGNGGUIが不要な環境や不可能な環境もあるわけで、
GUIがCやC++の標準になってしまうと、そういう環境では
非標準のコンパイラしか供給できなくなる。
0472デフォルトの名無しさん
NGNGSTLが不要な環境や不可能な環境もあるわけで、
STLがCやC++の標準になってしまうと、そういう環境では
非標準のコンパイラしか供給できなくなる。
0473デフォルトの名無しさん
NGNGとりあえずOSで用意されたものを使うことにしました。
ありがとうございました。
0474デフォルトの名無しさん
NGNGhttp://www.cuj.com/documents/s=8250/cujcexp2106alexandr/
で紹介されている Enforce を使ってみてはどうかと思う。
実際に使ってみると Log とる時にすごく便利。
何気に std::runtime_error を std::string で実装している環境向けなので、
STLport では使えなかったりするが。
0475デフォルトの名無しさん
NGNGそれは、c++の規格通り。
0476デフォルトの名無しさん
NGNGcoutで変数を表示したりする時に一時的に内容をint型に変更するって理解で合ってますか?
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNGa を usigned int として解釈する、
もしくは a から usigned int の一時変数を作成することを意味する。
0479デフォルトの名無しさん
NGNGどっちをincludeするかで使われるライブラリが異なる。
0480デフォルトの名無しさん
NGNGa の値を unsigned int に変換した値を得るだけ。
a 自身に変化は無い。
-a が a の値の符号を逆転させた値を得るだけで
a 自身に変化が無いのと同じように。
0481デフォルトの名無しさん
NGNGC++のSTLみたいなgeneric programmingってJavaでそのまま使えます?
0482デフォルトの名無しさん
NGNGダウンキャストの嵐でよければ、現状でもそれなりには、
container/iterator/algorithm ... みたいなものはある。
けど、もっとマシな Generics は JDK 1.5 に期待せよ。
http://objectclub.esm.co.jp/JavaGenerics/
0483デフォルトの名無しさん
NGNGありがとう。かなり参考になった。
使用目的はC++の勉強や趣味にしたいと思っていますが、本格的なアプリケーション作成も十分出来るなどの点を踏まえて教えて下さい。
0485デフォルトの名無しさん
NGNGVC .NET 2003 にしとけ。
Borland はもう結構長いことバージョンアップしてないし。
0486デフォルトの名無しさん
NGNG.NET Frameworkかcygwinでまずは遊ぶのがいいよ。
金出したからといってプログラミングができるようになるわけじゃない。
書籍に金をかける方がいい。
0487デフォルトの名無しさん
NGNG書籍以前の問題だな。
C++の勉強と書きましたが、GUIの勉強に近いです。
C++の書籍は購入し、Linuxも持っているので標準入出力、反復、条件分岐、ポインタなどはある程度出来ます。
GUIをやろうとするとなんか調子が悪いし、Windowsなどでフリーで提供されているソフトよりもわかりづらい部分もあるので、Windowsでの開発環境を買ってみたいと思いました。
WindowsのAPIも利用したいです。
でもCUIならgccはとてもいいです。
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNG純粋仮想関数をもってないならprotectedにしとくといいよ。
0491デフォルトの名無しさん
NGNG0492489
NGNG> 純粋仮想関数をもってないならprotected
は何故なのでしょうか? おしえていただけると嬉しいです。
0493デフォルトの名無しさん
NGNGAbstract not_implemented;
って感じに抽象クラスのインスタンスを作ってもエラーにならないから。
0494489
NGNG抽象クラスそのものをインスタンス化してもらっちゃ嫌だと
いうことですね。ありがとうございます。
0495デフォルトの名無しさん
NGNG全然OK。
そういう設計もある。
0496デフォルトの名無しさん
NGNGint i=15 * 6 * 0.7; // 62
int i=15 * 0.7 * 6; // 63
で前者は62に後者は63になるのですが
これは一体なんなんでしょうか?
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?num=30&hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&q=%E6%BC%94%E7%AE%97%E5%AD%90+%E5%84%AA%E5%85%88%E9%A0%86%E4%BD%8D+%E7%B5%90%E5%90%88&lr=lang_ja
0500デフォルトの名無しさん
NGNGプログラムの実行中に、関数を動的に書き換えたいと考えています。
そこで、オリジナルの関数を宣言した時、
その関数のポインタを得ることは出来ますが
関数の終端を得るにはどうすればよいでしょうか?
(この「終端」はアセンブラ命令でいうretの位置だと捉えてください)
0501デフォルトの名無しさん
NGNGオリジナルを動的に書き換えるのは(確か)無理。
char型の配列を書き換えてcallならできるだろうけど。
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNGだから無理。はじめから配列にアセンブラで命令入れとけ。
0504500
NGNGWriteProcessMemoryでどうにかなるかな?
と思ったのですが、無理なのですね〜勉強になりました。
御教授いただいたchar型配列のcallを試してみます。
どうもでした。ちなみに502は私ではありませんが、すいませんです。
0505502
NGNG0506500
NGNGそうでした・・すいません。
最初と変わって申し訳ないのですが、オリジナルの関数以外も視野に入れさせてください。
書き換えは不可能でも、関数の内容の読み取りを行いたいんです。
そこで、ちょっと終端検出を考えて試してみたのですが
void a(〜)
{
〜
};
void b(〜)
{
};
と隙間無しに宣言して、aとbのポインタを見てみると
bはaの直ぐ後ろに確保されているようで
b-1がaの終端ということでいいのかも、と思ったのですが
この方法は、あまりよくないんでしょうか・・?
メモリの確保のされ方はOSのほうの話になりますか?
0507
NGNGOS じゃなくてコンパイラの出すコード次第だと思う。
(リンカも多少仕事する余地があるかな)
>この方法は、あまりよくないんでしょうか・・?
どっちにしろ移植性ゼロなんだから、C++ の話題じゃあないし、
あまり気にせず出来るやり方でやればよいと思うよ。
Win32 ならコード書き換えるんなら VirtualProtect(Ex) でチャクチャキっと。
0508デフォルトの名無しさん
NGNG書き換えとか読み取りとかって・・・
コンパイルというものを理解しているかな?
アセンブラとか、マシン語とかって知ってる?
メモリーの中に、Cの関数が入っているわけじゃないよ。
最近はソースコードデバッガがあたりまえだから、そういう錯覚に陥りやすいのかもしれないけど。
0509デフォルトの名無しさん
NGNG>>500みるかぎり、その辺は分かってるんじゃないかな
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNG氏ね
0513デフォルトの名無しさん
NGNG>と隙間無しに宣言して、aとbのポインタを見てみると
>bはaの直ぐ後ろに確保されているようで
そんな保証はない! ・・・と断言してみせた。
さあ次はお前の番だ。保証があると反駁してみせろ。
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNGjavaだったらGUI簡単につかえてやる気がでるんだが・・・
どこかほどほどに大きいサンプルプログラムおちてるとこないっすか?
0516デフォルトの名無しさん
NGNGプログラミングのためのモチベーション維持するのが大変だよな。
大きなものはいきなりは作れないだろうし。
0517デフォルトの名無しさん
NGNGQtはいいよ!!!!
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNGもうちょっと、詳細な状況説明をおながいします。
0521518
NGNG理解できない馬鹿は黙ってろよ。
わかってる人、よろしくお願いします。
0522デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNG質問者はトリップを忘れずに。
0525デフォルトの名無しさん
NGNG三次元配列は固定長なのか、初期値は定数なのか、その辺次第だろ?
0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNG0528
NGNGあいまいさがない限りは this-> を省略できますよね。
これの this-> を強制するようにはできますか?
それってコンパイラごとのオプションで #pragma で指定するようなものなんでしょうか。
ローカル変数で同じ名前の変数を使ってしまって、
それがバグの原因になるということが頻繁にあるので、
明示的に this-> を使うように強制したい、と思うんです。
使用しているのは gcc 2.95.2 です。
0529デフォルトの名無しさん
NGNGコーディング規約
0530
NGNGみんなが規約をきっちりと守ってくれたらいいんですが…
0531デフォルトの名無しさん
NGNGコンパイラでは規制はできない。
そんな腐ったルールを強制するよりは
名前ルールのほうで回避するのが普通
(ローカル変数は小文字だけ、とかメンバ変数はm_つけるとかそういう類。
コーディング規約スレ参照)
0532
NGNGやっぱりそうですか…
現状、ローカル変数は aaa_bbb_ccc 系の命名方法、
クラスの変数は aBbbCcc 系の命名方法にしているんですが
(Windows 系のプロジェクトとあわせるためもあって)、
守ってくれない人もいるんで強制できたらなぁと思った次第です。
PHP のようにデフォルトで強制される言語もあるんで、
Web がらみの仕事も多いうちではどうせなら C++ でも強制してしまえ、とばかりに。
0534デフォルトの名無しさん
NGNG名前ルールで分割しない場合、
人間が見てもthisを付けるべきかの判断がそもそも困難なので
コードレビューをしてもミスを残す危険がある。
(問題をおこす場面というのは同一の名前の場合なわけだからね)
しかし名前ルールで分割する場合、宣言をレビューした時点で
誰もが違反を指摘できる。
0535
NGNG宣言を見た時点で、その名前の付け方は違反だと指摘できる、ということですね。
問題は無意識にメンバ変数と同じ名前のローカル変数を使ってしまっても、
コンパイラにはそれを検出するすべがないということだと思うんです。
まぁコンパイラによっては警告を出してくれるものはあるみたいですけど。
ん?もしかしたら -Wall で g++ は警告出してくれるんじゃないか?
んなことないか。
0536デフォルトの名無しさん
NGNG組織でやってるのなら確実にレビューをすればそういうチェックと共に
多くの問題を発見できるんだが脳。
ちなみに名前を隠蔽する場面ってのは、メンバ変数以外にも
引数やらローカル変数同士ですらあるし、 namespace + usingも罠だな。
0537
NGNGですね、特にヘッダファイルの中に using かかれた日にゃぁ。
それが与えられたライブラリのヘッダファイルだったりすると…最悪。
0538デフォルトの名無しさん
NGNGshared_ptrが使える場合は、徹底的に使った方が良いでしょうか?
使わない方が良いっていう場面が、あったら教えてください。
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNG間違いなくatd::auto_ptrより速度が遅いと思うので、コンテナに入れる時
以外は使わなくていいんじゃなくて?
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNGカウンタが分裂してしまうこともあったりするかもね。
そういう使い方をしなきゃならんときはオブジェクト自身にカウンタを持たせて
intrusive_ptrのほうがいいかも、とか。
(メモリ効率もいいし)
0544デフォルトの名無しさん
NGNG#if __cplusplus
extern "C++"{
#endif //__cplusplus
class Hoge{
Hoge();
~Hoge();
printHoge();
};
#if __cplusplus
}
#endif //__cplusplus
というようなclassを作った時に、
Hoge(), ~Hoge, printHoge
をC言語から呼び出して使う方法はあります?
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNGnew は代表的な重い処理のひとつで、shared_ptr は参照カウンタの為に余分に
new が行われるから shared_ptr を多用し過ぎするとそこそこパフォーマンス影響がでるハズ。
だから、沢山作られるオブジェクトなら shared_ptr を使わずにその本体のオブジェクトに
参照カウントを内臓するような設計にしたほうがいい。
とは言っても例によって最近のマシンはパワフルだからフツーは shared_ptr を
使いまくっても問題ナッシングだとは思う。
0547デフォルトの名無しさん
NGNGそもそも C では class が作れんし。
まぁ、無理やりそれっぽいことをすることはできる。
IDirectDrawSurface とかの COM のヘッダファイルが
ある程度参考になるのではないかと。
0548デフォルトの名無しさん
NGNGあれから自分でソース読んでたのですがさっぱりで…助かりました。
速度はやはり落ちるのですね。ちょっと特殊な用途なので
参照はがしもありそうで…intrusive_ptrは初耳、勉強しておきます。
やっぱり訊いて良かった…。
ひとまずコンテナのみに使用しておきます。レスありがとうございました。
0549デフォルトの名無しさん
NGNG書いているうちにすいません。なるほど、生成にかなりコストが…。
ちょっと貧弱なマシンも考えなければなので、これは根本から見直さないと…。
いやはや本当に助かります。レスサンクスです。
0550
NGNGあと、符号{つき|無し}{右|左}ローテートとかもあったら便利なのになぁ。
ビット演算やりたければアセンブラつかっていう話もあるけど、
そういう低レベルのところを言語仕様に入れてくれてもいいのになぁ。
歴史的には高級言語としてそういうのを隠蔽しようとしてきたんだろうけど、
いまの C の価値はむしろそういうレベルのコード生成の透明性にあるからなぁ。
0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNGIUnknown 継承して、CComPtr つかえってことですね。
0553デフォルトの名無しさん
NGNGローテイトもってる CPU じゃないと
実装が面倒になるというのもあったのではなかろうか。多分。
0554
NGNGははぁ、そうなのかもね。でもなぁ 8bit の時代からあったからなぁ。
ところで、皆さん整数の桁あふれとかはちゃんと対処しています?
加算命令で int の幅を超えちゃっても、
C の言語仕様上は検出するすべがありませんよね。
多くのプロセッサは桁あふれを検出することができると思うんですが、
C からも使えたら便利だとは思いませんか?
0555デフォルトの名無しさん
NGNGそれが気になる
0556デフォルトの名無しさん
NGNG「アセンブラを使用汁」ってことに尽きるんでしょうなぁ。
0557
NGNG要素が0と1だけからなり、加算がXORで表現される、
激しく巨大な行列の演算。
グラフ理論なんかでよく出てくる。
0558デフォルトの名無しさん
NGNG計算量増えるけど先に確かめておけばいい
C++なら検出つきの整数クラスでも作ればいいだろう
それならすぐ元に置き換えられるし
0559デフォルトの名無しさん
NGNGやはりローテイトの出番がよく分からんなあ
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG詳しく説明して欲しいな。
0562デフォルトの名無しさん
NGNGんー、あれが一番詳しい(というかわかりやすい)説明だと思うが・・・。
0563デフォルトの名無しさん
NGNGそもそもXMLは仕様が固まったのでしょうか?
0565デフォルトの名無しさん
NGNGできるよ。
コンパイラオプションに -checked つけるか、
checked(式) ってやると例外が発生するようになる。
0566デフォルトの名無しさん
NGNG0567デフォルトの名無しさん
NGNGncursesであってます?
0568
NGNGまぁそれが一般的だろうね。
■ このスレッドは過去ログ倉庫に格納されています