你好亲爱的黑社会称为互联网。

假设我们有一个名为 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/

10-13 05:36