質問する
428 次
3 に答える
2
別のコンストラクターを追加します。
template <typename U>
Container(Container<U> const & ref,
typename std::enable_if<std::is_base_of<T, U>::value, int>::type = 0)
: obj_(ref.obj_)
{ }
型が実際に から派生しているenable_if
場合にのみ、この新しいコンストラクター テンプレートがオーバーロードの解決に参加するようにするための部分を追加しました。U
T
于 2012-08-14T14:33:51.513 に答える
1
Container<A>
とContainer<B>
全く別のクラスです。
あなたはaをにcontainer_cast<T>(U)
変換するようなものを持つことができますContainer<A>
Container<B>
container_cast はContainer<T>
、 を取り、obj_
Container<U>
それをキャストすることによって別のものを構築obj_
しますT*
于 2012-08-14T14:35:31.013 に答える
-1
コンテナを使用する代わりに、基本クラスにうまく変換できるイテレータペアを使用してください。問題を解決し、コードを一度にクリーンアップします。
編集:より多くの情報が与えられた後、私はこれに私の答えを変更します:
を使用しboost::shared_ptr
ます。
于 2012-08-14T14:37:28.940 に答える