【发布时间】:2012-08-20 11:08:59
【问题描述】:
正如我所理解的指向非静态方法的指针,它们并不比为某个方法提供别名机制更有用。例如,拥有一个具有三个方法的对象
class Provider
{
public:
int A(int in);
int B(int in);
int C(int in);
}
以及需要指向提供者方法(无论是 A、B 还是 C)的指针的消费者。有了一个 controller,它为所谓的消费者提供了 3 种方法之一的指针,我们可以在消费者代码中编写一些内容,使用 Provider 实例和指向 A、B 或 C 的指针,取决于控制器发送的内容。
如果这就是 C++ 中指向非静态方法的指针所能做的全部,是否还有一种方法可以为对象的方法提供更“智能”的指针,而无需将对象与该方法指针一起发送到消费者?在肯定的情况下,成语/机制是什么(即使是模拟这种情况的方法也可以作为我感兴趣的答案)。
【问题讨论】:
-
IMO 最聪明的方法是不在 C++ 中使用回调,而是更喜欢接口
-
请注意,在 C++ 中处理祖先/后代方法指针时存在协方差陷阱:不能将后者分配给前者(与接口不同)。请参阅史蒂夫·杜赫斯特 (Steve Dewhurst) 的书(如果你能在某处找到它)。
标签: c++ design-patterns idioms