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場合にのみ、この新しいコンストラクター テンプレートがオーバーロードの解決に参加するようにするための部分を追加しました。UT
于 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 に答える