1 名前:デフォルトの名無しさん [2015/08/31(月) 18:19:04.13 ID:NE3NvROE.net] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part118 peace.2ch.net/test/read.cgi/tech/1435970316/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/tech/1439849418/ 次期規格C++1zはこちら C++14/C++1z 20 peace.2ch.net/test/read.cgi/tech/1410382924/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/
75 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 21:52:05.05 ID:m/gpmXab.net] なんでもいいが、俺なら template <class Type> class A { private: Type _a; public: A() : _a() {} }; と書く Typeのコンストラクタを呼ぶというより、_aをデフォルトコンストラクタで初期化しといたやでという意味で書いてるから。 >>72 の書き方だとコピーコンストラクタを呼ぶことになるのでは?
76 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 22:18:06.66 ID:HOyUHIr6.net] >>70 どうしてそう息を吸って吐くようにウソが出てくるんだ?
77 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 22:47:41.96 ID:1DlJs2CJ.net] >>73 コンストラクタを呼んじゃいけないという おまえの脳内前提で質問されても
78 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:14:30.27 ID:ygSRnlxE.net] >>74 具体的にどうぞ どう言えば正しいのかまで それが出来ないならお前はクズの中のクズ
79 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:19:25.72 ID:HOyUHIr6.net] >>76 規格の定義と異なる嘘を並べておいて随分と横柄な態度だな 仕様を読み間違えたとかじゃなくて知らないくせにテキトー抜かすのは 止めた方がいいぞ
80 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:20:58.11 ID:ygSRnlxE.net] >>77 で?
81 名前:デフォルトの名無しさん mailto:sage [2015/09/02(水) 23:34:08.05 ID:0+j6o+Dn.net] >>78 レス止めたほうがいいってよ(´・ω・`)
82 名前:デフォルトの名無しさん [2015/09/02(水) 23:42:02.07 ID:urmqHodw.net] 大きく出る割に話がピーマン
83 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 00:34:33.32 ID:iQnjIkb4.net] 具体的には説明できないがお前は
84 名前:間違っている!!! [] [ここ壊れてます]
85 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 00:42:05.98 ID:CZJfW2V/.net] >>73 >>72 だとxvalueでムーブコンストラクタが呼ばれるのでは?……と思ったけど、必ずしもムーブコンストラクタが定義されてるわけではない上に、デストラクタ明示したらムーブセマンティクスも明示しないと削除されるか(推奨であって規格ではない)
86 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 00:45:59.94 ID:SvUuACZU.net] 荒れてるところ恐縮ですが質問してもいいですか? class A { B& b; } class B { A& a; } こんなふうな相互に参照を持つことってできるのですか? ポインタ使う以外に道はないですか?
87 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 00:50:37.56 ID:fKKhgssi.net] 指摘した後に勘違いと気づいたパターン
88 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 01:12:32.53 ID:hDY8eKzg.net] >>83 class c { class b; class a { b &b_ = *new b(); }; class b { a &a_ = *new a(); }; }; これで一応動くけど、どうすんのこれ
89 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 01:16:38.14 ID:fKKhgssi.net] それ相互参照じゃない というかムリ
90 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 02:36:12.57 ID:VxVmaHFN.net] 仮引数をstd::stringへのconst参照にしてconst char*の文字列("...")を渡す動作はC++標準ですか?
91 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 03:11:20.88 ID:CZJfW2V/.net] 標準。 プログラミング言語C++第4版の関数多重定義解決規則をみよ。 適合できない引数を暗黙変換できるならする。 そのさいに引数を1つとるコンストラクタにも入れ子式に適用される。
92 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 03:20:02.37 ID:fKKhgssi.net] 暗黙変換はされるのは1回だけだよ
93 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 04:07:13.75 ID:SvUuACZU.net] >>85 そんな手がありましたか でもdeleteは自分でしなきゃダメですよね >>86 やはり、参照を使うのは無理ですよね 「相互参照」でググってもポインタを使う例ばかりですし ありがとうです
94 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 05:34:06.26 ID:D704J011.net] >>83 ほれ ideone.com/9VuNcJ
95 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 07:13:38.72 ID:1aBHaasU.net] プログラミング言語C++第4版というのはISO/IEC 14882:2014のことですか?
96 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 08:22:08.15 ID:ZCmiwbzV.net] あれやこれや言われてる>>72 の正しい解答教えてくれんと僕眠れない
97 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 09:36:59.35 ID:SPzlieDS.net] 組み込みでc++を使用しているのですが、 C++の標準ライブラリのcoutや、vectorを使用したいと思っています。 そのためには何らかのドライバの役割を果たすソースが必要ではないかと考えています。 どのようにすれば使用できるようになるのでしょうか。
98 名前:デフォルトの名無しさん [2015/09/03(木) 09:56:07.26 ID:gfhZ4+hm.net] 動作するSTLソース
99 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 10:17:18.79 ID:PXwT0hDa.net] ソース一覧 www.bulldog.co.jp/ ブルドックソース株式会社 東京都 www.kagome.co.jp/ カゴメ株式会社 愛知県 www.otafuku.co.jp/ オタフクソース株式会社 広島県 www.ikari-s.co.jp/ イカリソース株式会社 大阪府 www.kikkoman.co.jp/ キッコーマン株式会社 千葉県 www.oliversauce.com/ オリバーソース株式会社 兵庫県 www.sky-net.or.jp/toshi/ カープソース 広島県 www.maruki-su.com/ 株式会社 川上酢店 愛知県 www.kozima.co.jp/ 小島食品製造株式会社 愛知県 www.komi.co.jp/ コーミ株式会社 愛知県 www.sankyohikari.co.jp/ サンキョーヒカリ 愛知県 www.junmaru.co.jp/ 株式会社 純正食品マルシマ 広島県 www.papaya-sauce.co.jp/ パパヤソース本舗 大洋産業株式会社 京都府 www.takahashisauce.com/ 高橋ソース株式会社 埼玉県 www.choko.co.jp/ チョーコー醤油株式会社 長崎県 www.timelyhit.ne.jp/ajiyoko/shop/sauce/sauce1.htm 阪神ソース株式会社 兵庫県 www.kyoto-thinking.co.jp/hirota/ 京風味ソース本舗 蛇ノ目食品廣田徳七商店 京都 www.optic.or.jp/com/fujiisauce/fujiisauce.html 有限会社 藤井ソース工場 岡山県 www2.neweb.ne.jp/wd/hikari/ ヒカリ食品 徳島県 www.hat.hi-ho.ne.jp/aokia/ 下北沢ビレッジソース 丸寿食品工業株式会社 東京都 www.yamayashokuhin.co.jp/ 山屋食品株式会社 東京都 brothersauce.com/ ブラザーソース森彌食品工業株式会社 www.asahi.co.jp/you/t20011026.html 神戸地ソース物語 【関連団体】 www.maff.go.jp/koueki/sougou/35/35.htm (社)日本ソース工業会 www.japan-tomato.or.jp/ 社団法人 全国トマト工業会 www.soysauce.or.jp/ 日本醤油協会
100 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 10:35:36.61 ID:Zp2ZXSAW.net] >>94 とりあえず試してみて、そのまま使えなようなら、コンパイラのマニュアルを読む。
101 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 10:57:30.22 ID:3MKID8ns.net] >>97 __dso_handleがどうのこうのでエラーが出ます コンパイラはg++です。 マニュアルのインデックスをざっと見てみたのですが セクションが多すぎて該当部分がわかりませんでした
102 名前:デフォルトの名無しさん [2015/09/03(木) 11:17:42.50 ID:qqXcw9HH.net] 組み込みでcoutなんかいるのか? coutがすぐ使えないってことはベアメタルだよな
103 名前:デフォルトの名無しさん [2015/09/03(木) 11:22:18.14 ID:BYrhbrh5.net] いるかどうかは問題にしてない
104 名前:デフォルトの名無しさん [2015/09/03(木) 11:23:37.79 ID:SPzlieDS.net] >>99 OSでnewlibのサポートはあるのですが C++ライブラリのサポートがないようなので何とかして使えるようにならないかと coutは簡単にデバッグ用メッセージをコンソールに出力できたらいいなと newlibではprintfが使用できます。
105 名前:デフォルトの名無しさん [2015/09/03(木) 11:33:23.42 ID:gfhZ4+hm.net] 標準ライブラリとSTLは別物。 どちらもビルド済みがコンパイラと同包されてるケースが多いが。 無ければ自らビルドするなりして組み込まないと動作するわけない。
106 名前:デフォルトの名無しさん [2015/09/03(木) 11:44:20.68 ID:gfhZ4+hm.net] newlib STLでググった結果。 AVR 8ビットマイクロコントローラでSTLを動かす話かと。 AVR toolchain with GCC 4.8.1 and C++ STL support - Antoni Buszta Building compiler Building C Standard Library Patch GCC sources Building C++ Standard Library and other tools antoni.buszta.info/2013/07/18/avr-toolchain-with-gcc-4-8-1-and-c-stl-support/
107 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 12:03:05.07 ID:UXgFNAqG.net] 最近は、8bitマイコンでも、C++が動くのか? びっくりした
108 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 12:09:28.35 ID:SvUuACZU.net] >>91 ありがとうございます unionで何らかのポインタ(void*でなくてもよさげ?)をnull初期化してやれば、 参照(をメンバに持つクラス)をメンバに持つ場合でもいけるわけですね 配置newでthisを渡すというのも初めて知りました 自分にはちょっと技巧的すぎるやり方ですが、とても勉強になりました
109 名前:デフォルトの名無しさん [2015/09/03(木) 12:16:39.79 ID:gfhZ4+hm.net] 軽量なコード、システムを選択していけばいけるんじゃないの?やったことはない。 uClibc stl でググった結果。 uClibc++ C++ library cxx.uclibc.org/status.html Small scale C++ STL for embedded use www.exactcode.com/site/open_source/embeddedstl/ Embedded C++ - Wikipedia 1990年代後半、組み込み用途への適用を目指して、肥大化したC++の仕様を必要最低限のものに絞り込んだサブセットが考案された。 一般的には、Embedded C++を用いた場合、C++よりプログラムをコンパクトにできる傾向がある。
110 名前:デフォルトの名無しさん [2015/09/03(木) 12:43:32.79 ID:SPzlieDS.net] >>102 なるほど、iostreamは標準ライブラリでvectorはSTLになるのですね ちなみに組み込み用(ARM)用のstdlibc++.aは存在します その中で"objdump -C -t"してあげるとcoutのシンボルは存在しますがvectorなどは確かに見つかりませんね >>103 どこでcoutの出力先やらメモリの動的確保の方法を指定しているのかがわからないですね >>106 こんなのがあるんですね
111 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 12:56:42.10 ID:hDY8eKzg.net] 8-bitマイコンってメモリ空間256バイトではないよね なにをもって8-bitなの?
112 名前:デフォルトの名無しさん [2015/09/03(木) 13:20:30.95 ID:gfhZ4+hm.net] STLといっても最終的にはCPUの基本命令まで翻訳されるわけで。 STLの実装・翻訳の過程で無駄がないとすると、STLを使わないものと遜色はないはず。 メモリや速度で難があるのは無駄があるだけ。
113 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 14:47:23.71 ID:UXgFNAqG.net] >>107 coutは標準出力。 ファイル・ディスクリプタ、0:標準入力(stdin)、 1:標準出力(stdout)、2:標準エラー(stderr) メモリの動的確保は、reallocか、 free + malloc >>108 CPUの命令長が、8bit
114 名前:デフォルトの名無しさん [2015/09/03(木) 16:50:12.14 ID:rBNlqiiW.net] >>110 確かにそれは上位のレイヤーではそうなのですが 下位層を意識してみると 内部のコードを読んだことないので自分の中での理解なのですが Linuxの場合 例えばprintfは文字列を処理してから fd:1を引数としたwriteシステムコールで 文字列を出力しているなどしてるのかと思っています。 しかし、windowsでは別の文字列出力方法があると思います。 その環境ごとの文字列出力法の差異をどこで吸収するのか気になっています。 Newlibはおそらくwrite_r等と言う関数を定義することで環境の差異を吸収しているように見えました。
115 名前:デフォルトの名無しさん [2015/09/03(木) 18:06:39.67 ID:zWhDxOK5.net] std::tuple< std::tuple<std::tuple.... *,int>> *, int > 自分自身のポインターを要素に持つtupleって出来ないんですか?
116 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 18:23:10.49 ID:hPxxKfzL.net] >>93 「Type()」はデフォルト初期化でなく値初期化 値初期化の過程でゼロ初期化されるかどうかはルールが複雑なので ISO/IEC 14882:2014の8.5を読めとしか言えない ただPODかどうかは関係ない 例えば struct X {int a; protected: int b;}; はPODではないけれどゼロ初期化される
117 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 18:51:40.41 ID:XvCyn3hF.net] JAVAといっても最終的にはCPUの基本命令まで翻訳されるわけで。 JAVAの実装・翻訳の過程で無駄がないとすると、JAVAを使わないものと遜色はないはず。 メモリや速度で難があるのは無駄があるだけ。
118 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 19:17:25.38 ID:G+oloE/W.net] >>112 template<typename T> class hoge{}; hoge<hoge<int>*> n_inst; ??????
119 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2015/09/03(木) 19:21:44.93 ID:un01NHO0.net] 合わせ鏡みたいなタプル? できるわけないだろ
120 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 19:27:06.77 ID:G+oloE/W.net] template<typename T, typename U> class hoge{}; hoge<hoge<int, int>*, int> tu_inst; 意味が分からん。それとも template<typename T> class hoge{ public: T* m_p; }; hoge<int> n_inst; n_inst.m_p;//int*型 普通にこうしたいだけ?
121 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 19:29:10.11 ID:G+oloE/W.net] ていうか、論理が分からないのか、循環参照したがるんだよな 循環参照は不定なだけ
122 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 20:34:41.66 ID:YegStso1.net] むしろ>>112 の説明で何がわからないのかがわからない。 出来ないとは思うけど
123 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 20:43:03.17 ID:G+oloE/W.net] >>119 int hogeeeeeee(int i){return hogeeeeeee(i);} void main(){hogeeeeeee(1); return;} これが戻り値が不定にならないと思うのと同じ
124 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 20:44:02.06 ID:fKKhgssi.net] >>91 おお、知らなかった C++11でできるようになってたんだな
125 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 20:50:29.42 ID:G+oloE/W.net] テンプレートは動的でなく静的だからね TempClass< float, 6 > test1; // OK TempClass< char, items++ > test2; // Error, second parameter // must be constant.
126 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:03:10.32 ID:D704J011.net] ちょっと考えたけど使い道無さそうだわ ideone.com/hnYBeO
127 名前:デフォルトの名無しさん [2015/09/03(木) 21:04:11.91 ID:yKj1FtgQ.net] #include <iostream> #include<tuple> using namespace std; int main() { using A=std::tuple<B*,int>; using B=std::tuple<int,A*>; return 0; } どうやってこのエラーを取り除けるのでしょうか?
128 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:08:45.94 ID:fKKhgssi.net] >>124 それは規格に無理と書いてある
129 名前:デフォルトの名無しさん [2015/09/03(木) 21:14:36.19 ID:yKj1FtgQ.net] むりなんすか ありがとうございました
130 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 21:16:27.91 ID:G+oloE/W.net] >>124 テンプレートは生成が静的だから完全解決できないと生成できません プログラムコードも静的だから完全解決できないこういうコードはできません int hoge(int i){return hage(i);} int hage(int i){return hoge(i);} void main(){int ret=hoge(1); return;} hogeかhageかでif分岐などで解決しないと実行できません で>>124 みたいなテンプレートは↑こういう風に解釈されます
131 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 21:31:53.50 ID:fKKhgssi.net] >>126 14.5.7 >The type-id in an alias template declaration shall not refer to >the alias template being declared. The type produced by an alias >template specialization shall not directly or indirectly make use of >that specialization. 要するにテンプレートの再帰型は直接であれ間接であれ使えない
132 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 21:47:39.21 ID:G+oloE/W.net] どういうのがやりたいのかわからんけど、↓でそれの何ができないの? class base{ public: base(base& n){m_p=&n;} base* m_p; }; class A : public base{ public: A(A& n) : base(n){;} }; class B : public base{ public: B(B& n) : base(n){;} };
133 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 22:00:58.39 ID:ujbBBsKz.net] コテハン=キチ○イ の法則
134 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:06:39.08 ID:G+oloE/W.net] >>129 でA←→Bの相互通信がしたいなら messengerクラスを独立に作ればいいだけ
135 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:09:18.49 ID:G+oloE/W.net] base* m_p; つかこれはthisポインタだな
136 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:12:34.19 ID:G+oloE/W.net] 要するにクラス参照の持ち合いなんて baseクラスからAとBを派生させて 独立なメッセージクラスで通信すりゃあいいんだよ
137 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:19:52.99 ID:G+oloE/W.net] abstract factoryパターンだろ
138 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 22:22:17.51 ID:hvDmk3I7.net] この馬鹿はさっきから何言ってるの? ビョーキなの?
139 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 22:39:04.34 ID:G+oloE/W.net] 要するにAとBのクラス参照の持ち合いなんて baseクラスからAとBを派生させて 独立なメッセージクラスで通信すりゃあいいんだよ デザインパターンではabstract factoryパターンだろ そのまんまだよ
140 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 23:14:36.34 ID:fKKhgssi.net] なんのこっちゃ
141 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 23:18:52.70 ID:yR6wfki7.net] 1) 釣りである 2) 知ったかしなきゃ死ぬ病気である 3) 本屋にくるおしゃべり天使みたいにスレでもうわごとレスを止められない 4) 本人はまじめだが知能がいちじるしく低い
142 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 23:24:43.23 ID:G+oloE/W.net] class base{ public: int m_val; base(int i):m_val(i){;} virtual int func(int i){return i;} }; class add:public base{ public: int func(int i){return m_val+i;} }; class sub:public base{ public: int func(int i){return m_val-i;} }; base *p,*q;//abstract factoryパターン int r;//メッセージクラス p=new add(21); r=p->func(7); q=new sub(r); r=q->func(7);
143 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 23:34:56.29 ID:G+oloE/W.net] class base{ public: int m_val; base(int i=0):m_val(i){;} virtual int func(int i=0){return i;} }; class add:public base{ public: int func(int i=0){return m_val+i;} }; class sub:public base{ public: int func(int i=0){return m_val-i;} }; base *p,*q;//abstract factoryパターン int r;//メッセージクラス p=new add(21); r=p->func(7); q=new sub(r); r=q->func(7); intを任意のクラスにしたらなんか色々出来そうだろ
144 名前:NAS6 ◆n3AmnVhjwc [2015/09/03(木) 23:41:00.21 ID:G+oloE/W.net] ありゃ、コンストラクタ忘れた class base{ public: int m_val; base(int& i=0):m_val(i){;} virtual int func(int i=0){return i;} }; class add:public base{ public: add(int& i=0):base(i){;} int func(int i=0){return m_val+i;} }; class sub:public base{ public: sub(int& i=0):base(i){;} int func(int i=0){return m_val-i;} }; base *p,*q;//abstract factoryパターン int r;//メッセージクラス p=new add(21); r=p->func(7); q=new sub(r); r=q->func(7); intを任意のクラスにしたらなんか色々出来そうだろ
145 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 23:56:33.17 ID:fKKhgssi.net] 薬飲んだらすぐ寝ないと駄目だぞ
146 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 00:38:45.05 ID:ye/5uETN.net] >>112 これでどう? #include <tuple> struct S; typedef std::tuple<S> TS; struct S { TS* p; }; TS loop{S{&loop}};
147 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 00:53:27.48 ID:ye/5uETN.net] >>83 なんか変な回答ついてるけど、ふつうに↓でコンパイル通るよ。 class B; class A { B& b; }; class B { A& a; };
148 名前:デフォルトの名無しさん [2015/09/04(金) 01:15:43.42 ID:IG+8/rPl.net] 循環【参照】か
149 名前:NAS6 ◆n3AmnVhjwc [2015/09/04(金) 01:16:03.14 ID:tzKKrHnI.net] >>144 それだと、どちらかを先に完全確定する必要があるんだけど まぁ、とりあえずデフォルトコンストラクタでもいいけど 実体作った後でもいいけど、A,Bはどんな状態遷移すると思う? class B; class A { int m_val; B& m_b; A(){;} A(B& b):m_b(b){;} }; class B { int m_val; A& m_a; B(){;} B(A& a):m_a(a){;} }; A a(); B b(a); a.m_b=b; これで、マルチスレッド環境だったりしたら、かわいそうなことに・・・
150 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 01:27:40.32 ID:1ELVgZ8Y.net] >>144 相互に参照を持つように初期化したいという意図だろうから それじゃ回答になっていないし、他の人が既に回答済み
151 名前:NAS6 ◆n3AmnVhjwc [2015/09/04(金) 01:28:13.61 ID:tzKKrHnI.net] 志村Kんの志村、後ろ、後ろ、状態
152 名前:NAS6 ◆n3AmnVhjwc [2015/09/04(金) 01:36:42.35 ID:tzKKrHnI.net] 循環参照する必要があるなら アブストラクトファクトリパターンで シングルトンパターンのメッセージクラスで 応答になるんだろ
153 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 01:41:27.56 ID:ye/5uETN.net] >>146-147 そういうことか。ありがとう。 いちおう↓こんなのはできるけど、これが望むものなのかどうかはやっぱりわかんないね。 class B; struct A { B& b; }; struct B { A& a; }; struct Loop { A a; B b; } loop = {{loop.b}, {loop.a}};
154 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 01:46:02.11 ID:ye/5uETN.net] >150 よりこっちのがいいかな。 struct Loop { A a{b}; B b{a}; } loop;
155 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 02:03:19.63 ID:1ELVgZ8Y.net] それならc++03でもいけるね コンストラクタ書く必要はあるけど
156 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 03:33:33.23 ID:CNzc1DB/.net] >>150 AもBも他のクラスのメンバとするならば、初期化で問題なくインスタンス化できるという話ですか? いずれにしろAとBをマネージするクラスを作るのは避けられないですかね? >>152 どちらもgccのc++03でいけましたが、>>151 はc++03だと警告が出ました コンストラクタは書かなくても大丈夫ではないですか?
157 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 04:59:59.47 ID:ukgXeb3f.net] >>153 どっちも参照しかもって無いんだから誰かが実体持つ必要があるだろ。 それは相互に参照してようがしてまいが変わらない
158 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 05:04:41.54 ID:1ELVgZ8Y.net] >>153 C++03でクラス化するにはコンストラクタがいるよ それと試しにg++(gcc)でやってみたけど、 C++11でのみ有効な機能っていう警告が出たよ それじゃなかった?
159 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 06:17:53.16 ID:rG9hvPUX.net] >>101 コンソールに出力すると コンソールの通信速度に引っ張られて プログラムの動作が遅くなる デバッグだからと言って無闇に大量に出力しないように気をつけないといけない
160 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 08:17:29.72 ID:9mN0gzGK.net] 余計なお世話だ
161 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 08:58:14.87 ID:voaTutYw.net] コンソールってバッファリングしてないのか?
162 名前:デフォルトの名無しさん [2015/09/04(金) 11:55:39.86 ID:1AVS2Ktf.net] >>156 言うだけ無駄 どーしてもcoutと手段が目的化してる
163 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 12:28:24.29 ID:s9W6t8fF.net] やぱログに吐いた方がいいって事ですか
164 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 12:30:58.91 ID:8nJVYQKk.net] >>154 mainとかの関数内ではAやBのインスタンス作れないですよね? 何かしら方法あるのかな
165 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 12:37:05.16 ID:g9gAlQ8r.net] >>161 普通に作れるでしょ…
166 名前:デフォルトの名無しさん mailto:sage [2015/09/04(金) 14:48:15.68 ID:yKUUH6cx.net] どうでもいいけどcerrじゃ
167 名前:デフォルトの名無しさん [2015/09/04(金) 17:07:42.09 ID:ynK+SMBx.net] >>156 >>158 リングバッファに貯めて別タスクでワイヤレスのコンソールに吐き出させています >>160 確かにそうかもしれません。 主目的は、標準ライブラリの移植です。 >>163 それでもかまいませんが やらなくてはならないことは同じではないかと思いました。 ちなみにiostreamをヘッダファイルに加えると以下のようなエラーが出ます hoge.cpp:(.text.startup+0x48): undefined reference to `__dso_handle' /path/to/libstdc++.a(system_error.o): In function `_GLOBAL__sub_I__ZNSt14error_categoryC2Ev': system_error.cc:(.text.startup._GLOBAL__sub_I__ZNSt14error_categoryC2Ev+0x4c): undefined reference to `__dso_handle'
168 名前:デフォルトの名無しさん [2015/09/04(金) 20:19:10.44 ID:STCOa/Lw.net] STLをビルドして組み込め。実装はただひとつでなくいくつもある。動作するやつで。
169 名前:デフォルトの名無しさん mailto:sage [2015/09/05(土) 18:20:35.46 ID:pkvC4koK.net] erosuga1.blog.fc2.com/blog-entry-3174.html 親戚のエロお姉さんとS◯Xwwwwwwwwwww
170 名前:デフォルトの名無しさん [2015/09/06(日) 23:13:13.97 ID:kzoJkPUN.net] CのCHAR_BITに当たるものはC++だとなんですか
171 名前:デフォルトの名無しさん mailto:sage [2015/09/06(日) 23:59:11.69 ID:TtEkoNQG.net] >>167 CHAR_BIT かな。 [] [ここ壊れてます]
173 名前:デフォルトの名無しさん [2015/09/07(月) 19:34:51.82 ID:XjY9JrjD.net] nextとhasNextはnextを実装するときコピーが必要だが終端がわかっていればnextだけで進める moveNextとcurrentはcurrentを実装するときコピーはいらないが進むのにmoveNextが必要という トレードオフがあると思いませんか?
174 名前:デフォルトの名無しさん mailto:sage [2015/09/07(月) 20:08:22.86 ID:AAyuiqtl.net] 奇遇だな ちょうど俺もそう思っていたところだ
175 名前:デフォルトの名無しさん [2015/09/07(月) 21:24:45.26 ID:107fD43G.net] え!?俺も昨日同じこと考えたとこだった!