我正在上学,我应该编写一个函数来接受为公司工作的员工数量并将值返回给main。
然后我要写一个main调用的函数,它接受为公司工作的员工数量。然后,我应该询问每个员工在该职能中错过的天数,并返回错过的总天数。
我在第二部分遇到问题。我正在尝试使用员工数量创建一个数组作为元素的最大数量,但是我不断得到关于我在括号之间放入的变量的错误,即使它是一个常数!
我对阵列有点模糊,这是一个复习课程。如果我可以创建一个数组,我会使用for循环遍历每个元素并存储每个元素中错过的天数。
感谢您的帮助, 亚伦
#include <iostream>
using namespace std;
int noOfEmployees();
int daysAbsent(int);
int main(){
int employees;
employees = noOfEmployees();
daysAbsent(employees);
system("pause");
return 0;
}
int noOfEmployees(){
int employees;
cout<<"Please enter number of employees/n";
cin>>employees;
return employees;
}
int daysAbsent(int employees){
const int max = employees;
int daysMissed;
int workers [max];
}
答案 0 :(得分:3)
[...]我不断收到关于我在括号之间放入的变量的错误,即使它是不变的!
它必须是编译时常量;也就是说,编译器需要能够以int workers [max]
之类的方式静默替换int workers [10]
。在您的设计中,它取决于函数的参数,直到运行时才知道。
有几种不同的方法可以解决这个问题,但最好的方法是使用std::vector<int>
而不是int[]
:
std::vector<int> workers;
(确保#include <vector>
位于您的计划顶部。
答案 1 :(得分:1)
实际上,变量需要是一个编译时常量,而你的值不是。例如,文字整数类型或enum
。
在这种情况下,很容易使用vector
代替:
int daysAbsent(int employees) {
const int max = employees;
int daysMissed;
std::vector<int> workers(max);
cin>>daysMissed;
}
答案 2 :(得分:1)
int workers[max];
不是合法的C ++,因为数组的大小(max
)不是编译时常量。尽管变量max
在构造之后被声明为常量,但它在运行时从参数daysAbsent
构造,因此在编译时不知道大小。
如果您想要一个可变大小的数组,请尝试std::vector
:
#include <vector>
int daysAbsent(int employees) {
const int max = employees;
int daysMissed;
std::vector<int> workers(max);
cin>>daysMissed;
//Use workers somewhere in here
}
答案 3 :(得分:0)
您无法在C ++中声明可变大小的数组。你必须动态分配内存。使用new
运算符:
int* workers = new int[max];
完成后,应使用delete
运算符释放内存以防止内存泄漏:
delete [] workers;