C++ C++;不提供模板参数的类指针
你好,亲爱的黑社会的人们,他们叫互联网 假设我们有一个名为X的类,带有模板参数(Y):C++ C++;不提供模板参数的类指针,c++,class,templates,variables,pointers,C++,Class,Templates,Variables,Pointers,你好,亲爱的黑社会的人们,他们叫互联网 假设我们有一个名为X的类,带有模板参数(Y): 模板 X类 { //... }; 我想创建一个没有(尚未)模板参数的类实例,然后用模板参数定义指针: X* myClass; //.... myClass = new X<variable>(); X*myClass; //.... myClass=新的X(); 这有可能吗?没有。指针指向一个类型,而X不是一个类型。不使用X*。考虑这个替代方案: class BaseX { //
模板
X类
{
//...
};
我想创建一个没有(尚未)模板参数的类实例,然后用模板参数定义指针:
X* myClass;
//....
myClass = new X<variable>();
X*myClass;
//....
myClass=新的X();
这有可能吗?没有。指针指向一个类型,而
X
不是一个类型。不使用X*
。考虑这个替代方案:
class BaseX {
//...
};
template<class Y>
class X : public BaseX
{
//...
};
classbasex{
//...
};
模板
第X类:公共BaseX
{
//...
};
由于
BaseX
是一个完整的类型,一旦定义了BaseX*
,就可以使用它引用一些X
。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();
struct接口
{
接口(){}
虚拟~Interface(){}
虚空doSomething()=0;
};
模板
X类:公共接口
{
//...
虚拟void doSomething()覆盖;
};
std::unique_ptr myClass;
//....
重置(新的X());
myClass->doSomething();
无论如何,是的:void*myClass代码>然后myClass=newx
X
不是不完整的类型。它是模板的名称,而不是类型。不完整类型是一种已声明但未定义的类型,如class C代码>.Oops,我的错。我会把它修好的。
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();