我有多态类,它将另一个多态类作为模板参数。
我想做这样的事情:
class A{ public: virtual ~A() = default; };
class B : public A{};
class C : public A{};
template<typename A>
class X{ public: virtual ~X() = default; };
class Y : public X<B>{};
class Z : public X<C>{};
int main(void)
{
X<A> *test = new Y();
(void)test;
return 0;
}
但我得到了这个错误:
error: cannot convert 'Y*' to 'X<A>*' in initialization
X<A> *test = new Y();
目标是拥有一些X实例的容器:
std::vector<std::unique_ptr<X<A>>> data;
data.push_back( std::make_unique<Y>() );
data.push_back( std::make_unique<Z>() );
我该怎么办?