在将整个结构数组传递给函数时遇到问题
Trouble passing a whole structure array to a function
我对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 );
相关文章:
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 我在 C++ 代码中遇到错误警告:控制到达非空函数 [-Wreturn 类型] 的末尾
- 我在C++中使用 getline() 函数时遇到问题
- 存储另一个函数返回的布尔数组时遇到问题
- 我在解决此错误时遇到问题.我正在努力在主函数中传递数组
- Winsock2:当我尝试发送带有空格的字符串时,该函数在遇到空格时似乎停止发送
- 将结构传递给函数时遇到问题
- 我不明白尝试使用字符串作为函数参数时遇到的错误
- 字数统计函数在将单词添加到一组唯一单词时遇到问题
- 尝试通过多个函数移动数组,但遇到了我不知道如何修复的错误
- 我在生成返回为数不多的模板化参数之一cpp的函数时遇到问题
- 学习C++并在早期示例中遇到错误(在非静态数据成员之前需要构造函数)
- 我在使用字符的函数时遇到了一些问题
- 返回带有另一个类的数据成员的构造函数?遇到转换错误?
- 我在理解 AVX 随机内部函数如何为 8 位时遇到一些问题
- 在使用 std::sort() 和 lambda 函数按属性对 ADT 的向量进行排序时遇到问题
- 在检查传递函数标识符时是否获得模板参数时遇到问题
- 调用基构造函数时遇到问题 - 获取读取访问冲突
- 在使用结构体和用函数填充其变量(使用指针)时遇到问题
- 遇到错误试图在功能型参数中使用void函数的错误