如何从单独的函数调用结构
How to call struct from separate function?
#include <iostream>
#include <cmath>
using namespace std;
struct workers{
int ID;
string name;
string lastname;
int date;
};
bool check_ID(workers *people, workers &guy);
void check_something(workers *people, workers &guy, int& i);
int main()
{
workers people[5];
for(int i = 0; i < 5; i++){
cin >> people[i].ID;
cin >> people[i].name;
cin >> people[i].lastname;
cin >> people[i].date;
if(check_ID(people, people[i]) == true)
cout << "True" << endl;
else
cout << "False" << endl;
check_something(people, people[i], i);
}
return 0;
}
bool check_ID(workers *people, workers &guy){
for(int i = 0; i < 5; i++){
if(people[i].ID == guy.ID)
return true;
break;
}
return false;
}
void check_something(workers *people, workers &guy, int& i){
check_ID(people, guy[i]);
}
这是我的代码,它不是很好的例子,但我很快就写了它来表示我的问题,因为我的项目太大了。所以基本上,我想从不同的函数调用结构,但出现此错误: error: no match for 'operator[]' in guy[i]
这一行: check_ID(people, guy[i]);
在函数check_something
中。
在main
中,people
是一个数组。您people[i]
访问它的第 i
个元素,并尝试将其传递给位于函数局部变量 guy
位置的check_something
。然后,您尝试取消引用guy
- 它不是一个数组,而是一个对象实例。
int main()
{
workers people[5]; // <-- array
。
check_something(people /* <-- people */, people[i] /* <-- guy */, i /* <-- i */);
与
void check_something(workers *people, workers &guy, int& i){
check_ID(people, guy[i] /* <-- array access on single instance*/);
你实际上在第一个参数中传递了数组,人。你在这里不需要"家伙",因为它是people[i]
,不是吗?所以你可以做:
void check_something(workers *people, int& i){
worker& guy = people[i];
check_ID(people, guy);
或者只是
void check_something(workers *people, int& i){
check_ID(people, people[i]);
或
会工作,或者你可以通过
void check_something(workers* people, workers& guy) {
check_id(people, guy);
}
----编辑----
你的check_ID函数中还有一个类似python的错误。
if(people[i].ID == guy.ID)
return true;
break;
在Python中,这说:
if people[i].ID == guy.ID:
return True
break
你想要的是
if ( people[i].ID == guy.ID ) {
return true;
break;
}
或者只是
if ( people[i].ID == guy.ID )
return true;
(由于返回将退出函数,因此之后也说break是没有意义的)
>workers
没有重载的下标运算符,guy
数组也没有。因此,您不能调用[]
。创建数组或在guy
后删除[i]
。
check_ID(people, guy); //delete [i]
Guy 是一个参考,而不是一个指针。不能在引用上使用运算符 []。
相关文章:
- 无法调用结构内的成员函数指针
- 函数调用中的结构节点* 和节点* 有什么区别?
- 结构构造函数调用不明确
- C++调用 C 函数与 C 结构指针参数
- 使用泛型函数调用打印结构的所有嵌套成员变量
- 难以调用函数和结构之间的信息
- 如何从单独的函数调用结构
- Visual Studio报告对结构向量的push_back()函数调用出错
- 函数调用重置传递的全局结构的字段
- 函数从结构子级内部调用
- 调用函数中结构的构造函数,C++
- 调用结构构造函数后初始化的值是什么
- 结构参数在函数调用时损坏
- JNA 本机函数调用和具有双**指针/数组内存分配的结构
- 结构错误的构造函数(调用类的构造函数 denconstructor,用于填充结构)
- C++调用函数的结构对象
- 如何使容器的元素只能调用容器一个私有函数的结构
- 调用结构的虚函数时出现segfault
- 调用结构内部的成员函数指针之一
- 如何根据布尔类型成员函数的返回值调用结构成员函数