- 1 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 19:37:43 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。
- 496 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 00:34:08 ]
- Javaをはじめ、メジャーな言語のGCはメモリ不足しか認識しないから、
明示的にcloseしない場合、メモリに余裕があればfinalizeは呼ばれず、 DB接続も閉じられない そしてコネクションプールのタイムアウトで死に始める業務アプリ 鳴り始めるサポートデスクの電話機達
- 497 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 00:39:21 ]
- まぁJavaなんてマーケット戦略で広まっただけのうんこ言語だからな・・・
プログラマと名乗るくらいならC++くらいできる頭を持って欲しい・・
- 498 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 00:59:54 ]
- finalize()でリソース解放なんて保険でしかないからな
- 499 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:00:32 ]
- リソース管理で似た話を読んだことある気がしてたけど思い出せた
ttp://mag.autumn.org/Content.modf?id=20050506023118
- 500 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:00:40 ]
- でもね、C++は巨大で複雑怪奇だからね。Cを引きずってる面もあるし。
無駄を削ぎ落として細部を明確にした言語が望まれるというのもわかるよ。 それとGCの有用性とは別の話だが。
- 501 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:03:52 ]
- 実はVBなんかも
リソース周りは優秀だったりする
- 502 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:26:11 ]
- continuationを明示的に扱えない言語はうんこ
- 503 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:26:35 ]
- scheme習いたてですか?
- 504 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 01:55:30 ]
- >>503
C++習いたてです。
- 505 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 07:46:34 ]
- C#のusingの使いづらさは異常
scopedとでもして識別子が入ってるブロックの最後でdisposeしてくれたほうがよかった
- 506 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 08:50:00 ]
- 素朴な疑問です。
#include <iostream> struct S { virtual void hoge() = 0; // 純粋仮想のみ }; struct S1 : public S { void hoge() { std::cout << "S1" << std::endl; }}; struct S2 : public S { void hoge() { std::cout << "S2" << std::endl; }}; int main() { S1 s1; S2 s2; S& r1 = s1; S& r2 = s2; r1.hoge(); r2.hoge(); r1 = r2; // 基本クラスの参照を代入 r1.hoge(); r2.hoge(); return 0; } VC8で上記のコードを実行すると S1 S2 S1 S2 と表示されました。 r1 = r2;はS::operator=を呼ぶだけなので何も変わらない、と理解したのですが、 これはC++的に正しい挙動なのでしょうか? それとも未定義でたまたまこうなっているだけなのでしょうか?
- 507 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 08:55:40 ]
- あ、改行を削ったらコメントをミスりました。
> struct S { virtual void hoge() = 0; // 純粋仮想のみ }; は > struct S { virtual void hoge() = 0; /* 純粋仮想のみ */ }; です。
- 508 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 08:56:43 ]
- 単純に、自動生成されたoperator=(S, S)で仮想関数テーブルが書き換わらないようになってるだけ。
- 509 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 08:57:18 ]
- s1, s2のうちSの部分だけがコピーされた、と解釈すればわからんでもない
- 510 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 09:00:15 ]
- とりあえず解決するには自分でS2 operator=(S, S)を定義すればいいように思えるが、
それはS = Sの一般的な代入に関して考えるとかなり狂っているから諦めろって言う話でっていう
- 511 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 12:27:47 ]
- >>498
同意。finalizeって呼ばれるとは限らないとか。ほんとに気休め程度だね。
- 512 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 13:29:20 ]
- >>506
代入や他オブジェクトでの初期化でvptrは変更されない。
- 513 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 15:56:17 ]
- class A { friend class B; int x; };
class B { class C {}; }; VC8.0 では class C から class A の x が参照できますがこれは C++ の仕様ですか?
- 514 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:00:01 ]
- Cのreadableなプログラムを自動生成するメタ言語みたいなの
ないでしょうか? readableじゃないのならあるのですが、読めないと意味ないのです
- 515 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:01:17 ]
- 具体例を。
- 516 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:08:22 ]
- まともなCソースも >>514 には、readable じゃなさそうだ...。
- 517 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:17:27 ]
- vector<int>で何個か反復子を進めたあと、
それが今何番目の要素なのかを知る関数はないですか?
- 518 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:20:51 ]
- >>517
std::distance
- 519 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:21:19 ]
- i - v.begin();
- 520 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 23:55:08 ]
- できました、ありがとうございます。
- 521 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 01:34:09 ]
- mag.autumn.org/Content.modf?id=20050506145337
ここ読むとC++よりもJAVAのほうがリソース管理に関して 優れているように思えるんだけど
- 522 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 01:42:17 ]
- だから何だよ
- 523 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 01:46:30 ]
- 優れているというかパフォーマンスを犠牲にしてリソース管理の安全性を高めたという方が近いかな。
そんな事いったらC++も保守性を犠牲にパフォーマンスを高める余地のある言語と言えるけど。 ただJavaの場合は“余地”どころかプログラマに選択をさせない完全な“切捨て”であるけどね。 だからプログラマが手段を選択できる余地の残っているC++の方が優れている。終了。
- 524 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 01:49:22 ]
- 手段を選択する必要のある場面においては、だけどな。
- 525 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 02:15:33 ]
- javaってfinallyの書き方間違えると死ねるしなあ
という話が >>495 にあるよ jdbcでoracle使ったことがある人は知ってると思うけど、 closeし損ねるとリークしてそのうち動かなくなるんだよね これを注意深く追ってると、「なんだかCでやってんのと変わらんなあ」 と思うぜ、実際。
- 526 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 02:27:32 ]
- だってメモリしか管理してくれないもの
- 527 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 07:08:37 ]
- >521
「RAIIが発明されるまでのC++」については、Javaのほうが リソース管理が優れていた、と云わざるを得ない、けどねぇ。
- 528 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 07:25:04 ]
- 他のリソースも管理してくれればいいのになあ。
ファイルハンドルが足りない時には ファイルクラスのインスタンスへのガベコレを 優先的にやってくれるとか。
- 529 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 10:47:50 ]
- >>527
> 「RAIIが発明されるまでのC++」 って具体的に何を指すの? RAII ってプログラミング ポリシーだと思うんだけど。「発明」されたっていまいちピンと来ない。
- 530 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 11:04:02 ]
- RAII が浸透してない C++ って感じのことを言いたいんじゃないか?
未だに RAII を取り入れない C++ があるとは信じられないのかもしれないが。
- 531 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 12:21:55 ]
- >>528
デストラクタを活用するべき
- 532 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 12:25:18 ]
- javaの話だろ
- 533 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 12:50:09 ]
- >>527
C with class の話ですか? C++は初期のARMがかかれた頃から散々言われていますけど。
- 534 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:05:47 ]
- >>529
強いて言えば、テンプレートがなかった頃には、 auto_ptrや(削除子付きの)boost::shared_ptrのような 汎用的なものは作りづらかったと思う。 それでも、fstreamみたいに個別に作っていく手があったはずだけど。
- 535 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 21:38:58 ]
- なんでそこで糞設計のstreamを持ち出すかなー
- 536 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 22:33:50 ]
- とりあえずデストラクタでcloseしてくれるからいいだろ。
今は糞設計かどうかなんて関係ない。
- 537 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 23:13:37 ]
- 自分のクラスにiteratorをアタッチ
するにはどうすればよいの?
- 538 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:45:20 ]
- >>537
クラスって新しい container 作ってんの? 普通に vector とかにオブジェクト入れて iterator 使うとかいう話 じゃないんだよね?
- 539 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 02:36:34 ]
- >>537 アタッチの意味がわからん。
- 540 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 07:56:33 ]
- Rubyみたいにアタッチしたいんだけど
なんでできないの?
- 541 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 08:59:06 ]
- だからアタッチって何だよ
- 542 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 09:20:53 ]
- ウラララララーって叫ぶやつじゃね?
- 543 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 16:55:57 ]
- それは、アパッチ
- 544 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 16:56:46 ]
- >>543
叫ぶやつはジェロニモだ
- 545 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 17:24:27 ]
- だってオラは人間だから
- 546 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 21:52:48 ]
- テンプレートクラスとクラステンプレートの違いを教えてエロい人!!
- 547 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 21:58:18 ]
- クラステンプレートを使って作られたクラスがテンプレートクラス
- 548 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:09:23 ]
- 何か詳しく書かれたサイトがあれば貼っていただきたいです。
- 549 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:14:51 ]
- お前誰だよ
- 550 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:20:43 ]
- つーか言葉にこだわってどーすんの
テンプレート勉強すりゃわかることだろうに
- 551 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:32:59 ]
- ヒントがあれば十分だろ。
自分で考えて解決する楽しさを知らないやつは(ry
- 552 名前:551 mailto:sage [2008/04/15(火) 22:33:53 ]
- >>551
誤爆しました。ごめんなさい、
- 553 名前:デフォルトの名無しさん [2008/04/15(火) 22:36:31 ]
- 輪講で必要なんです。
わかりにくかったので聞いてみました。
- 554 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 22:43:22 ]
- >>552
流れとしてはわりと的を射ている気がするw
- 555 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:01:58 ]
- テンプレートクラスはただの間違いだと思う
クラステンプレートが正しい。だってあれはテンプレートだから クラステンプレートをテンプレートクラスというのは 鉄パイプをパイプ鉄というようなもの
- 556 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:16:18 ]
- >>555さん
わかりやすい表現ありがとうございます。 教科書には クラステンプレートはテンプレートクラスから導出できる。 クラステンプレートは非テンプレートクラスから導出できる。 テンプレートクラスはクラステンプレートから導出できる。 非テンプレートクラスはクラステンプレートから導出できる。 と書いてあるのですが・・・
- 557 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:24:08 ]
- まずは本の名前を晒してみれ。
- 558 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:25:34 ]
- なんの哲学書だよw
- 559 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:26:56 ]
- こんにゃくゼリーに使うこんにゃくをゼリーこんにゃくって呼んでる類だろ。
- 560 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 23:26:59 ]
- ぐぐってでてきた。これは比較的納得できるかんじ
>www.ed.kuki.tus.ac.jp/cgi-bin/vahwebx.exe/Ja_JP/cforaix/Extract/0/glossary/czgt.htm クラス・テンプレート(class template) 暗黙的にまたは明示的にインスタンスを生成されるか、または特殊化されると、クラス型を作成するテンプレート。 テンプレート・クラス(template class) クラス・テンプレート(class template)によって生成されるクラス・インスタンス。
- 561 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:01:31 ]
- ソースで出てくる順がtemplate classだから間違えやすいな
- 562 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:03:46 ]
- typename
- 563 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 00:49:24 ]
- STLに
boost::any相当のものってないよね? 困った困った
- 564 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 01:41:23 ]
- 普通にboost::any使ったら?
- 565 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 01:51:09 ]
- vectorにデータを追加した時にメモリ確保に失敗した場合、検出する方法ってありませんか?
newでいうbad_allocの例外をキャッチするような感じ。
- 566 名前:565 mailto:sage [2008/04/16(水) 02:26:50 ]
- 解決しました。orz
bad_alloc使えた...
- 567 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 03:21:12 ]
- >>563
無いなら作れば? 大したもんでもないっしょ。
- 568 名前:デフォルトの名無しさん [2008/04/16(水) 13:24:51 ]
- あるアクションゲームをCとC++両方で作りました。
プレイする上で、まったく同じ動作をするものです。 Cでは主に構造体で、C++ではVectorで管理していました。 C++で作ったほうがプログラム実行時のメモリ消費量が多いのですが、 そんなもんでしょうか?
- 569 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 13:41:18 ]
- そんなもん
完全に同一ソースでもバイナリレベルでは例外処理が入ったり、実行時型判定が入ったりする
- 570 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 13:42:03 ]
- >>568
Vector は std::vector のこと? そうなると構造体と std::vector とでは役割が違うので、置き換えれるわけ無いんだけど。 ・・・もしかして struct S { int a, b, c } s; s.a = s.b + s.c; これを std::vector<int> s(3); s[0] = s[1] + s[2]; にしたってこと? まぁプログラムが違うんならメモリ消費量が違うのはあたりまえなんで、 あんまり気にしてもしょうがないと思う。同じになるはずっていう根拠でもなければ。
- 571 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 13:49:57 ]
- 配列のことを構造体といい間違えたのではないか。
- 572 名前:568 mailto:sage [2008/04/16(水) 14:33:50 ]
- 配列ですね、すみません。
消費メモリが数十MByte単位で変わってくると、さすがに気になったので質問しました。 C++の設計に改善点がまだあるような気もします。
- 573 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 16:51:23 ]
- 数十MBって、それってC/C++以前にプログラムの構造がおかしいだろ常考
- 574 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 17:15:02 ]
- > C++で作ったほうがプログラム実行時のメモリ消費量が多いのですが、
これだけ読んだら、普通はもうちょっとささやかな差を想像するよね。 その想像をベースにして皆が一般的なことを回答したところで、いきなり > 消費メモリが数十MByte単位で変わってくると、 っていう、量に関する新情報を出すっていうのは、広義の「情報小出し質問」だと思うよ。 自分だけが知っている状況を他人に説明するときは、発信する前に 「相手はこの説明に触れて、真っ先にどんなものを想像するだろうか?」 っていう思考を巡らせるべき。 で回答だけど、「構造体とvector」以外に両者のソースがどう違ってるかがわからないと、何とも言えない。 質問文に登場した要素だけで考えるなら、STLの使い方をどこかで根本的に間違えているんじゃないか って気がするけども。
- 575 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 18:22:21 ]
- 前方反復子のクラスはデフォルトコンストラクタが必要ですけど、
デフォルトコンストラクタで生成した反復子やそれを代入した 反復子に対する操作の結果は定義されているでしょうか?
- 576 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 20:42:11 ]
- ttp://www.asahi-net.or.jp/~yf8k-kbys/newcpp18.html
このサイトを見ながらC++の基礎を勉強しているのですが、このページのデストラクタのサンプルプログラムを VC++2008EEに打ち込んでも「消滅しました」のメッセージが出ないのですが、 これはVC++側の処理の問題でしょうか?
- 577 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 20:44:49 ]
- 詳しく読んでないからわからんが、派生クラスで基底クラスのデストラクタが呼び出されないとかなら
virtualが抜けてるからとかそんなんじゃね?
- 578 名前:デフォルトの名無しさん [2008/04/16(水) 20:51:17 ]
- まだ始めたばかりの初心者です。。
あまりを出さなくてよい、簡単な割り勘のようなのを作っているのですが、 - #include<stdio.h> int main(void) { int a,b,c; /*計算の入力 金額*/ printf("金額を入力してください"); scanf("d%",&a); /*人数*/ printf("人数を入力してください"); scanf("%d",&b); /*計算と結果の表示*/ c=a/b; printf("%d/%d=\t%d\n",a,b,c); return 0; } - これを実行させると、金額を入力してEnterキーを押した時点で変な数字が出てきてしまいます… なにか足りない気がしますが、何処がおかしいのでしょうか…? ご教授よろしくお願いします。
- 579 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 20:51:27 ]
- どのコードを書いて、どういうメッセージは出たのか、
情報が足りなさ過ぎる。
- 580 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 20:52:05 ]
- >>579 は >>576 へ
- 581 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 20:53:09 ]
- >>578
d%
- 582 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 20:53:29 ]
- scanf("d%",&a);
打ち間違い?
- 583 名前:576 mailto:sage [2008/04/16(水) 21:15:39 ]
- >>580
スミマセン。。。 //dest_sample.cppのコードをまるっきりそのまま書いて実行したところ、 実行結果例の下2行の「消滅しました」のつく文だけ表示されません。 問題なくコンパイルできますし、上4行の「生成されました」と「呼び出されました」 の付く文は正常に表示されます。 試しに、筆者が書いたものをコピー&ペーストして実行してみましたが、 やはり「消滅しました」のつく、下2行の文が表示されません。 ~Nanika(){ cout << "Nanikaのインスタンス" << datum << "が消滅しました。" << endl; が完全に無視されているような状態です。 宜しくお願いします。
- 584 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:29:48 ]
- コンパイラは何?
- 585 名前:デフォルトの名無しさん [2008/04/16(水) 21:39:59 ]
- namespaceにはまっています。
あるソースファイルのnamespaceで囲まれた関数を別のソースファイルでexternしたいのですが、 どうすればいいかわかりません。コンパイルエラーになります。 名前空間名を付けて呼び出してもだめで・・・。 aaa.cpp----------------------------------- #include <stdio.h> namespace hoge { void Func() { printf("HELLO\n"); return 0; } } bbb.cpp------------------------------------ extern void hoge::Func(); ←コンパイルエラー void main() { hoge::Func() ← コンパイルエラー Func(); ← コンパイルエラー return; } ----------------------------------------- bbb.cppからaaa.cppの名前空間が見えてないっぽいんですがこんな場合どうしたらいいのかわかりません。 ネットでも検索したのですが、複数ファイルに分ける事ができる記述はあっても やり方が乗ってないので困ってます。どなたかお願いします。
- 586 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:41:05 ]
- namespace hoge{ extereeeen void Func(); }
- 587 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:41:27 ]
- namespace hoge {
void Func(); } int main() { hoge::Func(); }
- 588 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 21:45:14 ]
- ああ、コンパイラはVC++2008EEか。
- 589 名前:デフォルトの名無しさん [2008/04/16(水) 22:00:46 ]
- >>586
bbb.cppでexternする場合はコレもnamespaceで囲んであげないといけないと言うことでしょうか!? やってみたのですがVC++6.0なせいか hogeがシンタックスエラーを起こしてます。 VC++対応していない?明日会社でやってみます。 >>587 586さんと似てるのですが、externしなくてもよいと言うことでしょうか? これまたVC++6.0ではhogeがシンタックエラーを起こしています。 明日やってみます。
- 590 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:56:43 ]
- VC6 でも問題はないはずなんだが・・・
- 591 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:57:30 ]
- 関数プロトタイプはデフォルトで extern ってのは常識だろ?
- 592 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 22:59:45 ]
- >>583
VC++2008でやってみたけど、ちゃんと表示されたよ。
- 593 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 23:09:05 ]
- ひょっとしてNanikaのインスタンスを
グローバルで生成したというオチではないだろうなw
- 594 名前:デフォルトの名無しさん mailto:sage [2008/04/16(水) 23:12:02 ]
- 外部ライブラリのデストラクタの方が後に走るから
グローバル変数にしても cout に問題はないと思う。 というか、グローバルにしても表示された。
- 595 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 01:48:09 ]
- #include <boost/regex.hpp>
template<typename TChar> class TCHoge { public: typedef boost::basic_regex<TChar> regex_type; static int Func(regex_type reg){ return 0; }//ok //static int Func(regex_type::flag_type flag){ return 0; } // NG1 //static int Func(boost::basic_regex<TChar>::flag_type flag){ return 0; } // NG2 static int Func2(boost::basic_regex<char>::flag_type flag){ return 0; } //OK }; Window2000 Visual C++ 2005 express edition boost 1.34.1 NG1 のように記述したいのですが,以下のようなエラーとなってしまいます. warning C4346: 'boost::basic_regex<charT>::flag_type' : 依存名は型ではありません。 error C2061: 構文エラー : 識別子 'flag_type' VC6.0 では問題なかったのですが,どのように記述すれば良いでしょうか?
- 596 名前:デフォルトの名無しさん mailto:sage [2008/04/17(木) 02:07:22 ]
- ×boost::basic_regex<TChar>::flag_type
○typename boost::basic_regex<TChar>::flag_type だっけ?あまり自信ないや
|

|