如果我有一个接口和许多实现这个接口的类,那么现在我可以将类的类型而不是对象的类型作为参数传递吗?
就像这样:
Interface *creatClass(class : Interface){
return new class();
}编辑:
template <class T>
IFrame *creatClass(){
return new T();
}
void dfg(){
IFrame *lol = creatClass<Button>();
}
error C3206: 'creatClass' : invalid template argument for 'Dist_Frame', missing template argument list on class template 'Button'PS。Button继承IFrame
发布于 2011-10-24 18:37:05
它叫"Template“。
template <class T>
T *creatClass(){
return new T();
}你得这样称呼它:
class InterfaceImpl : public Interface {...};
// ...
InterfaceImpl *newImpl = creatClass<InterfaceImpl>();编辑的
您也可以尝试这样做,以确保只创建Interface的实例
template <class T>
Interface *creatClass(){
return new T();
}将编辑到编辑
我试过这个测试代码:
#include <iostream>
using namespace std;
class IFrame{
public:
virtual void Create() =0;
};
class Button : public IFrame{
public:
virtual void Create(){ cout << "In Button" << endl;};
};
template <class T>
IFrame *creatClass(){
return new T();
}
int main()
{
IFrame *lol = creatClass<Button>();
lol->Create();
}就像预期的那样。您必须在类定义中出现其他一些编码错误。调试它,它与您的原始问题无关。
https://stackoverflow.com/questions/7880153
复制相似问题