类型擦除

类型擦除,解除了父子继承关系,只要一个类有基本类的特性,就可以写成基本类的形式

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

Table of Contents