在将整个结构数组传递给函数时遇到问题

Trouble passing a whole structure array to a function

本文关键字:函数 遇到 问题 结构 数组      更新时间:2023-10-16

我对c++和编程有点陌生。我正在制作一个旧gameboy版本的pokemon重制版本,这是出于乐趣,我在传递一个完整的结构作为论据时遇到了麻烦。

这是一个简短的版本,以突出我遇到的问题:

struct Enemy_Pokeman
{
    string opp_name;
    int num_pokeman;
    int pokeman_LVL;                  
};   
void pl_Pokeman(Enemy_Pokeman); 
void pokeman_data(string opp_name, int num_pokeman, int pokeman_ID[], int pokeman_LVL[],
                  int purpose)
{
    Enemy_Pokeman enemypokeman[num_pokeman];
    enemypokeman[0].opp_name = opp_name;
    enemypokeman[0].num_pokeman = num_pokeman;
    for(int i=0; i<num_pokeman; i++)
        enemypokeman[i].pokeman_LVL = pokeman_LVL[i];
    pl_Pokeman(enemypokeman);                   //Function call - Codeblocks detects error
                                            //on this line
}
void pl_Pokeman(Enemy_Pokeman enemy)        
{
    cout << endl;
}

对不起,如果这没有意义,我不想张贴整个事情,所以我把它切碎了一点。问题是它不接受Enemy_Pokeman作为参数。

函数pl_Pokeman只取Enemy_Pokeman类型,而您传入an array of Enemy_Pokeman

你更新pl_Pokeman function以接受数组作为输入:

void pl_Pokeman(Enemy_Pokeman enemy[], int arraySize);

template<typename T, size_t N>
void pl_Pokeman(Enemy_Pokeman (&enemy)[N]) 

你传递给你的函数整个数组的Enemy_Pokeman s,而不仅仅是一个元素。函数只需要一个元素。同样,你在一个函数中创建数组,所以它是一个局部变量。如果函数pokemon_data返回,该数组将被销毁。

对于单一结构-

当你将结构体作为参数传递时,你应该传递&操作符。

pl_Pokeman(&enemypokeman); // Fix 1

当你捕获它时,你需要用结构指针捕获它。

void pl_Pokeman(Enemy_Pokeman *); // Fix 2

For数组结构-

pl_Pokeman(&enemypokeman,size); // pass it with size

同时抓住

void pl_Pokeman(Enemy_Pokeman (*)[], int );
相关文章: