在函数c ++之间传递数组

时间:2013-12-09 09:29:46

标签: c++ arrays function class arguments

我环顾四周,找不到任何明确回答如何将数组从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已在程序中的其他地方声明并为其他功能工作,所以我并不担心这些,而且我已经遗漏了所有不必要的代码,例如我的包含,其余的程序编译好

提前致谢

3 个答案:

答案 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);
}