1 名前:デフォルトの名無しさん [2011/09/15(木) 00:17:43.25 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ 01 pc11.2ch.net/test/read.cgi/tech/1167476845/ 02 pc11.2ch.net/test/read.cgi/tech/1178503366/ 03 pc11.2ch.net/test/read.cgi/tech/1187521676/ 04 pc11.2ch.net/test/read.cgi/tech/1221633708/ 05 pc11.2ch.net/test/read.cgi/tech/1230516307/ 06 pc11.2ch.net/test/read.cgi/tech/1231564903/ 07 pc11.2ch.net/test/read.cgi/tech/1232983248/ 08 pc12.2ch.net/test/read.cgi/tech/1235921779/ 09 pc12.2ch.net/test/read.cgi/tech/1240022781/ 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ 11 pc12.2ch.net/test/read.cgi/tech/1245059383/ 12 pc12.2ch.net/test/read.cgi/tech/1248010352/ 13 pc12.2ch.net/test/read.cgi/tech/1260842197/ 14 pc12.2ch.net/test/read.cgi/tech/1269273471/ 15 pc12.2ch.net/test/read.cgi/tech/1273368706/ 16 hibari.2ch.net/test/read.cgi/tech/1279285647/ 17 hibari.2ch.net/test/read.cgi/tech/1285115590/ 18 hibari.2ch.net/test/read.cgi/tech/1291571263/ 19 hibari.2ch.net/test/read.cgi/tech/1308106024/
220 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 03:53:49.99 ] ここから、ここの処理まではメモリ消費量何Mだったとか書き出したいのです
221 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 04:09:30.08 ] >>219 /* main.h */ struct shain{ char *name; //←ポインタしか作られてない正確には //char nameか、配列やmallocで確保 int num; //未使用 } /* main.c */ myfunc(); /* myfunc.c */ void myfunc(void){ struct shain list[5]; for (i=0 ; i<5; i++){ //int iで宣言 scanf("%s", &list[i].name); //危険、一文字ならgetchar if (list[i].name == "a"){ //""だとaのポインタになっとる。'a'。 //または比較関数使え printf("aが入力されました\n"); break; } } }
222 名前:219 mailto:sage [2011/11/05(土) 04:34:55.93 ] >>221 動いた! ありがとうございます!!
223 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 07:36:28.71 ] visual stadio 2003で作ったプログラムをvisual c++ 2010 expressで使うと deque interator not dereferencableて出ます。 対処法を教えていただきたいです。
224 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 08:38:37.67 ] >>220 アロケータ−作れば?
225 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 17:55:16.70 ] >>223 コピペくらい手順をちゃんと覚えなさいよ。 んで、ここに貼らずに翻訳サイトに貼れば答えが出てくるよ。
226 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 17:56:00.64 ] >>220 自分で書いた処理なら、自分で把握できているでしょ。それを書き出せばいいじゃん。
227 名前:デフォルトの名無しさん mailto:sage [2011/11/05(土) 23:33:10.37 ] >>220 他人が作ったプロセスのメモリ消費量を知りたいのか、自分のコードの中で、自分の消費した量を知りたいのかで違う。 また、自分の消費した量でも、スタックだとかstaticだとかnewやallocだとかのどの量を知りたいのかで違う。 さらに、スレッド別に知りたいかどうかでも違う。
228 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 06:19:15.51 ] クラスに追加で一時的に変数持たせたい、要するに クラスに計算結果を入れておく変数を一時的に作りたいんだけど、どうすればできますか?
229 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 09:45:43.45 ] そのクラスの定義を変更できないなら直接は無理。そのクラスを継承や包含で利用する別のクラスを作る。
230 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 10:51:17.37 ] >>229 便乗ですみません。継承・委譲はわかるのですが、包含はよくわかりません。java や c++ だとどんな感じのコードになるのでしょうか?
231 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 10:57:15.41 ] >>228 std::map<Hoge const *, TempValueType>
232 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 12:29:13.37 ] >>230 C++で包含といったらある型が他の型(のインスタンス)を内部にもつ(所有する)、くらいのおおまかな概念でしかないよ struct X { // X型はint型とY型を包含する int x; Y y; }; int x[10]; // intの配列型はint型を包含する (とは概念的にはありえるけど普通は言わない)
233 名前:デフォルトの名無しさん mailto:sage [2011/11/06(日) 14:18:37.77 ] >>244 >>226-227 自分で組んでるプログラムのヒープやスタック全てを合わせたメモリ消費量を知りたい。 そういう関数でもあるかと思ったけど無いのね アロケーター調べてみたけど作るのも面倒そうだし、全部数えて書き出すのは規模的に ありえないしで、もう諦めることにする。ありがとう
234 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 18:14:50.65 ] タスクマネージャで仕様メモリなんか表示できてるんだからあるんじゃねぇの
235 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 18:36:25.60 ] アロケータごときで面倒とか言ってたら何も出来ないだろ
236 名前:デフォルトの名無しさん [2011/11/07(月) 22:20:44.39 ] namespace内のoperatorってどうやって呼べばいいのでしょうか? 例えばboost::assignの += みたいなやつ。 using namespace boost::assign; std::vector<double> vec; vec += "1.0", "2.0"; でusingを使わずにboostのoperator+=を呼ぶ方法はあるのでしょうか?
237 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 23:08:15.53 ] boost::assing::operator , (boost::assign::operator += (vec, "1.0"), "2.0") ; 使ったこと無いからわからんけどたぶんこう
238 名前:デフォルトの名無しさん mailto:sage [2011/11/07(月) 23:49:54.14 ] operator+=とは違うし試してないがたぶんこういう感じのどれかでいける boost::assign::push_back(vec)("1.0")("2.0"); boost::assign::push_back(vec), "1.0", "2.0"; 追加でなくてよいなら vec = boost::assign::list_of("1.0")("2.0"); vec = boost::assign::list_of("1.0"), "2.0";
239 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 00:02:03.97 ] いつ見てもおぞましいインターフェースだな
240 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 00:19:13.46 ] vector<double>に文字列はどの方法でも入らんな
241 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 04:17:41.94 ] >>239 いやまったく。 boostは確かに便利な局面もあるが、そんな無理しなくてもと思うことの方が多い。
242 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 19:15:01.84 ] アドレスを文字列に変換する場合、 void* pVoid = ... ostringstream oss; oss << pVoid; こうするとoss.str()には、例えば「000012AB」という文字列が入るのですが、 16進数・0埋め・桁数など指定していなくても、環境問わずそれらが指定された形になる事は保障されているのでしょうか? また、64bitOSでは16桁になるのでしょうか?
243 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 20:15:37.91 ] そんな保証はない
244 名前:デフォルトの名無しさん mailto:sage [2011/11/08(火) 20:16:12.25 ] >>242 「指定していないのに指定された形になることが保証されているのか」って、 自分でなにを言ってるのか良く考えてからどうぞ。
245 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 17:21:00.49 ] 継承って何ですか バカにも分かるように教えて下さい
246 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 18:56:06.66 ] ロマサガ2をやれば分かると思うよ
247 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 19:50:13.26 ] >>245 既存のクラスの一部/全ての機能を利用する新しいクラスを作る手法の一つ
248 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 20:00:36.18 ] >>247 わかりづらいです・・・ ドラゴンボールで例えてみてください・・・
249 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 20:09:31.37 ] >>248 ゴクウを亀仙人のところで修行させてかめはめ波を習得すること。
250 名前:デフォルトの名無しさん mailto:sage [2011/11/12(土) 20:36:50.37 ] >>248 セルは孫悟空、ベジータ、ピッコロ、フリーザ達の強い細胞を継承して生まれた
251 名前:デフォルトの名無しさん mailto:sage [2011/11/13(日) 01:40:39.84 ] 構造体の実態をexternしたいのですが何をやっても値がnullになってしまいます・・・。 値を代入したソース上で開けばちゃんと値が入っているのですが、他のソースからだと見れないのですが、どうすればいいでしょうか・・・。
252 名前:デフォルトの名無しさん mailto:sage [2011/11/13(日) 02:02:56.46 ] >>251 問題のコードをcodepadかideoneに貼れ。
253 名前:デフォルトの名無しさん mailto:sage [2011/11/13(日) 21:01:12.73 ] 下記ようなのクラスのインスタンスをsetにぶち込むとリンカエラーが来るのですが、 テンプレートでの、friendな演算子の定義の仕方に問題があるのでしょうか? template<class T> class Test{ public: T data; friend bool operator <(const Test<T> &a, const Test<T> &b); }; template<class T> bool operator <(const Test<T> &a, const Test<T> &b){ return a.data<b.data; }
254 名前:デフォルトの名無しさん mailto:sage [2011/11/13(日) 21:20:32.38 ] 宣言と定義を分けるな
255 名前:デフォルトの名無しさん mailto:sage [2011/11/13(日) 21:35:13.87 ] >>254 ありがとうございました。
256 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 10:20:27.56 ] こういう事か template <class T> class Test; template <class T> bool operator<(const Test<T>& a, const Test<T>& b) { return a.data < b.data; } template <class T> class Test { T data; public: Test(T val) : data(val) {} friend bool operator< <>(const Test<T>&a, const Test<T>& b); void print() const { std::cout << data << ' '; } }; int main(void) { typedef Test<double> TD; std::set<TD> td; td.insert(TD(1.0)); td.insert(TD(0.5)); std::for_each(std::begin(td), std::end(td), [&](TD t) { t.print();} ); std::cout << std::endl; }
257 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 10:24:09.66 ] templateって特殊化した定義ならソースに書いて良いの?
258 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 12:25:43.81 ] >>256 それだと Test<int> t(100); t < 123; //できない 50 < t; //できない t < Test<int>(200); //これならできる とかで不便なときがあるぞ
259 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 13:01:25.88 ] >>258 当たり前じゃん operator<が定義されてないんだから Testってクラスだよ? 俺は>>253 を試して何とか動くようにしてみただけ
260 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 14:20:45.83 ] >>259 >>253 ,254 template <class T> class Test { T data; public: Test(T val) : data(val) {} friend bool operator<(const Test & a, const Test & b) { return a.data < b.data; } }; int main(void) { using namespace std; Test<int> t(100), t2(1000); cout << (t < t2) << endl; cout << (t < 123) << endl; cout << (50 < t) << endl; }
261 名前:デフォルトの名無しさん mailto:sage [2011/11/14(月) 15:22:36.11 ] >>260 どうなってんのこれ? 変換演算子もないのにどうして動くの?
262 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 12:06:13.76 ] templateを使いすぎると実行ファイルが大きくなるから気をつけろって言われたんですけど 実行ファイルが大きくなってなにか困ることがあるんですか?
263 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 12:58:34.87 ] メモリの使用量が増えるとか起動が遅くなるとか
264 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 13:19:24.28 ] 要領不足でインストールできなくなる
265 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 14:09:10.89 ] 大きくなるか??
266 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 14:29:32.76 ] >>260 friendで演算子を定義すると、object.operator@(引数)という形では評価されないので 暗黙のコピーコンストラクタにより一時オブジェクトが生成される もちろんクラス内部にdeep copyが必要な要素が混ざっていると危険なので 自前でコピーコンストラクタを定義する
267 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 15:19:31.90 ] >>265 インライン展開されちゃうよ、な話ではなかろうか。
268 名前:デフォルトの名無しさん mailto:sage [2011/11/21(月) 15:28:44.33 ] 別にtemplateじゃなくてもインライン展開されるけどね。
269 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 04:20:58.65 ] 今時PC上で動かすならインライン展開できるだけするべきだろ
270 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 04:33:41.80 ] インライン展開はできる限る使わない方が速い。 メモリ使用量が増大するし、同一関数が別々と認識されCPUキャッシュの効果が薄れる。
271 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 05:18:44.06 ] というか、インライン展開で速度速くなるものなの? インライン展開した所で、たいして速くなりそうもない気がする。 アルゴリズムとか制御構造見直した方がよほど速くなる可能性があるだろ。たぶん。
272 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 08:40:21.30 ] ためしにVC++2008でインクリメントするだけの関数で [256 * 256][256]のint配列の全要素をインクリメントしたら inlineじゃないほうが倍ぐらい早かった こういう小さい関数ってinlineの得意な分野だと思ってたけどそうでもなかったようだ
273 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 09:32:48.11 ] >>272 最適化で消えてる可能性は?
274 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 09:38:55.85 ] >>272 何通りか試したら、同等〜20%程inlineのほうが速いよ 最適化防止のコードを入れてないんじゃないの?
275 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 10:04:11.99 ] パフォーマンス測定で最適化防止っておかしくね?
276 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 10:09:15.33 ] インライン展開の効用は、コードをインラインに展開して関数呼び出しを減らすことよりも 関数内部と外部に跨る最適化が施されることにあるよ。 例えば、C++でクラスのメンバのアクセサを作ったとすると、メンバに直接アクセスするのと同じコードになり得る。 ↓のfoo::func()も、最適化で定数と同じになれる。 -- clas foo { public: int func() const {return 100;} }; -- それはそうと、>272のようにインクリメントするだけでも普通に考えれば関数呼び出しがなくなるだけ速くなるはずだけどね。
277 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 18:17:22.55 ] >>270 巨大な関数ならともかく、小さな関数はインライン展開した方が高速。 巨大な関数を展開するコンパイラはないと思うが、されたらキャッシュに響くので低速になる場合がある。 >>271 意味のない比較 >>272 ソースがないので何とも言えないが、君のテスト方法が間違っている可能性大。 その配列のサイズを見る限り、インラインじゃないところにボトルネックがありそう。
278 名前:デフォルトの名無しさん [2011/11/26(土) 19:47:26.08 ] ちょっとageますよ 少し前に糞スレをage荒らししてたアホがいたもんで大事なスレが全部 下の方に行ってしまってる
279 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 19:53:06.42 ] 昔のCPUはジャンプ命令のコストがでかかったとか、パイプライン処理が初期化されるとかで有効だった。 (引数や復帰アドレス保存のコストもかかるし) 10年前にスパコンのアセンブラソース読んだときは分岐先をキャッシュに読み込む命令があって 多少速度低下を軽減出来るようになってた。
280 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 20:02:37.24 ] 今じゃ遅延スロットも完全に消えたしな 投機実行とリターンバッファで十分
281 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 23:14:18.16 ] でもAtomとか流行のスマフォに乗ってるARMにはそこまでの回路はない コンパイラの最適化を働かせるために無意味じゃない
282 名前:デフォルトの名無しさん mailto:sage [2011/11/26(土) 23:18:06.91 ] Atomがインオーダー実行と聞いた時は驚いたな 命令セットは新しいのに
283 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 22:20:26.93 ] エクスプローラっぽいものを作ってるんですが、ファイルの名称、日付、サイズ以外の状態などの取得で詰まってます。 特に特殊フォルダで状態をデフォルトで表示したい場合に困っています。 シェルを使うのかと思ったんですが、わからず。 アドバイスお願いします。
284 名前:デフォルトの名無しさん mailto:sage [2011/11/29(火) 22:27:00.77 ] それはC言語でなくOS機能の問題だ。
285 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 08:57:39.38 ] >>284 環境はXPでBCB使ってます。 特殊フォルダ内の名前なんかは取得できてるんですが・・・ C++でエクスプローラの「状態」項目を取得するのは無理ですか?
286 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 09:04:19.55 ] >>285 WinAPIスレで聞いてきたら?
287 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 13:16:39.61 ] >>283 ShellExtensionでぐぐれ
288 名前:285 mailto:sage [2011/11/30(水) 22:15:24.10 ] >>286 そうですね。移動します。 ありがとうございました。 >>287 ggrましたが、正直理解し切れませんでした。>ShellExtension まだシェル使うにはレベルが足りていないようなので、今回はあきらめます。 ありがとうございました。
289 名前:デフォルトの名無しさん [2011/11/30(水) 22:30:18.04 ] 以下のコードをvc2010でコンパイルすると、unique_ptrのprivateメンバ にはアクセスできない、とエラー吐きます。 std::move付ければうまいことやってくれないかと試しましたがやはり駄目 です。どうすればhogesにpush_backできるでしょうか? struct Hoge { std::unique_ptr<int> v; }; int main(int argc, char** argv){ Hoge hoge; std::vector<Hoge> hoges; hoges.push_back(hoge); return 0; }
290 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 23:01:30.21 ] unique_ptrは所有権の移譲をmoveコンストラクタで行なってしまうから 一時オブジェクトが解体出来ないって怒ってるんじゃないの
291 名前:289 mailto:sage [2011/11/30(水) 23:15:30.73 ] >>290 解体できない、という意味がよくわからなかったのですが、 以下のような理解であってます? unique_ptr<Hoge> hoge(new Hoge()); vector<unique_ptr<Hoge>> hoges; hoges.push_back(hoge); これは289と同じコンパイルエラーを吐く。 vector<unique_ptr<Hoge>> hoges; hoges.push_back(unique_ptr<Hoge>(new Hoge())); これはOK。 ってことで、hogeが確実に一時オブジェクトだと保証できれば良し。 289で書いたようなやり方だと、push_backのあとでまたhogeが使われる 可能性があるから駄目、と。
292 名前:デフォルトの名無しさん mailto:sage [2011/11/30(水) 23:18:50.92 ] unique_ptrはそもそもコンテナに入れられないでしょ auto_ptrと同じような働きでmoveセマンティクスにしただけだから shared_ptrにしないとまずい
293 名前:デフォルトの名無しさん mailto:289 [2011/11/30(水) 23:50:02.24 ] >>292 unique_ptrがコンテナに入れられないとか嘘乙、と書く前に調べたら bit.ly/vAdcOU で入れられるけど中間挿入したらアウトって書いてあってなるほど。 挿入は最後尾のみにしかしない、ということが確実であれば利用は 可能ですよね? 規格書までは読んでないので間違ってたら指摘お願いします。
294 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 00:25:42.85 ] > 入れられるけど中間挿入したらアウトって書いてあってなるほど。 どこからそんな話が? 11のコンテナはmoveしかできない型を入れても何も問題はない。ただしそのときはコピーを必要とする操作は当然出来ない。 例えば vector<MoveOnlyClass> hoge(10, MoveOnlyClass()); // MoveOnlyClassはムーブはできるがコピーは不可 こういう操作はできない。(これは第2引数のコピーで要素10個を初期化するコンストラクタでmove版はない)
295 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 00:30:27.05 ] unique_ptrを突っ込んでsortとか掛けたらどうなるん? あとsetとか入れた時の挙動も気になる
296 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 00:32:34.19 ] 取り敢えずgccでコンパイル掛けてみたら山ほどエラー吐いてワロタ もちろん -std=c++0x は付けた
297 名前:289 mailto:sage [2011/12/01(木) 01:02:04.85 ] >>294 bit.ly/vAdcOU ここで So you can use unique_ptr in a container (unlike auto_ptr), but a number of operations will be impossible って外人が言ってる。理由は294が書いてる通りコピーを伴うから。 で、hogesにpush_backは確実に一時オブジェクトであることが 保証できない限り駄目、って理解であってます? >>295 上で書いたURLでsortはmoveで出来るからOKって同じ外人が言ってる。 ほんとに外人かどうかは知らんけども。
298 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 01:09:02.84 ] そういう使用制限が掛かってまでもunique_ptrを使いたい理由は何だろう
299 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 01:12:56.51 ] 自分が何を間違えているのか正しく理解しておかないと、 同じようにまたやらかすと思うんよ。
300 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 01:47:37.94 ] >>289 > std::move付ければうまいことやってくれないかと試しましたがやはり駄目 これがわからん。VC++では知らないがmoveで動くはずだぞ。どうやった?
301 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 11:15:02.08 ] Hogeのmoveコンストラクタを書けばいいだけだろ
302 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 12:04:26.89 ] string::c_strは規格上例外を投げうる、でおK?
303 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 13:01:48.60 ] おk
304 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 18:27:56.86 ] C++11では投げなくなった
305 名前:289 mailto:sage [2011/12/01(木) 21:03:26.81 ] >>300 試したコードは以下。 hoges.push_back(move(hoge)); vcはもちろんgcc4.5.2もダメなんだなこれが。 >>301 sturct Hoge { unique_ptr<int> v; Hoge(){} Hoge(Hoge&& h){ v = move(h.v); } }; int main(int argc, char** argv){ Hoge hoge; vector<Hoge> hoges; hoges.push_back(move(hoge)); } moveコンストラクタってこういうことだよね? 期待して試したけどvcもgccもやっぱりエラー吐いたでござる。 規格上許されないのか、それとも単にコンパイラが未対応なだけ なのかだけでも誰か分かりませんかね?
306 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 21:13:27.82 ] 馬鹿には無理
307 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 21:33:12.97 ] >>305 代入演算子も要求されるみたいだね。なくてもpush_backは実装できると思うんだけど ideone.com/o7KRx
308 名前:sage mailto:289 [2011/12/01(木) 21:42:22.99 ] >>307 ありがとうございます。 代入演算子は全く頭になかったです。 自分の間違いが分かり安心しました。 どうもありがとうございました。
309 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 21:49:31.78 ] >>305 > vcはもちろんgcc4.5.2もダメなんだなこれが。 これ関係だな。 ttp://gcc.gnu.org/gcc-4.6/changes.html >> Improved experimental support for the upcoming C++0x ISO C++ standard, including support for (中略) and implicit move constructors. つまりgcc4.5までは暗黙のmove constructorは生成されない。
310 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 22:02:30.59 ] >>307 おおgcc4.6.1で通った Eclipse CDT Indigoが馬鹿過ぎる 早くC++11に対応してくれ 画面が波線ばかりで見にくい
311 名前:デフォルトの名無しさん mailto:sage [2011/12/01(木) 22:27:50.38 ] >>305 ならVC10SP1で通る SP1で修正されたものなのか>>289 の環境がおかしいのかは知らん
312 名前:289 mailto:sagw [2011/12/03(土) 01:22:45.50 ] >>309 4.6.1に上げたら確かに通りました。 ちゃんと最新バージョンチェックしないと駄目ですね。 ソースまでありがとうございます。 >>311 SP1は入れたつもりになっていただけで入っていなかったようです。 改めてSP1入れてからやったら305のコードはすんなり通ったので、 SP1で修正されたっぽいです。ありがとうございました。
313 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 21:08:24.91 ] クラスのメンバ関数の定義って 毎回「クラス名::関数名」ってかかなあかんの?
314 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 21:15:46.80 ] class hoge { void f() { } }; って書けばいいよ
315 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 21:52:42.54 ] 定義と実装が別の時は?
316 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 22:58:06.85 ] かかなあかん
317 名前:デフォルトの名無しさん mailto:sage [2011/12/03(土) 23:01:02.27 ] めんどくさいね
318 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:00:59.86 ] 後からクラス名を変えたいってなると 結構大変っすね
319 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 00:06:26.19 ] // hpp namespace foo { class hoge { void f(void); }; } // cpp typedef foo::hoge FH; void FH::f(void) { /* ry */ } ほんのすこしだけどらくできる
320 名前:デフォルトの名無しさん mailto:sage [2011/12/04(日) 08:11:24.81 ] せんせー 関数の別名定義ってできましか?