你好亲爱的黑社会称为互联网。
假设我们有一个名为 X 的类,带有模板参数(Y):
template<class Y>
class X
{
//...
};
我想创建一个没有(还没有)模板参数的类的实例,然后用模板参数定义指针:
X* myClass;
//....
myClass = new X<variable>();
这有可能吗?
最佳答案
X 不是没有模板参数的类型,所以不,不幸的是不是。如果 X 有一个定义了你想要使用的接口(interface)的基类,你就可以实现你想要的。
例如,
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();
关于不提供模板参数的 C++ 类指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12679400/