我的主类中有一个数组,它包含我需要打印出来的菜单列表对象。数组在main中声明并初始化。但是,我需要在子菜单功能中访问相同的数组。如果我将代码(用于打印输出值的循环)复制到子菜单,则不打印任何内容(可能是因为它无法访问原始数组并创建了一个新的空白数组)。有没有办法(不使数组成为全局变量)我可以在这个子菜单中访问数组?主菜单和子菜单功能都在同一个文件中,子菜单从main调用。
也许更简单地说,我可以使用范围分辨率来提升范围内的一个“级别”吗?
答案 0 :(得分:8)
您可以将数组作为附加参数传递给函数。
答案 1 :(得分:1)
如果我理解你的问题,你需要在另一个函数中访问一个函数中的数组吗?
将数组作为const引用传递给第二个函数。
#include <iomanip>
#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;
void print(const vector<int> &array)
{
for (int i = 0; i != array.size(); ++i)
{
cout << array[i] << " ";
}
cout << endl;
}
int main()
{
vector<int> myArray;
myArray.push_back(0);
myArray.push_back(1);
myArray.push_back(2);
myArray.push_back(3);
myArray.push_back(4);
myArray.push_back(5);
print(myArray);
return 0;
}
答案 2 :(得分:0)
相信我这是我写过的最脏的代码。
C ++ - 从主
#include<iostream>
using namespace std;
void foo();
int main(int argc, char* argv[],bool yes,int* arr=NULL)
{
cout << "Inside Main"<<endl;
if(0 != yes)
{
foo();
}
else
{
cout<<"Got that array at : "<< &arr <<endl;
}
return 0;
}
void foo()
{
cout << "Inside Foo"<<endl;
int billy [5] = { 16, 2, 77, 40, 12071 };
main(0,NULL,false,billy);
}
注意:MBennett的答案很好。 1
答案 3 :(得分:0)
我会尝试将子菜单作为参数传递给对象。