如何将结构数组调用以函数
How to call a struct array to function?
我有一系列struct雇员,我试图在函数 readFile
中调用。
我尝试使用指针来打电话,但它们都失败了,并给我相同的错误消息。
#include <iostream>
#include <fstream>
using namespace std;
int readFile (ifstream *inFile, struct employee array[]);
int main () {
int size = 10;
struct employee {
string name;
int id;
float salary;
} array[size];
ifstream inFile;
readFile(&inFile, array);
return 0;
}
int readFile (ifstream *inFile, struct employee array[]) {
inFile->open("pay.txt");
if(inFile->fail()) {
cout << "fail";
exit(1);
} else {
cout << "success";
}
return 0;
}
我收到的错误消息是:
.cpp:16:25:错误:无法将'main((::雇员*'to'formemee*'for gright'2'转换为'int readfile(std :: ifstream*,雇员*('
readfile(&amp; infile,array(;
您的 struct employee
是 local 到您的 main
函数,而另一个是 global ,因此它不能将'main()::employee*'
转换为'employee*'
,因为两者都是不同种类。
将其移到外部,以在整个程序中具有统一的struct employee
,并在main
函数中创建struct employee
的本地对象(不是创建A Global variable 的好习惯(。
顺便说一句,在
C++
中,您无需在任何地方附加struct
使用已经定义的结构。您的原始帖子看起来更像是C
中的编程
#include <iostream>
#include <fstream>
using namespace std;
struct employee {
string name;
int id;
float salary;
};
int readFile (ifstream *inFile, employee array[]);
int main () {
int size = 10;
employee array[size];
ifstream inFile;
readFile(&inFile, array);
return 0;
}
int readFile (ifstream *inFile, employee array[]) {
inFile->open("pay.txt");
if(inFile->fail()) {
cout << "fail";
exit(1);
} else {
cout << "success";
}
return 0;
}
您的代码中有两个名为employee
的类。一个是在函数readFile
声明中声明(未定义(的全局名称空间。名为employee
的另一个类是在main
函数中本地定义的。这两种是绝对无关的类型。
这就是为什么编译器说它不能将main()::employee*
转换为employee*
:它试图从main
-局部类型转换为全局类型(当然是不可能的(。
您应该做的是将struct employee
的定义移动main
之外,以便main
创建全局类型的对象:
#include <iostream>
#include <fstream>
using namespace std;
struct employee {
string name;
int id;
float salary;
} array[size];
int readFile (ifstream *inFile, employee array[]);
int main () {
int size = 10;
employee array[size];
ifstream inFile;
readFile(&inFile, array);
return 0;
}
int readFile (ifstream *inFile, employee array[]) {
inFile->open("pay.txt");
if(inFile->fail()) {
cout << "fail";
exit(1);
} else {
cout << "success";
}
return 0;
}
还要注意,在C 中,编写struct employee
并不是(也不常见(,只有employee
就足够了(就像我在上面的代码中所做的那样(。与C中不同,没有"标签名称空间",类型名称使用与其他所有内容相同的范围。
- 如何用参数值调用函数(仅在运行时已知)
- 从python中调用C++函数并获取返回值
- 当使用通配符和null指针调用函数时,对输出的说明
- 从R调用C++函数并对其进行集成时出错
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 如何在qt中从另一个类调用函数
- 在 COUT 语句中使用 COUT 调用函数
- 如何从线程中的不同模块调用函数?
- C++从函数指针数组调用函数
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 如何在 C/C++ 中从外部库调用函数
- 如何使用运算符在同一行中多次调用函数
- 是否可以创建一个从不同类调用函数的线程?
- 无法为类成员调用函数
- 如何从另一个标头 c++ 调用函数
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 如何只允许在调用函数 B 后调用函数 A?
- 我可以这样调用函数吗?
- 如何在 c++ 的类中递归调用函数方法?
- 为什么在指向对象的迭代器上调用函数不允许我更改对象本身?