没有给出模板参数的 C++ 类指针

Mig*_*l P 5 c++ variables templates pointers class

你好,亲爱的地下世界的人们,称为互联网。

假设我们有一个名为 X 的类,其模板参数(Y):

template<class Y>
class X
{
    //...
};
Run Code Online (Sandbox Code Playgroud)

我想创建一个没有(还没有)模板参数的类实例,然后使用模板参数定义指针:

X* myClass;

//....
myClass = new X<variable>();
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

小智 5

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();
Run Code Online (Sandbox Code Playgroud)