C ++如何使用相同的函数两次使用不同的名称和不同的变量名称

时间:2011-08-22 14:01:22

标签: c++ class templates function variables

我有一个命令设备的功能。此设备可用两次,因此我需要两个设备具有相同的功能。出于维护原因,我不想对函数进行两次编码(每个设备一次),因为那时我总是需要应用两次更改。

这些功能原则上是相同的,但应该适用于不同的变量。是否可以使用“变化”名称来实例化此函数,类似于模板但不包含类而是名称? 我试着提供一个例子。看起来应该是这样的。

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。 提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

为什么不使用数组? E.g。

var1[0], var1[1], etc.

为您管理的每个设备使用数组元素。

你可以用宏做一些技巧,但我认为如果你使用数组代码会更清楚。

即使变量位于无法更改的库中,也可以在初始化函数中设置指向原始变量的指针数组。 E.g:

var1[0] = &var1_0;
var1[1] = &var1_1;

然后,function_x成为函数,并接受设备索引的参数。

答案 1 :(得分:0)

你说他们有不同的变量,在这种情况下,这将是一个重载函数的简单情况。您的示例意味着您希望从数据库中获取该函数,在这种情况下您需要使用函数指针。另一个选择是你有一个函数,你传递一个句柄(或一些这样的)(以及你的参数)来识别它是什么设备。