【发布时间】:2019-05-27 11:40:13
【问题描述】:
我正在用 C++ 制作纸牌游戏,并使用 onClick() 方法制作了一个按钮类。每张卡片都将成为一个按钮,但我不希望每张卡片在点击时做不同的事情。有没有办法通过为每个实例重写 onClick() 函数来做到这一点,而不是创建 50 个不同的类方法或 50 个不同的类?
我尝试为每个不同的实例创建一个函数并将其作为类中的字段传递。然后,onClick() 函数充当每个实例的包装器,并调用在 Button 构造函数中作为参数传递的函数,但我试图避免在 Button 构造函数中添加函数参数。
【问题讨论】:
-
卡片的
onClick()函数有什么区别? -
这真的取决于,你可以根据情况,创建一堆组件并让每张卡包含相关组件的集合。但这可能是矫枉过正,我认为最简单的事情可能是您建议将函数传递给按钮的构造函数。但这只是在每个函数都足够独特的情况下,如果没有更多上下文,很难给出明确的答案。另外,“但我试图避免在 Button 构造函数中添加函数参数”背后的原因是什么?
-
这是否可以作为 XY 问题的示例 (meta.stackexchange.com/questions/66377/what-is-the-xy-problem)?我希望该方法对每种卡片类型做一些不同但非常相似的事情。卡类型字段和取决于卡类型的区别不是一个合适的解决方案吗?