我需要调用包含很多个案的函数。
我想传递一个可以引用不同数组的变量。
这个例子更清楚地说明了我想要实现的目标:
void bob(int debut, int fin, string flag){
string arrayflag = "pfhistory_FR_" + flag;
for (i = debut; i < fin; i++){
std::cout << arrayflag[i].DP << endl
}
};
答案 0 :(得分:1)
如果你想要一个可以引用不同数组的变量,你需要一个2D数组。 2D数组可以被认为是数组数组,您可以使用变量索引数组。
答案 1 :(得分:1)
粗略地说C ++是一种静态绑定语言。这意味着在编译时解析对象,而不是运行时。因此,您尝试做的事情在C ++中是不可能的,但必须手动实现。像这样:
void bob(int debut, int fin, string flag){
auto *arrayflag =
flag == "1" ? prhistory_FR_1 :
flag == "2" ? prhistory_FR_2 :
prhistory_FR_3;
for (i = debut; i < fin; i++){
std::cout << arrayflag[i].DP << endl
}
};
但这有XY problem的所有标记。你可能会问一些完全不同的东西,除了你认为这种方法是你真正问题的答案。但事实并非如此。无论你想做什么,真正的答案很可能是别的。你只需要找出你真正想要的东西。