[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/14 14:02 / Filesize : 217 KB / Number-of Response : 865
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part71



1 名前:デフォルトの名無しさん [2009/07/18(土) 02:54:58 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part70
pc12.2ch.net/test/read.cgi/tech/1244942050/l50

2 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 02:57:44 ]
■基本■
[C++ FAQ]
 www.parashift.com/c++-faq-lite/
 www.bohyoh.com/CandCPP/FAQ/ (日本語)
  Cとその仕様を比較しながらの解説なので分かりやすい。
  ***** 質問の前に必ずこの二つに目を通してください *****
[C/C++ リファレンス]
 www.cppreference.com/ (英語)
 www.cppll.jp/cppreference/ (↑の日本語訳だけど最新は反映していない)
[禿 Stroustrup]
 public.research.att.com/~bs/
[C++ International Standard]
 www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38110
[JTC1/SC22/WG21 - C++]
 www.open-std.org/jtc1/sc22/wg21/
  ここから規格の最新(2003より新しい)ドラフトがダウンロードできる。
[JIS X3014]
 www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3014
  ISO規格の日本語訳。JIS X 3014:2003はISO/IEC 14882:2003 (E)に対応。

3 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 02:58:36 ]
■Books(Templateまわり)■
Effective STL
 www.amazon.com/exec/obidos/ASIN/0201749629/
 www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
 www.amazon.com/exec/obidos/ASIN/0201704315/
 www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
 www.amazon.com/exec/obidos/ASIN/0201734842/
C++ Template Metaprogramming
 www.amazon.com/exec/obidos/ASIN/0321227255/


4 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 02:59:33 ]
■Libraries■
[Boost]
 Boost www.boost.org/
 (日本語) www.kmonos.net/alang/boost/
 (日本語) shinh.skr.jp/boost/
[標準ライブラリ]
 SGI-STL www.sgi.com/tech/stl/
 STLport stlport.sourceforge.net/
 GNU libstdc++ gcc.gnu.org/libstdc++/
 Apache STDCXX incubator.apache.org/stdcxx/
 STLFilt www.bdsoft.com/tools/stlfilt.html
 (日本語) www005.upp.so-net.ne.jp/episteme/html/stlprog/
 (日本語) www.wakhok.ac.jp/~sumi/stl/
[Loki]
 sourceforge.net/projects/loki-lib/
 LokiPort-MSVC6sp5 fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport


5 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:00:33 ]
> Apache STDCXX incubator.apache.org/stdcxx/
> は
> Apache C++ Standard Library (STDCXX) stdcxx.apache.org/
> というのは指摘済みでした。ごめんなさい。とりあえず訂正。
ごめんなさい。直すの忘れていました。

■Libraries■
[Boost]
 Boost www.boost.org/
 (日本語) www.kmonos.net/alang/boost/
 (日本語) shinh.skr.jp/boost/
[標準ライブラリ]
 SGI-STL www.sgi.com/tech/stl/
 STLport stlport.sourceforge.net/
 GNU libstdc++ gcc.gnu.org/libstdc++/
 Apache C++ Standard Library (STDCXX) stdcxx.apache.org/
 STLFilt www.bdsoft.com/tools/stlfilt.html
 (日本語) www005.upp.so-net.ne.jp/episteme/html/stlprog/
 (日本語) www.wakhok.ac.jp/~sumi/stl/
[Loki]
 sourceforge.net/projects/loki-lib/
 LokiPort-MSVC6sp5 fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport

6 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:01:20 ]
Boost C++ Libraries
www.boost.org/

Boost 翻訳プロジェクト
boost.cppll.jp/HEAD/

Let's Boost
www.kmonos.net/alang/boost/

boost info
shinh.skr.jp/boost/

7 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:04:39 ]
順番間違えました。すみません。

入門ページなど

www.cplusplus.com/

・入門, 一覧, 使い方
www5c.biglobe.ne.jp/~ecb/cpp/07_01.html
・メソッド一覧
www.wakhok.ac.jp/~sumi/stl/
・サンプルプログラム集
www.s34.co.jp/cpptechdoc/reference/stl_samples/

8 名前:前スレ994 mailto:sage [2009/07/18(土) 03:37:27 ]
typo があったようですみませんでした。
きちんとなおしたものを添付します。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9780.txt
どうしてもオーバーロードがあいまい、と出てしまうのですが、何が悪いのでしょうか。

9 名前: mailto:sage [2009/07/18(土) 03:39:56 ]
すみません、こちらが最新です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9781.txt

