C++ 类类型作为参数
Posted
技术标签:
【中文标题】C++ 类类型作为参数【英文标题】:C++ class type as argument 【发布时间】:2011-12-14 08:59:48 【问题描述】:如果我有一个接口和许多实现该接口的类,我现在可以只传递类的类型而不传递对象作为参数吗?
类似这样的:
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
【问题讨论】:
【参考方案1】:它叫做“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();
完全按预期工作。您的类定义中必须有一些其他编码错误。调试一下,和你原来的问题无关。
【讨论】:
以上是关于C++ 类类型作为参数的主要内容,如果未能解决你的问题,请参考以下文章