2010-10-22 2 views
4

Я хотел бы инициализировать некоторые элементы структуры и массива в C++.Array и struct initialize in C++

В C вы можете сделать:

unsigned char array[30] = {[1] = 4, [20] = 4}; 
struct mystruct 
{ int i; 
    int j; 
} 
struct mystruct e = {.j = 2}; 

Но я не могу сделать это в C++. Есть ли способ реализовать такие назначенные инициализаторы?

+4

Это C99, а не C вообще ... –

+0

@Oli: Хотя это было 11 лет назад. Было бы неплохо не указывать ...:/ – GManNickG

+1

@GMan: Может быть, 11 лет назад, но есть еще много платформ, которые на самом деле не поддерживают C99 (встроенные источники на ум). Если кто-то скажет мне «С», я предполагаю, что они означают общий знаменатель всех диалектов. YMMV ... –

ответ

1

В конструкции C++ у структуры есть конструкторы (точно так же, как class), поэтому вы всегда можете включить свой var в них.

+0

Это структура, которая исходит из C lib, которую я не могу скомпилировать :(Но я думал об этом – jlanza

0

Его всегда хорошо инициализировать ВСЕ элемент в массиве или структуре, чтобы избежать многих ошибок.

Ниже может вам помочь.

инициализации для структуры

struct myStruct 

{ 

    int i; 

    int j; 

    myStruct() 
    { 
     j=10; //default Constructor  
    } 

}; 

инициализации для массива:

unsigned char array[5]; 

array[0]='A'; 

array[2]='C';