如何为类的每个实例创建实例特定的方法?

时间:2019-05-27 11:40:14

标签: c++ class methods

我正在用C ++制作纸牌游戏,并使用onClick()方法制作了一个Button类。每张卡都将是一个按钮,但是单击时我不会使每张卡做不同的事情。是否可以通过某种方式重写每个实例的onClick()函数来实现此目的,而不是创建50个不同的类方法或50个不同的类?

我尝试为每个不同的实例创建一个函数,并将其作为类中的字段传递。然后,onClick()函数充当每个实例的包装,并调用在Button构造函数中作为参数传递的函数,但是我试图避免在Button构造函数中添加函数参数。

2 个答案:

答案 0 :(得分:2)

有许多可能的解决方案。在我的讨论中突然弹出的一个例子是,您可能有一个由50个函数指针组成的数组(或更确切地说是std::function对象),每个函数指针都指向一个处理特定“卡片”的函数。或者只是有一个这样的std::function对象,您可以将其初始化为构造函数初始化程序列表中的正确函数(例如)。

如果这些功能之间的差异很小,那么将其收集到单个功能中并具有例如switch语句来做一些不同的小细节?

答案 1 :(得分:2)

您要的内容通常称为高阶编程

中,您可能需要使用例如。 std::function)并将其存储在卡类中-如您所说 。但是由于您不想在构造函数中传递它(为什么?),因此可以使成员成为可选的,例如。 std::optional<std::function<void()> >