类型擦除
类型擦除,解除了父子继承关系,只要一个类有基本类的特性,就可以写成基本类的形式
class task_base {
public:
virtual void display() = 0;
};
template<class T>
class task_model : public task_base {
public:
T mi;
task_model(T obj) {
mi = obj;
}
void display() {
mi.display();
}
};
class my_task {
public:
std::unique_ptr<task_base> ts;
template<class T>
my_task(T obj) {
ts = make_unique<task_model<T>>(obj);
}
void display() {
ts->display();
}
};
class kk {
public:
void display() {
cout << "kk";
}
};
void main() {
kk c;
my_task task(c);
task.display();
getchar();
}
参考:http://t.csdnimg.cn/UGwU8