例如,
class Quota{
private:
int t_quota, intake, ID[];
float percentage[];
};
这是我要修改的课程。这里是主函数,我将从中传递一个整数值来设置类Quota中两个数组的大小。
int main(){
int intake;
cout<<"Enter the total number of students who took the test this session of 2015, September: ";
cin>>intake;
Quota qr(intake);
}
我想在这里做的事情就是制作两个数组的大小即可。 ID[]
和percentage[]
'摄入量'。如同ID[intake]
,percentage[intake]
一样。
可以吗?我想是的,但我尝试通过构造函数,但没有把它弄好。有谁知道如何做到这一点?
答案 0 :(得分:1)
您无法创建在编译时未知的固定大小的数组。 这意味着您需要在构造函数中分配所需大小的数组,然后在析构函数中释放它。
但我建议将std::vector
用于此目的。
class Quota{
Quota(const int size): ID(size), percentage(size)
{
}
private:
int t_quota, intake;
std::vector<int> ID;
std::vector<float> percentage;
};
答案 1 :(得分:0)
实际上,我们应该避免在c ++中使用低级数据结构,例如array
。您应该使用vector<int> ID, vector<float> percentage
,而不是ID[], percentage[]
。然后,您可以在ID and percentage
的构造函数中设置Qouta
的大小。例如:
Quota::Quota(const int& intake)
{
ID.resize(5); //set ID's size
percentage.resize(5);
}
我希望这可以帮到你。
答案 2 :(得分:0)
在运行时确定数组的大小时,无法在编译时初始化它。
可能你可以尝试首先分配它然后分配一个指针。 这会奏效。但我不确定它是否符合您的要求。
class Quota{
public :
Quota(int size);
int * allocate_ID(int size);
private:
int t_quota, intake;
int * ID;
float percentage[];
};
Quota::Quota(int size)
{
ID = allocate_ID(size);
}
int * Quota::allocate_ID(int size)
{
int * ID_arr = new int[size];
return ID_arr;
}
int main(){
int intake;
cout<<"Enter the total number of students who took the test this session of 2015, September: ";
cin>>intake;
Quota qr(intake);
}