这是一个创建于 3419 天前的主题,其中的信息可能已经有所发展或是发生改变。
故事是这样的:
最近在*尝试*看能不能在C++里实现插件机制,方式类似于写一个插件控制类Plugin,然后再写一个PluginBase作为插件的基类。
所有插件都继承这个PluginBase基类,然后覆盖/扩展这个基类来实现自己各自的功能。
Plugin类里有一个vector用来储存所有PluginBase类型的指针(PluginBase*),用来指向各个插件,然后当插件调用的时候只需要Plugin类里直接拿迭代器出来一个个呼叫PluginBase里对应的virtual方法就好了。
代码类似于这样(请脑补Base为PluginBase):
那么问题来了:
1、这样的实现方式可行么?类内元素会不会丢失?会不会出现比如调用出错(比如Undefined behavior)这样奇葩的问题?
2、例子里的delete能完整释放对应对象么?会不会出现内存碎片?
感谢!
2 条回复 • 2015-01-17 20:46:18 +08:00
|
|
1
bombless 2015-01-17 20:38:47 +08:00 via iPhone 1
用一个虚基类表示即可,记得基类的析构函数是虚的。 一般拿个shared_ptr包一下方便点。
|