【发布时间】:2015-06-23 13:24:16
【问题描述】:
我想创建一个类工厂,它可以创建对它们一无所知的类(例如,不包含标题)。我创建了一个带有 map 的工厂类,它通过字符串( map(string, mystruct) )存储有关类的信息(sizeof 和指向静态方法的指针),这些信息是从每个类中填充的。
当工厂生产一个类时,它分配原始内存并调用静态方法,然后调用该内存上的默认构造函数:
void *ptr = operator new(classSize);
classCCaller(ptr);//void (*classCCaller)(void*)
然后在该类的静态方法中执行以下代码:
new (ptr) SomeClassConstructor();
然后将生成的类放入某个容器中。
问题 - 是否可以删除以这种方式创建的类,由
delete p;//SomeClass *p;
或者我应该手动调用析构函数并在无类型指针上使用运算符删除?
【问题讨论】:
标签: c++