1 名前:デフォルトの名無しさん [2007/07/26(木) 00:33:07 ] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 テンプレその他 >>2-15 付近参照 前スレ class C++相談室lt;part56gt; pc11.2ch.net/test/read.cgi/tech/1170343752/l50
372 名前:368 mailto:sage [2007/08/16(木) 19:00:40 ] >>371 うーんエラーメッセージは変化なしです
373 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 19:06:17 ] aaa.subclass->operator[]("bbb")
374 名前:368 mailto:sage [2007/08/16(木) 19:08:45 ] >>373 コンパイル通りました ありがとうございました
375 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 19:11:26 ] 意味があるかは知らんが、(*aaa.subclass)["bbb"] でコンパイルは通るぞ。
376 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 19:11:34 ] >>373 俺もそうだと思ったけど、関数形式で呼ぶのがなんか嫌だから書かなかった なんか解決策ないかね
377 名前:371 mailto:sage [2007/08/16(木) 19:13:21 ] >>372 そうか? 前者は引き数が合わなくて関数が見つからないが、後者は戻り値の型が合わなくてエラーになると思うのだが。 つーか、なんでまたmain()のreturnなんかで試すんだ? >371の後半は読んでないのか?
378 名前:376 mailto:sage [2007/08/16(木) 19:13:31 ] ああそうか、違和感の理由が分かった。 連想配列にしたくて添え字をオーバーロードしているはずなのに opreator[]で呼んだら意味を成さなくなっちゃうからだ。
379 名前:376 mailto:sage [2007/08/16(木) 19:15:59 ] つうことで解決案 subclassをカプセル化して、参照越しにoperator[]を呼ぶ
380 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 19:23:44 ] (*aaa.subclass)["bbb"] でコンパイル通らず、 aaa.subclass->operator[]("bbb") でコンパイル通るってあり得ないと思うんだが。
381 名前:368 mailto:sage [2007/08/16(木) 19:28:22 ] >>375 あわわ間違って(*aaa.subclass["bbb"])としちゃってたようです >>377 エラー部分だけ抜き出そうとして型違いのreturnになってました、ごめんなさい… >>379 単語の意味がわかってないので検索してやってみます、ありがとうございました
382 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 19:35:38 ] でもなんでchar *じゃなくて、char * &なんだろう。 constでないということは、こういうことがやりたいんだろうか。 (*aaa.subclass)[''bbb"] = new char[10] ; いや、ひょっとしたらこういうことがしたいのか char * & ptr = (*aaa.subclass)[''bbb"] ; ptr = static_cast<char *>( realloc(ptr) ) ;
383 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 20:59:50 ] class Base { public: Base(int n) {} }; class Derived : Base { public: Derived(int n) {} }; これがどうしてダメで、Base::Base()が必要なのか教えてください。
384 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 21:06:38 ] 親クラスに n を渡すなら、それをちゃんと書かなきゃいけない。 public: Derived(int n) :Base(n) {}
385 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 21:06:53 ] はい?
386 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 21:07:27 ] >>383 その例のDerived のコンストラクタは結局 Derived(int n) : Base() {} の省略形だから
387 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 21:21:45 ] そのnは親に渡さずに別に使うnかもしれないし。
388 名前:デフォルトの名無しさん [2007/08/16(木) 23:12:17 ] >>383 Derived クラスのインスタンスを生成するときに Base クラスのコンストラクタを呼び出すからなんだと思います。 コンストラクタを定義していないときはデフォルトコンストラクタが呼び出されるけど 定義してると定義されたものを呼び出すから この場合は引数のいらないコンストラクタを定義するか Derived クラスのコンストラクタで Derived(int n) : base(100) {} みたいに Base(int n) を呼び出して 引数を渡さないとだめだと思うんです。 初心者なんで間違ってるかもしれません。 っていうか STL 難しすぎでうっ!
389 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 23:20:25 ] Baseのコンストラクタにデフォルト値を書いておくのもいいかも っていうか STL 関係ねー
390 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:01:01 ] >>388 >っていうか STL 難しすぎでうっ! でうっ?
391 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 00:20:57 ] 唐突にこれを思い出した ttp://www.karakuri-box.com/~killer-q/file7/KITERETU0022.png
392 名前:デフォルトの名無しさん [2007/08/17(金) 00:41:05 ] すいません。釣りではありません。 C++ってどんな局面で使うんですか? WinアプリならC#使ったほうが圧倒的に楽
393 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:00:07 ] 脳みそ沸かしたいとき
394 名前:デフォルトの名無しさん [2007/08/17(金) 01:24:19 ] Cで先頭アドレスと要素数がわかってるのですが ForループじゃなくてC++のiteratorに変換してくれるtemplateとかないんですか? ない場合どのiterator継承すればいいんでしょうか
395 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:40:46 ] T*head; size_t element;が既知なんでそ? なら、&head[0]〜&head[element]がiteratorの要件を満たしてくれるでそ?
396 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 01:48:01 ] >>392 楽かどうかなら C# が楽だろうが、 C# は Windows にしか優しくないし、 速度も C++ に劣るし、 そういうのが必要な時には C++ が圧倒的有利。
397 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 02:19:58 ] 速度が必要になるようなミッションクリティカルな場面に出会ったことがない 最近は全部C#。
398 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 02:21:20 ] サーバーアプリだとC#?ハァ?
399 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 02:38:29 ] ?
400 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 03:59:53 ] つかここ#かんけーねーし
401 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 05:58:45 ] >>392 C#を実装するのに使います
402 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 12:37:18 ] >>401 が良い事言った
403 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 21:16:42 ] なぜ想像力がデスクトップとサーバー位にしか働かないんだ プログラムが必要な場面はいろいろあるぞ
404 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 21:39:47 ] class CFUNC a; の2次元配列を動的に確保する場面があって、 CFUNC ***pppa; として使いたいですが、 pppa = new CFUNC**[y_len]; でまずy要素を確保して pppa[0] = new CFUNC*[x_len]; 各y要素のx要素を確保して pppa[y][x] = new CFUNC(); で、各要素をインスタンス化して (*(pppa[y][x])).hoge(); みたいに使おうと思うのですが、このpppaを破棄する場合に deleteはどう書いたらいいのかわからなくなってしまいました。。。どなかたpppaをdeketeしてもらえませんか? ちなみによくしらないのですが、delete[]ってなんで配列の要素数がわかるんですか?
405 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 22:15:50 ] typedef CFUNC*** PPPCFUNC typedef CFUNC** PPCFUNC typedef CFUNC* PCFUNC と整理してやると PPPCFUNC pppa = new PPCFUNC[y_len] pppa[0] = new PCFUNC[x_len] pppa[y][x] = new CFUNC になるんで deleteとdelete[]で困る局面はなくなると思ってみたり 要素数は実装によるけどもコンパイル時には決められないからどっかで一元管理してんでないすか多分 俺はそうする
406 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 22:53:53 ] VC++では先頭の手前に要素数が格納されてた希ガス
407 名前:404 mailto:sage [2007/08/17(金) 22:59:04 ] なるほど、typedefを忘れてました。 ではこれで確保したpppaはdelete[] pppaで破棄できるんですねっ! 要素数は、 int pppa_len_y; int *pppa_len_x = new int[ pppa_len_y ]; でnew時に一緒に初期化しています。 もっと手軽な方法ありますか?
408 名前:404 mailto:sage [2007/08/17(金) 23:02:44 ] >406 それじゃぁmallocするときに、必要size+1とってfreeのときにそれ利用してるんですねぇ。 ってことは要素数を保持しなくても、ポインタの手前の要素数使えってこと? ちなみにc++の規定ですか?処理系依存ですか?
409 名前:デフォルトの名無しさん mailto:sage [2007/08/17(金) 23:17:52 ] 処理系依存。
410 名前:404 mailto:sage [2007/08/18(土) 00:17:58 ] >>405 PPPCFUNC pppa = new PPCFUNC[y_len]; でnewしようとすると、PPFUNC*からPPPFUNCに変換できません と怒られてしまいました。 PPPCFUNC pppa = (PPPFUNC)( new PPCFUNC[y_len] ); でキャストして大丈夫なのでしょうか?
411 名前:404 mailto:sage [2007/08/18(土) 00:36:14 ] すいません、勘違いです。typedefミスってました。OTL
412 名前:383 mailto:sage [2007/08/18(土) 11:08:57 ] >>384-389 ありがとうございました。よくわかりました。 最近C++を勉強しているのですが、Java育ちのゆとり世代なものでスパルタさにガクブルものです。 class Foo { private: char* s_; public: Foo(char* str) : s_(new char[strlen(str)+1]) { strcpy(s_, str); } ~Foo() { delete[] s; } }; int main() { Foo a("foobar"); Foo b = a; } この程度で落ちるってのがすごすぎです(なぜ落ちるのかはちゃんとわかりますが・・・)。
413 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 11:24:18 ] >>412 生でnewを使うからそういう羽目になる。 std::stringを使うなり、std::vectorを使えばいい。 せめて、スマートポインタを使え。
414 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 11:34:02 ] コピーコンストラクタや代入演算子をちゃんと書かないから・・
415 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 12:19:01 ] C++を使う時は、リソースの所有権を常に意識する必要がありますな。 RAIIはちゃんと勉強しといたほうが良いよ
416 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 12:37:37 ] そうだな、コピーコンストラクタと代入演算子は常に書くべき。
417 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 12:40:35 ] Java→C++とか死亡ルートじゃね? Java→C→C++って回るべきだと思うんだが
418 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 13:32:09 ] GC付きC++って選択肢もあるんでないの(w
419 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 14:17:34 ] Javaなんか使うから頭が馬鹿になるんだよ。 GC付きの言語を使うと変な癖が付く。
420 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 15:08:22 ] 時代に逆行している人
421 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 16:59:23 ] >>417 自分はC#→C→Java→C++ってやってきたけどおk?
422 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 17:03:18 ] コンストラクタで例外を投げるクラスがあり、 そのクラスをstaticに使ってるんですが、 この場合、どのように例外をキャッチすればいいのでしょうか? class Throw{ public: Throw(){ throw 1; } }; class TestClass{ static Throw throw; }; こんな感じです。
423 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 17:12:19 ] >>422 コンストラクタの中でキャッチするか、プログラムが死ぬか。
424 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 17:36:05 ] >422 staticをやめる
425 名前:デフォルトの名無しさん [2007/08/19(日) 13:25:57 ] 教えてください。 たとえば int i = 100, *ip; double d = 123.456, *dp; ip = &i; dp = &d; char *s = "abcdefg"; cout << ip << " " << dp << " " << s << endl; このようなコードで int型やダブル型のポインタを cout で出力すると アドレスが表示されるのに char型のポインタだと 文字列が表示されるのがいまいちよくわからなかったんですが ずっと勉強してきてふと思ったんです。 cout で演算子オーバーロードでそうなるようにされてるのかなと。 で定義されているコードを探そうと思ったんですけど なんかごちゃごちゃしててよくわかりません。 もし予想が当たってるならどのファイル見ればいいかでしょうか?
426 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 13:54:49 ] >>425 basic_ostream っていうクラステンプレートに対して定義されている。 char もテンプレート引数になってるからちょっと探しにくいだろうね。 ヘッダ ostream に対応するファイルで定義されているはず。 ごちゃごちゃしたヘッダを読むのがいやなら >>2 から規格のドラフトでも見るといい。
427 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 17:00:46 ] 教えてください。
428 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 17:31:07 ] 何をだ
429 名前:デフォルトの名無しさん mailto:sage [2007/08/19(日) 18:41:48 ] >>428 事故解決すますた
430 名前:デフォルトの名無しさん [2007/08/19(日) 21:20:33 ] >>426 ありがとうございます。 ファイル見てみたんですけど 今の僕にはまだ難しくてよくわかんないんで規格もみたんですけど いまいちわからなくて 検索してたら説明されてるページをみつけました。 www.io.nara-su.ac.jp/kanrishitsu/manual/FSUNf90/LANG/japanese/C++/stdlib/stdref/bas_8583.htm これですっきりしました。
431 名前:デフォルトの名無しさん [2007/08/20(月) 15:44:57 ] 質問です。 下のクラス図のようなクラスを実装したいのですが、DataClassのように、二つ(以上)で共有しているクラスは、コード上でどのように書いたらいいのでしょう? DataClassのインスタンスをグローバルな領域で作るしかないのでしょうか? クラス図 enjoi.blogdns.net/up/src/868.jpg とりあえず書いてみたコード class DataClass{ private: int data; public: void setData(int newData); int getData(); }; class ClassB { public: bool DoSomething(); }; class ClassA { private: ClassB classb; };
432 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 16:18:28 ] 状況次第じゃね。 どっちかに持たせて、もう片方にも渡せるようにすることもあるし、 動的に確保して、A, B の両方のスマートポインタに入れとくこともあるし、 A を所有するクラスに持たせて、そっから渡すようにすることもあるし、 シングルトンにしてグローバルな領域に置くこともあるし、
433 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 16:18:28 ] そんなに文句あるんならnamespace使うなりClassAとClassBを統合するなりすれば?
434 名前:デフォルトの名無しさん [2007/08/20(月) 16:20:59 ] 初心者だからよくわかんないんですけど DataClass をメンバとして持つんですか? ClassA と DataClass の関係って必要なんですか? ClassB経由で十分なんじゃないでしょうか?
435 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 16:23:07 ] 関連のあるABのオブジェクトが同じDataClassオブジェクトと関連を持つかどうかは示されていない。 むしろ同じオブジェクトではないと考えるほうが自然。
436 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 16:28:10 ] A, B, DataClassを保持する親クラスParentを作っておいて、A, Bのインスタンス生成時にParentへのポインタを渡し、 各インスタンスはParentへのポインタを通してDataClassへとアクセスする。
437 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 16:30:25 ] B に入れといて、B を通して操作する。
438 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 16:35:13 ] 多重継承はやめとけ。実世界でも親の種が違う生き物は短命だ。
439 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 16:36:43 ] どこに多重継承が出てくるんだ?
440 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 16:59:47 ] あの矢印は関連。サブクラスは白抜き三角矢印。
441 名前:デフォルトの名無しさん mailto:sage [2007/08/20(月) 17:56:47 ] たくさんのご回答ありがとうございました。 複数の方法論に、そもそも設計の段階でご意見まで、たくさんいただきまして、ありがとうございます。 少し数があるので、それぞれについて吟味して、決めた際にまた改めてのお礼がてらご報告にきたいと思います。 ありがとうございました。
442 名前:デフォルトの名無しさん mailto:sage [2007/08/21(火) 09:33:29 ] >改めてのお礼がてらご報告にきたいと思います。 しなくていいよ。
443 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 00:48:57 ] stringstring を途中で空にすることはできるでしょうか?
444 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 00:56:17 ] std::stringstream?
445 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 01:27:07 ] なんだこのバグは support.microsoft.com/kb/326616/ja >>443 stringstream.str("");
446 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 02:00:38 ] >>445 鬱になった やはりSTLportを入れて使(ry
447 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 02:10:08 ] std::coutで、時々アドレスのような文字列("0xABCDEF12"みたいな)が出力されたり、 std::wcoutで何も出力されなかったりして困ってたんだけど、445が原因? でもVS2005 Proだから違うか
448 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 02:34:28 ] >>447 coutにwchar_t*食らわしたり、localeを適切に設定せずに日本語文字列食わしてるならお前が悪いだけ。
449 名前:印字ケータ [2007/08/23(木) 14:31:20 ] バイナリエディタでファイルを開くと 保存してある漢字の"日"という文字は16進数で93 FAと表示されてますが、 コレを読込んで、配列に入れると-109と-6となります。 16進数で表示させたいので、変換する方法を教えてください。 お願いします。
450 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:35:18 ] unsignedにキャストすればいいんじゃね。
451 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:40:35 ] 93 FA を2進数であらわすと 1001 0011 1111 1010 10010011 を符号付き10進数であらわすと -109 11111010 を符号付き10進数であらわすと 00000110 -6 そのまま16進にすれば同じ 気にしないで突き進め char を intにするなら符号拡張がおきるので>>450 のとおりunsigned にしとけばいい
452 名前:印字ケータ [2007/08/23(木) 14:42:15 ] >>450 返答ありがとうございます。 早速やってみましたが、変換後に4294967187というデカイ数値になりました。 ちなみに、unsignedの変数にキャストして代入してみました。 もしかして私のやり方が間違ってますか。
453 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:54:41 ] 4294967187 ってのは16進に直すと ffffff93 93 はマイナスだから、そのままint にもってくと 符号拡張するんだよ unsigned にキャストってどこでどうやったの? unsigned な変数に入れてやってみ。
454 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 14:56:17 ] 符号拡張されてるんだろう 10010011→11111111111111111111111110010011
455 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 15:04:05 ] char ch = 93; int n = (unsigned char)ch;
456 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 18:34:31 ] >>445 Dinkum版stringの短文字列最適化がアダになったな。 実装としては面白くて好きなんだがな。
457 名前:デフォルトの名無しさん mailto:sage [2007/08/23(木) 22:36:57 ] 2005SP1で直ってるっぽいが
458 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 08:15:51 ] vector< struct X > Func_A(); vectorとかコレクションを返す関数って効率悪い?
459 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 08:30:10 ] >>458 コンテナを参照で受け取ったほうがいいんじゃないか?
460 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 08:44:11 ] そこでRVOに期待、右辺値参照にもっと期待。
461 名前:sage [2007/08/30(木) 10:25:41 ] >>459 参照で受け取るっていうのは void Func_A( vector< struct X >& ); か、 vector< struct X >& Func_A(); ってことですか? とりあえず上の参照を引数にする方でやってみます
462 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 11:47:47 ] vector< struct X >& Func_A(); はどっかに所有者用意しなきゃいけないから色々と面倒じゃね? 基本はauto_ptr戻しだと思うけど。
463 名前:デフォルトの名無しさん mailto:sage [2007/08/30(木) 23:55:27 ] いや、たぶん void Func_A(std::vector<struct X>& arg) のことだろう。 仕様と実装を混同するのはよくないが、実際には多くのコンパイラにおいて 「構造体(class)を返す関数」は、暗黙の引数(返り値へのポインタ)を受け取って、 そこに書き込んで返しているわけだから。 で、return直前にインスタンスを生成する以外の場合、つまり ローカル変数としてvectorを宣言していろいろ操作しそれを返す場合 おそらくRVOされる可能性も低いんじゃないね。知らないけど。
464 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 00:49:22 ] >>463 よくある戻り値用のポインタが指しているのは確保されただけで まだコンストラクタが走ってない領域ね。引数で受け取る場合は 必ず構築済みのインスタンスを指すんで、仕様的にも違いがある。 最後の場合は「可能性が低い」じゃなくて RVO は不可能。
465 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 00:52:15 ] >>464 Named RVOはVC8がやってるらしいですぜ msdn2.microsoft.com/en-us/library/ms364057 (vs.80).aspx
466 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 00:55:03 ] ずっと前の gcc に付いてたのに削除されたな。あれは仕様的に 何か問題があったんだろうか?
467 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 01:09:49 ] gcc.gnu.org/gcc-3.1/changes.html コンパイラが勝手にやるようになったから文法からは削除されただけみたい。
468 名前:464 mailto:sage [2007/08/31(金) 01:23:50 ] いろんな変数返されたとき困るじゃん、とか思ってたけど、そうじゃないときには 働くのね。ふーん。
469 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 01:35:07 ] 引数が同じで戻り値が違う型の関数を定義する方法って知らないですか? できればクラスのメンバ関数でやりたいです まえにWebで見かけたんだけど見つからなかったorz
470 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 01:48:21 ] >>469 引数の型が同じなら関数を呼び分けることができないから、基本的に無理だろう。 戻り値の型を基底クラスのポインタにして、異なる型の派生クラスのオブジェクトの ポインタを返すとかじゃダメ?
471 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 03:13:32 ] >>469 こんな感じ? struct A { template <typename T> T foo(int); }; void bar() { A a; char c = a.foo<char>(0); short s = a.foo<short>(1); // ... }
472 名前:デフォルトの名無しさん mailto:sage [2007/08/31(金) 14:55:28 ] 浮動小数点の小数点以下を簡単に取る方法ってないですか?