10 名前: mailto:sage [2009/07/18(土) 03:41:12 ]
コンパイラは gcc 3.4.4 です



11 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 03:52:44 ]
ostream operator<<(ostream &stream, coord<U> ob)
istream operator>>(istream &stream, coord<U> &ob)
    ↑
ここに&がないじぇ

12 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 04:30:57 ]
>>11
ご指摘ありがとうございました。うまくいきました。参照返しなのを忘れておりました。

13 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 15:41:04 ]
だよね。オブジェクトのコピーか参照かっていうのは本質的な違いだよね。

14 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 16:20:09 ]
前スレ1000gj

15 名前:デフォルトの名無しさん [2009/07/19(日) 01:28:32 ]
もし、(a==真かつb==真かつc==偽)かつ(d==真またはe==)が
真のときf=真
else
 {
  f=偽
 }
endif
なif文書きたい場合、どういった工夫をしたらいいですか?
乱視な俺にはカッコのインデントがチカチカして頭痛が痛い

16 名前:デフォルトの名無しさん [2009/07/19(日) 01:29:33 ]
c==偽)または(d==
添削ミスですorz

17 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 01:44:29 ]
>>15
そのまま書けば?何が不満なんだ?

18 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 01:44:57 ]
e==真として、そのままf = (a && b && !c) || (d && e);と書き下す以外に書き方ってあるの?

19 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 02:57:30 ]
if(){if(){if()hoge}endif}endif・・・

20 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 13:53:01 ]
次のような条件があるなら関数にすればいい
・ 判定方法に名前をつけられる
・ メンバー変数による判定、あるいは、何度か使用する判定




21 名前:デフォルトの名無しさん [2009/07/19(日) 19:38:35 ]
シングルトンクラスを作りたいと思います。
インスタンスを得るのにgetInstance()など
作って使うのが一般的だと思いますが、
operator new()の中に含めても、同等の機能が
実現出来る気がします。
operator new()にすると、何か目に見えるデメリットなど
ありますか?

22 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 19:49:54 ]
>>21
まず無駄にdeleteを実装しなきゃならない上、ユーザーにシングルトンオブジェクト
のライフサイクルを考えさせることになる。
だったらgetInstance()一発の方が楽だと思うが。

23 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 19:56:47 ]
>>21
newの戻りが常に同じポインタにするのかな?deleteが困っちゃうね。
既存の関数をオーバーロードするときに明らかに違う機能を入れると混乱の元だよ。
「初回使用時生成」でググってみよう


24 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 19:57:02 ]
その前にまずシングルトンにすることのメリットがあるのかどうか、よく考えたほうがいいだろうな。

25 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 20:14:57 ]
>>22-24
お答えありがとうございます。

>>その前にまずシングルトンにすることのメリットがあるのかどうか、よく考えたほうがいいだろうな。
対象は、MDIの子ウインドウクラスです。
子ウインドウのインスタンスは唯一になります。
サンプルがシングルトンを使っていたので、
同様に使うようにしましたが、確かにシングルトンでなくても
良い気がします。そっちの方を考えてみます。

>>delete
これは例えば、C#等のガペコレがあるやつだと
無問題になるのでしょうか。

>>明らかに違う機能を入れると混乱の元
確かにそうですね、考え直します。

26 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 20:28:01 ]
>>25
C#などのガベージコレクタでは問題はおきない。それと引き換えにガベージコレクタの処理が重くなっている。これがいわゆる等価交換である。


27 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 21:07:48 ]
子ウィンドウがシングルトンなんてありえないだろjk

28 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 21:11:50 ]
>>25
もし子ウインドウが1つしか存在し得ないのなら、そもそもMDIを使うのが
間違いだな。

29 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 22:06:31 ]
シングルトンってシングルスレッドでは単に関数の中にstaticな変数をラップするだけなのね。

30 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 00:40:26 ]
BOOST_TYPEOFってどんな実装なの?コード書いてあるとこよく分んないんだけど…



31 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 02:01:00 ]
www.boost.org/doc/libs/1_39_0/boost/typeof/typeof.hpp

32 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 07:02:32 ]
letsboost::typeof
ttp://www.kmonos.net/alang/boost/classes/typeof.html


33 名前:デフォルトの名無しさん mailto:sage [2009/07/20(月) 22:33:10 ]
>>31,32
ありがとう。これは使い物にならんわ…


