Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите с инициализацией массива структур во время объявления

68K
19 февраля 2013 года
BlGhost
24 / / 25.11.2012
Массив из структур типа IN_TYPE вложен в массив из структур OUT_TYPE :

Код:
typedef struct testone
{
    const char * Funcname;
        int param[3];
}IN_TYPE;

typedef struct testALL
{
    const char * DeviceName;
        TEST_ONE FunctionArray[10];
}OUT_TYPE;
Правильна ли будет следующая инициализация?


 
Код:
OUT_TYPE FunctionOneArray[]=
{
    {"Device1",
                {
                    {"Function1", {0,0,0} },
                    {"Function2", {0,0,0} },
                    {"Function3", {0,0,0} }
                },
    }
}

Может кому так понятнее...


 
Код:
{"Device1", {{"Fun", {0,0,0} }, {"Fun", {0,0,0} }, {"Fun", {0,0,0} }}}

Спасибо!!!!!
68K
19 февраля 2013 года
BlGhost
24 / / 25.11.2012
Ошибка, вместо TEST_ONE следует писать IN_TYPE. Но сути дела это не меняет...
446
19 февраля 2013 года
Meander
487 / / 04.09.2011
а конструктор, не?
392
20 февраля 2013 года
cronya
421 / / 03.01.2009
а такой геморрой делать обязательно?? и вообще typedef из си а не си++
ну а если уж мешать все, как то так:
Код:
typedef struct TestOne
{
    TestOne(unsigned int size)
    {
        name = NULL; Param = new int[size];
    }  
    char* name;
    int* Param;
}IN_TYPE;

typedef struct TestAll
{
    TestAll(char* nDevice, char* nName, unsigned int size)
    {
        device = nDevice;
        p = new IN_TYPE(size);
        p->name = nName;
        for(unsigned int idx=0; idx<size; idx++)
        {
            p->Param[idx] = idx+1;
        }
    }  
    char* device;
    IN_TYPE* p;
}OUT_TYPE;

int main()
{
    OUT_TYPE ob("Device1","Name1", 3);
    cout << ob.device << "\t" << ob.p->name << "\t";
    for(int idx=0; idx < 3; idx++)
    {
        cout << ob.p->Param[idx] << "\t";
    }
    delete[] ob.p->Param;
    delete[] ob.p;
    cout << endl;
    return 0;
}
Вообщем ООП учите ;)
68K
20 февраля 2013 года
BlGhost
24 / / 25.11.2012
Такой геморрой обязательно, потому что это как раз и С, а не С++))))))

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог