Russian Qt Forum

Программирование => С/C++ => Тема начата: Joss от Август 12, 2009, 20:46



Название: [Решено] Как узнать размер двумерного массива?
Отправлено: Joss от Август 12, 2009, 20:46
Что то я не догоняю, подскажите:

Код:
static QString settingNames[][3];

QString Settings::settingNames[][3] = {
    {QString("NotifyNewApp"), QString("checkBox_"), QString("GeneralTab")},
    {QString("PopupNotify"), QString("checkBox_"), QString("GeneralTab")}
};

Как узнать размерность массива?
Через sizeof не получается:
"error: invalid application of `sizeof' to incomplete type `QString[][3]'", если только не указать размер массива явно.


Название: Re: Как узнать размер двумерного массива?
Отправлено: Tonal от Август 13, 2009, 07:50
Код
C++ (Qt)
sizeof(settingNames) / sizeof(settingNames[0])
 
Не оно? :)


Название: Re: Как узнать размер двумерного массива?
Отправлено: Joss от Август 13, 2009, 10:39
Код
C++ (Qt)
sizeof(settingNames) / sizeof(settingNames[0])
 
Не оно? :)

Так вот если явно не указывать размер массива в объявлении, то компилятор выдает
"error: invalid application of `sizeof' to incomplete type `QString[][3]'"


Название: Re: Как узнать размер двумерного массива?
Отправлено: Igors от Август 13, 2009, 11:31
Код
C++ (Qt)
sizeof(settingNames) / sizeof(settingNames[0])
 
Не оно? :)

Так вот если явно не указывать размер массива в объявлении, то компилятор выдает
"error: invalid application of `sizeof' to incomplete type `QString[][3]'"

sizeof работать будет но в том же файле и после полного описания/инициализации. А иначе компилятор видит static QString[][3] как предварительное описание и sizeof не получить

Edit: можно добавить функцию с телом "в нужном месте" и вызывающую sizeof


Название: Re: Как узнать размер двумерного массива?
Отправлено: Joss от Август 13, 2009, 11:40
Аааа.... вот оно что. Спасибо! Не знал, что в том же файле!