gpt4 book ai didi

C++/Boost 模板运行时多态性

转载 作者:行者123 更新时间:2023-11-30 03:08:35 25 4
gpt4 key购买 nike

不确定如何清楚地陈述主题。

假设我有一堆提供一些方法的仿函数类。现在我想创建一个代理类,它将方法调用重定向到底层仿函数之一。

例如:

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();
}
};

这个模式叫什么,boost 有实现吗?

不让仿函数直接继承的原因是仿函数可以是类似于无名 lambda 表达式的东西。

好吧,看来我需要像 boost::any 和 boost::function 功能一样的东西。

最佳答案

看起来您正在尝试重新发明基于对象的多态性……很糟糕。

来这里做你想做的事

class interface { virtual void method()=0; }
class impl1 : public interface { void method(); }
class impl2 : public interface { void method(); }

...//example usage
interface i *;
if (cond) i = new impl1(); else i= new impl2();
i->method();//calls whichever implementing method was constructed.

关于C++/Boost 模板运行时多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4846985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com