我有一个命令设备的功能。此设备可用两次,因此我需要两个设备具有相同的功能。出于维护原因,我不想对函数进行两次编码(每个设备一次),因为那时我总是需要应用两次更改。
这些功能原则上是相同的,但应该适用于不同的变量。是否可以使用“变化”名称来实例化此函数,类似于模板但不包含类而是名称? 我试着提供一个例子。看起来应该是这样的。
void function_x (int Var, double Vary, ...) {
int var3_x = getFunctionFromDatabase(var3_x);
double var2_x = getFunctionFromDatabase(var2_x);
// some operations
}
这些函数由Device Handler类的两个实例应用。 变量var1_x,var2_x和var3_x存储在数据池中,如var1_1,var1_2,var2_1,...“相同”变量,但每个设备一个。一个控制器通过这些变量和数据池命令两个设备。
这有可能吗?
我希望问题得到解决;)。这是我的第一个问题:P。 提前感谢您的帮助。
答案 0 :(得分:2)
为什么不使用数组? E.g。
var1[0], var1[1], etc.
为您管理的每个设备使用数组元素。
你可以用宏做一些技巧,但我认为如果你使用数组代码会更清楚。
即使变量位于无法更改的库中,也可以在初始化函数中设置指向原始变量的指针数组。 E.g:
var1[0] = &var1_0;
var1[1] = &var1_1;
然后,function_x成为函数,并接受设备索引的参数。
答案 1 :(得分:0)
你说他们有不同的变量,在这种情况下,这将是一个重载函数的简单情况。您的示例意味着您希望从数据库中获取该函数,在这种情况下您需要使用函数指针。另一个选择是你有一个函数,你传递一个句柄(或一些这样的)(以及你的参数)来识别它是什么设备。