不知道如何清楚地說明主題。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