34 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 21:52:10 ]
C++の入門書の通り、mainに
cout<<"Hello, world"
って書いたらいきなりコンパイルエラーがでて笑った。
ちょっと調べたらusingでstd::を省略できることはわかったけど、
そうすると全てのstd::の名前空間が含まれてしまうらしいなw

C++って仕様がちょっとマヌケすぎないか?

35 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 21:58:59 ]
その入門書がマヌケなだけ

36 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 21:59:11 ]
using std::cout;でおk

37 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:18:27 ]
ろくに知らないのに馬鹿な発言して恥をかく典型。

38 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:21:25 ]
>>34
背伸びをするのも時には必要だもんね。



39 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:24:47 ]
そのクソ入門書がこれ以上売れてしまわないように書名を晒すのが君の義務だ

40 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:25:11 ]
数時間かけて
その入門書片手にくだらないレスを考えていたんだろうから
バカでも許してやろうぜ。



41 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:02:29 ]
GetRand()関数について質問させてください。
0〜100の乱数の中のひとつがほしいときは、
GetRand(100)
で受け取れるんですが、100〜200の中の乱数がほしいときは
どのように記したらいいんでしょうか。
どうやっても出来ないんで、誰か助けてください。

42 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:09:46 ]
GetRand(100) + 100で問題あるの?

43 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:13:41 ]
>>42
思いつかなかったんだろうな

44 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:26:34 ]
すみません、知識不足すぎました。
GetRand内だけで済ませようとした自分がアフォすぎました。
低レベルすぎてすみませんでした。
お騒がせして申し訳ありませんでした。。。
では。

45 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 01:56:33 ]
アフォすぎたとへこむより、そう考えるのかーと思えないとなぁ

46 名前:デフォルトの名無しさん [2009/07/23(木) 19:50:07 ]
#ifndef HOGE_H
#define HOGE_H
#endif HOGE_H

ヘッダーのインクルードガードの#endifにマクロが記述してあるコードを見たんですが、これってどうなんですか?
どういう役割があるのか、やった方がいいのか悪いのか、誰か解説して下さい。


47 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 19:59:35 ]
どういう意味もない。無視される

48 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 20:08:25 ]
無視されることは決められてるの?
#endif //HOGE_H
というスタイルは割と見る

49 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 20:18:51 ]
無視はされないだろ
普通に#defineが何度も定義されるだけだと思うが

50 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 20:28:44 ]
詳しくお願いします。



51 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 20:31:06 ]
>>48
#ifndef HOGE_H
#define HOGE_H ←ここでHOGE_Hを#defineしてるから
#endif HOGE_H ←ここのHOGE_Hは空白に置き換えられる


52 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 20:33:50 ]
>>51
あ、そうかw

>>49は勘違い?

53 名前:49 mailto:sage [2009/07/23(木) 20:36:56 ]
勘違いでしたすいませんorz

54 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 23:40:56 ]
実装方法のスタンダードを教えてください。

自分で作ったクラスに、
 「WM_PAINT時に動かしたい paint メソッド」と、
 「WM_CREATE時に動かしたい create メソッド」と、
 「WM_CLOSE時に動かしたい close メソッド」
があるとします。
今までは、特定ウィンドウのメッセージループでいちいち
paint 等を呼び出していましたが、サブクラス化できるように
構成を変えたいと思います。

サブクラス化する手法として、もっとも一般的な実装方法を
ご教授ください。


55 名前:54 mailto:sage [2009/07/23(木) 23:42:15 ]
すみません、語弊がありました。

×サブクラス化する手法として
○サブクラス化するためのインターフェイスの手法として

よろしくおねがいします。

56 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 02:09:55 ]
>>54
その自分で作ったクラスから派生させるなり、
paint,create,closeを持ったインターフェース用意してそれを呼ぶようにしたりしちゃダメなの?

57 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 02:30:41 ]
いやいや、SetPropとかSetWindowLongPtr使えってテンプレ回答では?

58 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 13:30:12 ]
>>57
そういうことか
メッセージループでswitch文書きたくないのかと思った

59 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 14:30:01 ]
 ある関数void foo(unsigned int num)内の出来事。
 引数numに格納された値を使って、
 char* array = new char[num];
 として確保して使いたい。
 ところが使用後(fooスコープを脱出後)には自動的に破棄されるようにしたい。

これを実現するのに一番簡単な方法は何でしょうか?
デストラクタを利用して出来そうな気がするのですが。
よろしくお願いいたします。

