【发布时间】:2016-01-13 12:55:58
【问题描述】:
我经常遇到我希望能够创建一个函数来完成类似任务的情况。
编辑:
心中的任务是比较对象之间的成员变量。如果有一种方法可以编写一个函数,允许您将对象作为参数,并将特定的成员变量作为另一个参数进行比较,那就太好了。这将需要某种方式来表示或识别我想在每次调用函数时比较的特定成员变量。
这是一个示例类和对象来说明我的意思:
class MyObject {
int var1;
int var2;
int var3;
// Unwritten constructor that sets all member variables in order
};
MyObject obj1 (1, 2, 3);
MyObject obj2 (4, 3, 2);
下面是一组类似函数的示例,如果可以合并为一个函数,可以动态选择使用哪个成员变量:
int compareMemberVar1 (MyObject obj1, MyObject obj2) {
return max(obj1.var1, obj2.var1);
}
int compareMemberVar2 (MyObject obj1, MyObject obj2) {
return max(obj1.var2, obj2.var2);
}
int compareMemberVar3 (MyObject obj1, MyObject obj2) {
return max(obj1.var3, obj2.var3);
}
这些显然会像这样使用:
int var1max = compareMemberVar1 (obj1, obj2);
int var2max = compareMemberVar2 (obj1, obj2);
int var3max = compareMemberVar2 (obj1, obj2);
这是我希望能够编写来替换上述 3 的那种函数:
int compareAnyMemberVar (MyObject obj1, MyObject obj2, /*representation of memberVar*/) {
return max(obj1./*memberVar*/, obj2./*memberVar*/);
}
以及对应的mock用法:
int var1max = compareAnyMemberVar (obj1, obj2, /*representation of Var1*/);
int var2max = compareAnyMemberVar (obj1, obj2, /*representation of Var2*/);
int var3max = compareAnyMemberVar (obj1, obj2, /*representation of Var3*/);
编辑:
在上面,我试图在每次调用时使用相同的函数来比较不同的成员变量。因此 /VarX 的表示/ 部分将是表示或标识我这次要访问的成员变量的某种方式。
这可能吗?如何?提前感谢您提供的任何帮助,
皮特
【问题讨论】:
-
您在寻找函数指针吗?我最终不确定你想要达到什么目标。
-
我明白为什么我的问题令人困惑。我想对我所追求的更简单的解释是,一种表示/识别对象成员变量的方法。然后可以将该表示或标识传递给函数或以其他方式访问该时间所需的特定成员变量。我将编辑我的问题并尝试使其更清晰
-
还有成员变量指针可用。
标签: c++ function object compare member