2013-12-09 184 views
0

我環顧四周,找不到任何明確回答如何從函數1,類1到函數2,類2傳遞數組的地方。在函數之間傳遞數組C++

這是我的代碼。

遊戲類

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; 
    } 
} 

我知道,我會親bably必須聲明數組爲靜態的(不確定如何,或者它的含義),並且我將不得不以某種形式使用指針。

另外請注意,username和int a已經在程序中的其他地方聲明過並且用於其他功能,所以我並不擔心這些,並且我省去了所有不必要的代碼,例如我的包含程序編譯罰款

在此先感謝

+0

函數調用應該是這個樣子'user.setTicket(一,通過myNumbers,用戶名);' 。不是嗎? –

+0

使用指針+元素的數量OR(好得多)使用'std :: vector'。 – Marius

+0

是的,我認爲你是對的 – user3001499

回答

3

我建議使用std :: vector而不是普通數組。

有幾個方法可以做到這一點,一個是這樣的:在main方法

gameObject.userInputNumbers(); 
userObject.setTicket(value, gameObject.getMyNumbers(), username); 
+0

這工作感謝,將研究向量謝謝你的提示 – user3001499

1

您不能聲明在這裏:

user.setTicket(int a, myNumbers[6], username); 

相反,使用:

user.setTicket(a, myNumbers[6], username); 

而且,傳遞數組時,你並不需要包括數組長度:這裏http://www.cplusplus.com/doc/tutorial/arrays/

您的案例中發現

user.setTicket(a, myNumbers, username); 
0

例子這是你會怎麼做:

// 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); 
}