60 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 14:35:52 ]
std::vector<char> v(num);
char *array = &v[0];



61 名前:59 mailto:sage [2009/07/24(金) 15:01:42 ]
>>60
なるほど、vectorの内部の配列は連続していることが保証されているというのを使うわけですね。
ありがとうございました。

62 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 15:04:43 ]
#include <boost/scoped_array.hpp>

boost::scoped_array<char> s( new char[num] );
char *array = &s[0];

これだとダメかな?
知ってる人いません?


63 名前:62 mailto:sage [2009/07/24(金) 15:13:36 ]
char *array = s.get();
でしたね。
失礼。

64 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 15:56:38 ]
後でサイズ変更しないならいいんじゃねぇの

65 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 16:12:04 ]
int型のベクターの初期化で楽な方法ってありますか?
int配列はint a[]={1,2,3}みたいにかけるので
今は一時的にint配列をつかってこんな風にやってるんですが

vector<int> v;
int d[]={1,3,2,5,6,17,8,0,2};
copy(d,d+sizeof(d)/sizeof(d[0]),back_inserter(v));


66 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 16:17:38 ]
vector<int> v(&d[0], &d[sizeof(d)/sizeof(d[0])]);

67 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:03:00 ]
ありがとうございました

68 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 20:17:36 ]
boostにそれ用のコーポネントがある。
boost::assignでぐぐれ

69 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 20:55:51 ]
C++ code - 39 lines - codepad
ttp://codepad.org/6eGTAvJT

ここにある関数
call_display_1(&d);
call_display_2(d);
call_display_3(d);
のうち、call_display_1とcall_display_3はdisplay()が仮想関数として
定義されているので挙動は理解出来ます。
call_display_2(d);
は、引数をconst参照で受け取っていますが、これでも仮想関数は必ず有効で
標準出力に"Derived Class."が出力されると保証されていますか?

「参照はポインタを使って実装されている」
と聞いたことがありますが、こういった実装上の理由ではなく、
標準C++の仕様上確かに保証されていますか?


70 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 22:16:23 ]
はい



71 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 13:46:26 ]
色々やってみたけど結局templateでjavaジェネリクスのextends条件はできませんでした。

72 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 14:41:50 ]
こんなのどうよ
class A {};
class B : public A {};
class C {};
template <typename T> class X {
public: X(){
T *t = 0;
A *a = t; // Aの派生クラスでなければここでERROR
}};
int main() {
X<A> a; // OK
X<B> b; // OK
X<C> c; // ERROR
}

73 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 14:51:32 ]
>>71
じゃあJavaに変えると良いよ。
スレ違い。

74 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 14:56:28 ]
Boost.ConceptCheckのConceptAssertとTypeTraitsのisBaseOfでできるな

75 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 14:56:40 ]
// boostだとこうなる。参考書丸パクリだが
#include <iostream>
#include <typeinfo>
#include <boost/type_traits.hpp>
#include <boost/utility/enable_if.hpp>
template< typename sub_class, typename super_class, class = void >
class X{
public: X()    { std::cout << typeid(sub_class).name() << _T("は、") << typeid(super_class).name() << _T("の派生型ではありません。") << std::endl;}
};

template< typename sub_class, typename super_class >
class X< sub_class, super_class, typename boost::enable_if< boost::is_base_of< super_class, sub_class > >::type >{
public: X()    { std::cout << typeid(sub_class).name() << _T("は、") << typeid(super_class).name() << _T("の派生型です。") << std::endl;}
};

struct A{};
struct B : A{};
struct C{};

int _tmain(int argc, _TCHAR* argv[])
{
    X< B, A > x0;   // strect Bは、strect Aの派生型です。
    X< C, A > x1;   // strect Cは、strect Aの派生型ではありません。
    return 0;
}

76 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 15:17:15 ]
>>71
C++のtemplateは黒魔術だから、大抵何でもできる。
というか、お前釣りだろ?w
alfalfa.livedoor.biz/archives/51489493.html

最近、知ったか房みてるとどうしても↑に思える

77 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 15:43:04 ]
>>76
まさに真理だなw

黒魔術というか、テンプレートメタプログラミングはチューリング完全だから
効率を気にしなければ他のプログラミング言語で実現出来ることは何でも出来る。

78 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 16:04:03 ]
>>77
むしろ実行効率は良いという、恐ろしいことが証明されているんだよね。
ただし開発効率は発狂物だろうがww

79 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 16:11:28 ]
という事は超頑張ればコンパイル時にMP3を鳴らす事も!・・・

