как инициализировать массив структур, имеющих константные переменные - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть массив struct, имеющий константные переменные;Я инициализирую с помощью списка инициализатора конструктора, но если я создаю массив этой структуры, как инициализировать все элементы массива этой структуры.если структура не содержит const var, то это легко сделать

, если структура не содержит const var, то это легко сделать

#include<iostream>
struct s_Nconst{
    int num;
    int x1;
    // s_Nconst(int);
};
int main(){
    s_Nconst sN2;
    sN2.num=5;
    std::cout<<"initial values of num\t"<<sN2.num<<std::endl;   

    //making array of s_Nconst struct
    s_Nconst sN3[sN2.num];

    for(int i=sN2.num-1; i>-1; i--,++sN2.num){
        sN3[i].x1= sN2.num;
        std::cout<<"sn3["<<i+1<<"]\t"<<sN3[i].x1<<std::endl;
    }

    return 0;
}

, но если предположить, что структура содержит const var, тогда я могу сделать один объект структуры, используя список инициализатора конструктора, но если я собираюсь сделать массив структуры, это дает ошибку

#include<iostream>

struct s_const{
    const int x1,y1,z1;
    static int num;
    s_const(int,int,int);
};
s_const::s_const(int x,int y, int z)
        :x1(x),y1(y),z1(z) {

    std::cout<<"initial values of x1,y1,z1\t"<<this->x1<<" "<<this->y1<<" "<<this->z1<<std::endl;   
}


/*struct s_Nconst{
    int num;
    int x1;
    // s_Nconst(int);
};
 s_Nconst::s_Nconst(int x)
        :num(x){

    std::cout<<"initial values of num\t"<<this->num<<std::endl;   
} */


int main(){

    int a,b,c;
    a=1;b=2;c=3;
    s_const s1(a,b,c);

    //array of s1 is giving error
    s_const sc[3];




    //s_Nconst s2(++c);
    //s_Nconst sN2;
    //sN2.num=5;
    //std::cout<<"initial values of num\t"<<sN2.num<<std::endl;   

    //making array of s_Nconst struct
    //s_Nconst sN3[sN2.num];

    //for(int i=sN2.num-1; i>-1; i--,++sN2.num){
    //    sN3[i].x1= sN2.num;
        std::cout<<"sn3["<<i+1<<"]\t"<<sN3[i].x1<<std::endl;
    //}

    return 0;
}

есть ли способ сделать массив изструктуры, имеющие константные переменные и как их инициализировать?

1 Ответ

4 голосов
/ 26 сентября 2019

Вы можете создать массив константных объектов, но они должны быть инициализированы.Например, для ваших структур это должно быть:

s_const sc[3] = {{1, 2, 3}, {3, 4, 5}, {6, 7, 8}};

На боковой ноте вы можете предпочесть std::array встроенным массивам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...