【问题标题】:Passing a variable to function for reference an array into将变量传递给函数以将数组引用到
【发布时间】:2015-07-04 12:42:27
【问题描述】:
我需要调用包含很多案例的函数。
我想传递一个可以引用不同数组的变量。
这个例子更清楚地展示了我想要实现的目标:
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
}
};
【问题讨论】:
标签:
c++
variables
for-loop
scope
【解决方案1】:
如果你想要一个可以引用不同数组的变量,你需要一个二维数组。二维数组可以被认为是数组的数组,您可以使用变量对数组进行索引。
【解决方案2】:
粗略地说,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 的所有标记。您可能会问一些完全不同的问题,只是您认为这种方法是您真正问题的答案。但事实并非如此。无论你想做什么,真正的答案很可能是别的东西。你只需要弄清楚你真正在问什么。