80 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 16:12:55 ]
>>79
本当にやってるヤツが世界にはいるのではないだろうかw




81 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 16:15:58 ]
C++ code - 169 lines - codepad
ttp://codepad.org/0JbIj2qe

ここにあるコードを
Windows XP HomeEd SP2
g++ (GCC) 3.4.5 (mingw special)
でコンパイルして実行したところ、
「実行時エラー」
になりました。
本来は上記のサイトにあるようにコンパイル時エラーになって欲しい物ですが、
どうして実行時エラーになってしまうのでしょうか?

ちなみに意図的にコメントアウトしてある
// friend bool operator == (const MyInt& lhs, const MyInt& rhs){return lhs.num==rhs.num;}
の部分をコメント解除すると問題無く動作するようになります。


82 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 19:07:19 ]
初心の者ですが、派生クラスのコンストラクタで悩んでいます。
派生クラスのコンストラクタをクラスを定義するスコープの外で定義することは可能でしょうか。

class Base {
private:
int x;
public:
Base(int x);
};
Base::Base(int x)
{
this->x = x;
}

class Derived : public Base {
private:
int y;
public:
Derived(int x, int y) : Base(x);
};

Derived::Derived(int x, int y) : Base(x)
{
this->y = y;
}
ではコンパイラから叱られてしまいます。どのように書けばいいのでしょうか。

83 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 19:20:49 ]
public:
Derived(int x, int y);

84 名前:69 mailto:sage [2009/07/25(土) 20:14:00 ]
>>70
ありがとうございます。

85 名前:81 mailto:sage [2009/07/25(土) 20:16:29 ]
自決しました。

どうやらコンパイラ(g++ (GCC) 3.4.5 (mingw special))の仕様のようです。
バグって言い切っていいのかは分かりませんが。


自決方法
  Windows XP HomeEd SP2
  g++ (TDM-1 mingw32) 4.4.0
  この環境でなら問題無く動作するようになります。


86 名前:71 mailto:sage [2009/07/25(土) 20:30:16 ]
>>73すみません
>>74-76ありがとうございます。そしてごめんなさい。
使用コンパイラがbcc5.5なのですが、is_base_ofの中核部分だけを取り出して
コンパイルした結果、bccではうまく判別できず、VC2008ではうまく判別できました。
どうやらbccでは定数の初期化式に関数の呼出し等があると、コンパイルは通っても
値は0?とかになってしまうようです。だめですね…

87 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 20:39:40 ]
>>85
死ぬな死ぬなw

88 名前:82 mailto:sage [2009/07/25(土) 21:42:32 ]
>>83
ありがとうございました。

89 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 22:58:33 ]
std::maxのような関数テンプレートは
どの標準ヘッダに定義されていますか??

90 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 23:09:41 ]
algorithm



91 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 23:11:15 ]
>>85
いろいろ問題がありそうなコードだけど
コンパイルエラーになることが、
"問題無く動作する"ってことなの?

92 名前:85 mailto:sage [2009/07/25(土) 23:36:04 ]
>>91
> コンパイルエラーになることが、
> "問題無く動作する"ってことなの?
はい、g++としてはコンパイル時エラーで教えてくれる方が
正しい挙動だと思いまして。

> いろいろ問題がありそうなコードだけど
例えばどこが問題でしょうか?



93 名前:89 mailto:sage [2009/07/25(土) 23:37:04 ]
>>90
ありがとうございます!!

94 名前:85 mailto:sage [2009/07/25(土) 23:41:38 ]
>>91
> いろいろ問題がありそうなコードだけど

#define OPERATOR_MY〜〜
などのマクロが登場していることや
public :
int_t num;
の様にメンバが丸裸のpublicアクセス指定されている事

以上2点はサンプルコードだからです。
さすがにこんなクソコードは実務では書きません。

なんか後出しじゃんけんみたいになってしまって恐縮です。
申し訳ありません。

95 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 01:18:43 ]
自決でビール吹いたw

96 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 01:52:39 ]
>>87を見るまで気づかなかったw

97 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 03:51:31 ]
自決やべー後からくるわ。

98 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:11:31 ]
自決しました
より
自決方法
にじわじわくる

XPとg++でどう死ぬんだと

99 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 14:57:26 ]
未定義動作とか使うんだろうかw

100 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 18:15:11 ]
鼻から出てきた百足に目を食い破られて死ぬんじゃないかなぁ








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<217KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef