gal*_*tte 1 c++ pointers function
我有一个Parent抽象类,派生Foo和Bar类.它们都有一个带string name参数的构造函数.它们有一个string type()成员函数,它分别返回"foo"和"bar".
现在我想用键"foo"和"bar"构建一个字典,值等于指向函数的指针,创建相应类的新实例.这意味着这些指针将是类型Parent* (*) (const string &),执行它们将等同于调用new Foo(name)和new Bar(name)
我可以避免为每个只调用new的类创建一个静态函数,并获得指向这个静态函数的指针吗?
谢谢!
编辑:实际上,这背后的目标是在我的应用程序中实现一个插件系统,插件添加新的Derived类类型.插件作者通常是我的客户,因此,我想让他们拥有最简单和优雅的界面.因此,声明和注册工厂功能应该尽可能简单和尽可能短
我可以避免为每个只调用new的类创建一个静态函数,并获得指向这个静态函数的指针吗?
是的,您可以创建一个通用函数:
template <typename T>
ptr_type<Parent> create() {
return new T();
}
Run Code Online (Sandbox Code Playgroud)
...然后获取其地址(但您需要获取每个派生类型的地址).
请注意,我明确没有用作T*返回类型 - 原始指针永远不应该拥有内存......应该在这里使用适当的智能指针.
| 归档时间: |
|
| 查看次数: |
361 次 |
| 最近记录: |