不知道如何清楚地说明主题。C++/Boost模板运行时多态性
假设我有一堆函子类提供了一些方法。现在我想创建一个代理类,它将方法调用重定向到其中一个底层函子。
如:
template<class F>
class proxy_impl : proxy {
F f;
void method() { f.method(); }
};
template<>
class proxy_impl<void> {
virtual void method() = 0;
};
class proxy {
auto_ptr<proxy_impl<void> > *impl_;
template<class F>
proxy(F f) : impl_(new proxy_impl<F>(f)) {}
void method() {
impl->method();
}
};
这是什么模式打来电话,确实有提升执行?
没有函子直接继承的原因是因为函数可能会像无名的lambda表达式那样。
好的,所以看起来我需要像boost :: any和boost :: function之类的东西。
你不需要'方法'虚拟 – KitsuneYMG 2011-01-31 01:51:45
我一直困惑这一段时间,我认为你在做一件很奇怪的事情,我认为它不值得头痛的尝试去理解它,它对未来的可维护性预示着非常坏的病。 – Omnifarious 2011-01-31 03:08:42
@Omnifarious同意。 – KitsuneYMG 2011-01-31 03:35:21