你好,亲爱的黑社会人士称之为互联网。
假设我们有一个名为X的类,其中包含模板参数(Y):
template<class Y>
class X
{
//...
};
我想创建一个没有(尚未)模板参数的类实例,然后用模板参数定义指针:
X* myClass;
//....
myClass = new X<variable>();
这有可能吗?
答案 0 :(得分:3)
没有。指针指向一个类型,而X
不是一个类型。
答案 1 :(得分:3)
X不是没有模板参数的类型,所以没有,不幸的是没有。如果X有一个定义了你想要使用的接口的基类,你可以实现你想要的。
例如,
struct Interface
{
Interface() {}
virtual ~Interface(){}
virtual void doSomething() = 0;
};
template <class Y>
class X : public Interface
{
//...
virtual void doSomething() override;
};
std::unique_ptr<Interface> myClass;
//....
myClass.reset(new X<variable>());
myClass->doSomething();
答案 2 :(得分:2)
不在X*
。考虑这个替代方案:
class BaseX {
//...
};
template<class Y>
class X : public BaseX
{
//...
};
由于BaseX
是完整类型,因此一旦您定义了BaseX*
,就可以X<Y>
引用{{1}}。