1 名前:デフォルトの名無しさん mailto:sage [2013/10/28(月) 01:00:22.34 ] The C++ Standards Committee www.open-std.org/JTC1/SC22/WG21/ Wikipedia https://en.wikipedia.org/wiki/C%2B%2B14 C++11/C++1y 18 toro.2ch.net/test/read.cgi/tech/1365073520/
136 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:25:06.08 ] C++のどこを指して機能が少なすぎると言ってるのか全く理解出来ないが (OSのエントリポイントをコードできないという意味か?) C++は最高の柔軟性を持っている。アセンブラを除けば他の言語に出来て C++に出来ない事は存在しない
137 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:29:29.85 ] 標準ライブラリが少ないというのには同意する
138 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:37:58.19 ] 他の言語がありすぎな気も
139 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:43:02.49 ] boostさんがいれば大概のことはなんとかなる
140 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:56:02.18 ] >>136 >>127
141 名前:デフォルトの名無しさん mailto:sage [2013/11/10(日) 23:57:21.87 ] >>140 記述方式と言語の能力をごっちゃにしてる当たり「高級」言語しか使えないの丸見え
142 名前:デフォルトの名無しさん [2013/11/11(月) 00:11:14.72 ] 127 は型が「違う」のではなく「同じである保証がない」 つまりは「同じであることに依存してはならない」ということだ C++ の元来のポリシーからして複数の typedef や typename が たまたま同じなら通るわけで、127 が NG なのは唐突な印象だが
143 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:12:16.57 ] 委譲の話、データメンバーのinline指定で委譲になって usingで選択、とかならいいな んでusing指定はdecrarator-idだけ指定すればOKで 必要ならdeclarator全体書けば特定のoverloadが指定できるとか class A { void f(); void f(int); void g(); void g() const; }; class B { inline A impl using { f(int), g }; }; とか まあ、そんな大きくコア言語いじるほど欲しい機能じゃないけど… >>123 IDEに任せるなら今でもやろうと思えば可能なような あとn1363のはusing identifier { }だけど、名前空間でそんなのあるっけ? >>122 n1363の別名定義は=の左右の向きが受け入れがたいよね
144 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:16:18.11 ] VLAISとかgccが独自拡張してるのを追ってったらなんぼでもあるだろ 古い言語でもPascalの関数内関数と同じ機械語パターンはC++のラムダじゃ吐けないが
145 名前:デフォルトの名無しさん [2013/11/11(月) 00:17:40.35 ] gccはデファクトスタンダードなのでgccの拡張を取り込んでいない 標準規格のほうが規格違反。
146 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:18:55.74 ] >>142 結局記述方式の問題だろ?
147 名前:デフォルトの名無しさん [2013/11/11(月) 00:28:12.95 ] >>146 一致を狙ってくる意図のほうだと思うが
148 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:33:43.08 ] Cにウンコな記述方式を追加したのがC++なんだから 記述方式を否定したら何も残らん
149 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:41:27.94 ] って事は今の言語はみんなウンコ
150 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 00:55:07.19 ] >>123 C++03の時点でusingをclass内に書くとメンバー関数の アクセス権昇格と降格に使えるようになってるから問題ない。 C++03の知識すら無いのにこのスレくんな
151 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 01:08:34.24 ] >>143 戻り値で得たオブジェクトに機能追加する際大活躍するぞ std::unique_ptr< Base > base = Function(); Extention extention = std::move( base ); extension.BaseFunction();//Base型に自動委譲された関数 extension.ExtendFunction();//Extensionで追加した関数 IDEで自動生成すればいいという話も出てるが、 委譲先の型に関数追加するたびに自動生成とかやっとられん。 特に既にライブラリー化されたものだと自動生成は使えない。
152 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 02:08:13.18 ] なるほど、確かにそういうのはアリかも そういえばスマートポインタが絡むとどう宣言するか難しいな
153 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 07:06:35.91 ] ポインターに限定せず、指定した変数の->が 自動で呼ばれる仕様にしとけばいいんじゃね。 委譲用の関数がコンパイル時に自動生成される実装に なってりゃそれ程難しくもない。
154 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 13:16:54.80 ] 多重継承恐怖症患者の憂鬱
155 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 14:03:59.01 ] C++がやっぱり覇権言語のような気がする
156 名前:デフォルトの名無しさん mailto:sage [2013/11/11(月) 14:31:55.45 ] >>154 多重継承じゃポインターは継承できないぞ
157 名前:デフォルトの名無しさん [2013/11/11(月) 15:33:24.45 ] イミフ
158 名前:デフォルトの名無しさん [2013/11/11(月) 23:00:37.29 ] 関数の戻り値から単純な図形と2次Bezierぐらいしか対応して無いPainter拾って来て、 3次BezierとSplineを追加したいなんて時に委譲すんだが かったるいんだよな。特に委譲先のメンバーが20個以上あるような場合。
159 名前:デフォルトの名無しさん mailto:sage [2013/11/12(火) 00:22:39.31 ] gccのfloat最適化が期待したほどじゃなかった人?
160 名前:デフォルトの名無しさん [2013/11/12(火) 08:45:52.81 ] >>159 誤爆か?
161 名前:デフォルトの名無しさん mailto:sage [2013/11/21(木) 12:03:51.85 ] 質問です ideone.com/LDs6Av 2つのクラスの間でoperatorを定義したいのですが、先行宣言した方のクラスではdecltypeが書けません。 これをdecltypeを使えるようにするにはどのように書けば良いのでしょうか? この例ではdoubleと書いてありますが、templateで他の型も使えるようにしたいと思っています。
162 名前:デフォルトの名無しさん mailto:sage [2013/11/21(木) 12:57:06.26 ] テンプレにすりゃいいんじゃねーの
163 名前:デフォルトの名無しさん mailto:sage [2013/11/21(木) 14:05:23.08 ] >>162 ありがとうございます ideone.com/WPhg2Q これで行けそうです classの中でoperator*を定義しようとすると、もう一つのclassのdがprivateで 型を取得出来ないので、アクセサを付けるとカプセル化を破る事になるし、 だったらfriendでoperator*を外部に関数で定義した方が良さそうでした
164 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 07:58:38.52 ] んな現行規格の話はC++初心者スレで聞けよ
165 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 10:45:50.90 ] decltypeが現行規格か?C++11ならそうだけど 初心者スレは03までじゃないとスレチな気が
166 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 12:34:18.94 ] >>165 スレタイ見て物を言え
167 名前:デフォルトの名無しさん [2013/11/22(金) 13:24:27.31 ] 現行規格は C++11 異論をはさむ余地はない ただし >>163 は decltype なくても typedef で解決できることだね template <class T> class A { public: typedef T D; private: D d; public: A(D a) : d(a) {} };
168 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 13:34:32.78 ] >>167 typeを外に晒してもoperatorの戻すtypeは結局decltypeが必要になるんじゃね? どんなtypeとどんなtypeを演算するのかわからないんだから
169 名前:デフォルトの名無しさん [2013/11/22(金) 14:16:20.77 ] >>168 それは確かに C++11 で改良された点だが cout<< に流せる型なら特殊化でもしておけば? class T は理屈の上ではあらゆる型だが class A で達成しようとしている目的から外れすぎた 馬鹿げた T はシカトってのもよく使う手だね C++11 なら、これも type_traits や static_assert でもうちっと善処できるけど
170 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 14:17:40.69 ] 特殊化したんじゃtemplateにする意味がない どんな型でも受けたいんだから
171 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 14:28:49.50 ] 結局>>167 でdecltypeを使わずに具体的にどう書くかは示されてないのか
172 名前:デフォルトの名無しさん [2013/11/22(金) 14:29:55.90 ] あるいは何型の戻りを期待するのか陽に指定とかね operator * では無理だけど、そんなら普通の関数だし
173 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 14:42:23.80 ] どんな型でもって、特定のメソッド要求してる時点で型が限定されてんじゃん?
174 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 17:46:59.67 ] >>173 特殊化されてない同名メソッドと 型に付随する特定のメソッドとは別概念じゃん?
175 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 17:51:22.08 ] はよ初心者スレに帰れよ
176 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 18:03:43.31 ] ガタガタ抜かさんと>>167 書いた奴はideone.comに何かプログラム例上げてみ
177 名前:デフォルトの名無しさん [2013/11/22(金) 18:18:17.64 ] >>176 やだね、べろべろばー
178 名前:デフォルトの名無しさん mailto:sage [2013/11/22(金) 18:50:08.40 ] 書けない癖に偉そうな口を聞くからそうなるんだよアホ
179 名前:デフォルトの名無しさん [2013/11/22(金) 20:29:56.47 ] >>178 煽れば何か見せてもらえると思ってんだろバーカ
180 名前:デフォルトの名無しさん [2013/11/22(金) 23:43:06.64 ] お前のは見たくないからいいよ。
181 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 02:17:07.60 ] 勿体付けてるんじゃなくて、本当に書けないのは誰が見ても分かる
182 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 07:24:06.67 ] 退屈だからoperator ** (ベキ乗)でも定義するか class num { double a; struct num2 { double a; num2(double src) : a(src) { } }; public: num(double src) : a(src) { } const num2 operator *() const { return num2(a); } double operator *(const num2& b) const { return pow(a, b.a); } double operator *(const num& b) const { return a * b.a; } }; int main() { num a(3.0), b(4.0); double c = a * b; //12 double d = a ** b; //81 return 0; }
183 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 07:59:59.46 ] class num2 { friend num; double a; num2(double src) : a(src) { } }; としてもっと完全に隠蔽すべきだったな
184 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 11:22:58.52 ] >>182-183 スレ違いだボケ
185 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 12:36:41.30 ] threadとかasync周りについて詳しく解説したページない? 何かよくわからん
186 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 13:07:54.38 ] >>185 このスレで聞くな
187 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 13:22:08.54 ] threadはともかくasyncは出来損ないなので勉強するだけ無駄
188 名前:デフォルトの名無しさん [2013/11/23(土) 13:23:37.41 ] >>182-183 num2 無しにしたらどうよ class num { double a; public: num(double src) : a(src) { } operator double() const { return a; } const num *operator *() const { return this; } const num operator *(const num *p) const { return pow(a, *p); } const num operator *(const num &amp;b) const { return a * b; } }; int main() { num a(3.0), b(4.0), x(0), y(0); double c = a * b; //12 double d = a ** b; //81 x = a * b; //12 y = a ** b; //81 return 0; }
189 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 13:28:58.41 ] >>188 荒らしかよおめーは
190 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 13:47:35.56 ] 相手されないと死ぬ幼児です
191 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 17:19:44.89 ] threadはどうなの C++14で何か変更あるの
192 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 18:18:35.60 ] shared_(mutex|lock)
193 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 18:34:32.77 ] async 件、誰か kwsk!
194 名前:デフォルトの名無しさん mailto:sage [2013/11/23(土) 20:30:20.81 ] >>9
195 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 01:04:48.21 ] >>193 www.amazon.co.jp/C-Concurrency-Action-Practical-Multithreading/dp/1933988770
196 名前:193 mailto:sage [2013/11/24(日) 02:46:41.05 ] ごめん少し言葉足らずだった asyncができそこないって件kwsk!
197 名前:デフォルトの名無しさん [2013/11/24(日) 04:47:47.62 ] getせずにfutureが破棄されたらどうすんのか決まってなかったけど、そのままデタッチしたら危ないから終了までブロックするようにした。 そしたら、 「それasync違うじゃん、止まってほしくない時まで止まっちゃうの問題じゃね?非同期処理を行いたい時はUIスレッド止めずにバックグラウンドで何かしたいときとかなのに!」 とか、 「非同期ならそのスレッド止めずに結果はコールバックで受け取るようにすべきで、そのライブラリ無いのおかしくない?でもそれ作ったらいまのasyncいらんよね。」 とか、 「Windowsだとこんな使い方してもスレッド起動のコストでかすぎて大抵遅くなるだけだわー」 とか、色々なネガティブ要素でもういっそdeprecateにしたほうがいいんじゃないか?って話しになってるんだと思ってる。 個人的にはできそこないって言うほどダメなもんでもないと思うけど・・・。 違ったら詳しいひとツッコミよろ
198 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 08:28:19.73 ] The C++ Standard Library 2nd ed - A Tutorial and Reference - Nicolai M. Josuttis www.amazon.co.jp/The-Standard-Library-Tutorial-Reference/dp/0321623215 これいいな C++11わからんとか言ってるやつはここのサンプルプログラムを手で打ち込んで全部試してみれ 英語版しかないのが玉に瑕だがそんなに難しい英語じゃない
199 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 10:01:08.30 ] 時代はC++14
200 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 11:33:31.84 ] コンパイラがない
201 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 11:38:02.86 ] 僕達にはclangがある
202 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 11:55:58.66 ] vc++のことも忘れないであげてください
203 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 12:57:42.87 ] パターンマッチは入らないのかな
204 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 14:05:48.12 ] スマポが配列を指す時に苦労した これデフォルトのデリータがdeleteなんだな だからカスタムデリータでdelete[]をラムダ式か何かで指定するか、 std::default_delete()を使わないといけないのか
205 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 14:42:02.32 ] デフォで配列版が用意されてるのはunique_ptrだけなんだな。 なぜだろ?
206 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:10:40.65 ] >>205 オブジェクトを複数のオブジェクトで共有するならまだしも、 生配列を複数のオブジェクトで共有して何に使うんだよ。 要は生配列共有すんなって事だ。
207 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:20:29.44 ] vectorかarrayを使っておけというところじゃね。 C++の動的配列って中途半端だよね。 delete[]で各要素のデストラクタ呼べるように サイズとか内部的に持っているのに普通には使えないとか。 deleteとdelete[]使い分けろとか。
208 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:38:04.69 ] >>207 new T;で生成したオブジェクトdeleteする時にnew T[];とどうやって区別するんだ。 常にnew T[]した時余計な情報載せるのか?
209 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 16:59:52.30 ] >>207 デストラクターが無い場合に要素数を持たないようメモリをケチること許す言語仕様ゆえ
210 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 17:07:57.10 ] >>209 Cの配列と互換性持たせるためでもあるな。
211 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 17:13:06.24 ] それは関係ないんじゃ 使う側が見たnew式の結果は区別が付かないだから
212 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 17:19:54.68 ] >>206 配列の時だけってか?
213 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 21:23:17.89 ] >>205 unique_ptrには他のスマポと違ってコピーコンストラクタがないから 配列版=>単一版への誤ったコピーが起きにくい。
214 名前:デフォルトの名無しさん [2013/11/24(日) 22:22:47.31 ] >>207 ぶぁか
215 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 23:26:15.38 ] >>211 単体のnewに要素数情報乗っけられるのも困るな 1000回newしたら8000バイト近くdeleteの為だけに主記憶領域食われるんだからな
216 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 23:41:30.04 ] >>213 テンプレートコンストラクタだから正しく言うとコピーコンストラクタじゃない
217 名前:デフォルトの名無しさん mailto:sage [2013/11/24(日) 23:49:40.23 ] コピコンじゃないの!?
218 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 00:09:23.90 ] コピコンが無いってのは確かだが、配列=>単一のコピーの話をするんであれば問題なのはそこじゃない
219 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 01:00:10.11 ] 配列=>単一のコピーってどういう話?
220 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 06:19:02.67 ] >>219 unique_ptr<T[]> a(new T[8]>; unique_ptr<T> b(a>; ってのが通ったらまずいが、unique_ptrには下のコンストラクタがないから大丈夫。 shared_ptr<T[]> c(new T[16]>; shared_ptr<T> d(c); ってのが通ったらまずいが、shared_ptr<T[]>なんてものはないから大丈夫。
221 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 09:59:08.91 ] shared_from_this()というのがいまいち理解できない これどうなってんの?
222 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 21:53:44.84 ] やってることはトリッキーだけど単純なことなんだがシンプルで具体的な使用例がだせないな shared_ptrで管理されてるオブジェクトがなんらかの事情で普通のポインタで渡されたときに そのポインタから元のshared_ptrと管理権を共有するshared_ptrを得るというイディオムで使うんだけどな
223 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 22:26:31.25 ] www.ogis-ri.co.jp/otc/hiroba/technical/boost/index.html のコラム2
224 名前:デフォルトの名無しさん mailto:sage [2013/11/25(月) 22:40:55.34 ] なるほどかなり特殊なケースみたいだな
225 名前:デフォルトの名無しさん [2013/11/25(月) 22:42:55.82 ] >>222 「shared_ptrで管理されてるオブジェクトがなんらかの事情で普通のポインタで渡されたときに そのポインタから元のshared_ptrと管理権を共有するshared_ptrを得る」というイディオム 長えよ
226 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 00:02:08.16 ] イディオム名はそのまま『shared from this イディオム』でそれはどういうもの?って説明が>>222 だろ
227 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 21:33:57.58 ] boost::shared_ptrに記憶領域の番地を入れた際、 要約値を鍵にした連想配列(hash map)に 記憶領域の番地を格納。 boost::shared_from_thisを実行した際、 この連想配列からthisの持つ番地で、 boost::shared_ptrをとってくるって仕組みじゃないか?
228 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 22:00:12.84 ] 内部にthisを指すweak_ptr持ってるだけだよ 後はshared_ptrのコンストラクタがenable_shared_thisを継承したクラスを特別扱いしている
229 名前:デフォルトの名無しさん mailto:sage [2013/11/26(火) 22:40:40.37 ] 参照カウンターの整合性はどうなるんだ?
230 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 09:48:18.32 ] >>229 どんなケースで問題が起こると思ってるの?
231 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 18:38:48.13 ] newして返したboost::shared_ptrと、 boost::shared_ptrで確保した、boost::shared_ptrを返した時。 特に片方が共同所有権としてつかわれ、 片方がEventの委譲用とかよくありがちじゃん。
232 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 18:42:03.66 ] それで何か問題になるのか
233 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 19:47:52.61 ] >>232 二重delete
234 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 21:00:11.72 ] 長文失礼 shared_ptrのオブジェクトの管理領域は次のようになっている 管理領域の参照カウンタ、オブジェクトの参照カウンタ、オブジェクトへのポインタ、デリータへのポインタ ここで、shared_ptrは管理領域、オブジェクト両方のカウンタを増減させる。 weak_ptrは管理領域のカウンタのみを変更する。 shared_ptrの破棄によってオブジェクトのカウンタが0になったとき、オブジェクトは解放される。 しかし、管理領域は全てのweak_ptrが破棄されるまで生存する そして、weak_ptrからshared_ptrを構築する際には、shared_ptrの管理領域へのポインタをweak_ptrが指す管理領域へのポインタへと設定している
235 名前:デフォルトの名無しさん mailto:sage [2013/11/27(水) 21:02:36.06 ] 長すぎと言われた、連レスすまん enable_shared_from_thisは内部にweak_ptrを持っていて、shared_ptrのコンストラクタはenable_shared_from_thisを継承したクラスに対しては特殊な動作、すなわち内部のweak_ptrに管理領域へのポインタを設定する動作をする shared_from_this関数は内部のweak_ptrからshared_ptrを構築する関数で、前述のように同じ管理領域を指すポインタが新たに構築される 全てのスマートポインタが同じ管理領域を指しているので、二重解放は起こらない
236 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 01:04:05.46 ] >>231 > newして返したboost::shared_ptr わからん。何を new ?返すってどこからどこに? > boost::shared_ptrで確保 わからん。 shared_ptr に何かを「確保」する機能なんて無いよね? さっぱりわからん。
237 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 10:41:28.04 ] >>231 >>233 こいつはたぶんshared_ptrそのものを理解してない
238 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 19:18:57.03 ] 普通に使えば普通に使えるライブラリを 浅知恵で細工して可読性もパフォーマンスもセキュリティもぶち壊す C++ではよくあること
239 名前:デフォルトの名無しさん mailto:sage [2013/11/28(木) 22:25:36.50 ] そういや shared_ptr を使っているインスタンスに対してVisitorパターンだったかやってみようとしたら 途中で生ポインタに変わっちゃうんであきらめたことがあった class Hage : public Element { virtual void accept(Visitor &v){ v.visit(this); } // <- このとき }; enable_shared_from_this ってのを知っていたらうまいことできたんだろうか
240 名前:デフォルトの名無しさん mailto:sage [2013/11/29(金) 01:14:30.49 ] うん