如何在main函数中获取整数输入并在任何类中创建该大小的数组?

时间:2015-08-24 07:50:13

标签: c++ arrays constructor

例如,

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]一样。     可以吗?我想是的,但我尝试通过构造函数,但没有把它弄好。有谁知道如何做到这一点?

3 个答案:

答案 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);
 }