我环顾四周,找不到任何明确回答如何将数组从function1,class1传递给function2,class2的地方。
这是我的代码。
游戏类
void Game::userInputNumbers()
{
for (int i = 0; i < 6; i++)
{
std::cin >> myNumbers[i];
}
for (int i = 0; i < 6; i++)
{
std::cout << myNumbers[i] << " ";
}
}
主要
game.userInputNumbers();
user.setTicket(int a, myNumbers[6], username);
用户类
void User::setTicket(int i, int myNumbers[6], std::string username)
{
std::ofstream fout (username + "Ticket" + a + ".txt");
for (int i = 0; i < 6; i++)
{
fout << myNumbers[i] << std::endl;
}
}
我知道我可能不得不将数组声明为静态(不确定如何,或者它的含义是什么)以及我将不得不以某种形式使用指针。
另请注意,用户名和int a已在程序中的其他地方声明并为其他功能工作,所以我并不担心这些,而且我已经遗漏了所有不必要的代码,例如我的包含,其余的程序编译好
提前致谢
答案 0 :(得分:3)
我建议使用std :: vector而不是普通数组。
有几种方法可以做到这一点,一种是这样的:
gameObject.userInputNumbers();
userObject.setTicket(value, gameObject.getMyNumbers(), username);
答案 1 :(得分:1)
你不能在这里声明:
user.setTicket(int a, myNumbers[6], username);
相反,请使用:
user.setTicket(a, myNumbers[6], username);
此外,在传递数组时,您不需要包含数组长度:
user.setTicket(a, myNumbers, username);
答案 2 :(得分:0)
此处的示例http://www.cplusplus.com/doc/tutorial/arrays/
根据您的情况,您可以这样做:
// arrays as parameters
#include <iostream>
using namespace std;
void SetArray (int& arg[]) {
for (int i=0; i<arg.size(); ++i)
cin >> arg[i];
}
int main ()
{
int myNumbers[6];
SetArray(myNumbers);
}