Russian Qt Forum

Qt => Общие вопросы => Тема начата: DenisPA от Апрель 19, 2011, 17:10



Название: Указатели в КЮТЕ
Отправлено: DenisPA от Апрель 19, 2011, 17:10
Вот кусочек кода:

Код:
unsigned int F1(QByteArray * arr, int start){
    unsigned int rez;
    rez  = arr[start] * 256;
    rez += arr[start + 1];
    return rez;
}

F2(){
QByteArray a;
unsigned int r = F1(&a, 0);
}

Но почему оно не компилируется???

rez  = arr[start] * 256;
rez += arr[start + 1];

Для каждой красной строчки:

1) /home/...QtSDK/Desktop/Qt/473/gcc/include/QtCore/qbytearray.h:365: ошибка: ‘QByteArray::operator QNoImplicitBoolCast() const’ is private
2)/home/.../test.cpp:18: ошибка: within this context


Название: Re: Указатели в КЮТЕ
Отправлено: mutineer от Апрель 19, 2011, 17:22
Код:
(*arr)[start]
вот так сделай


Название: Re: Указатели в КЮТЕ
Отправлено: DenisPA от Апрель 19, 2011, 17:30
Спасибо! Все получилось!
Как то забыл про это :)


Название: Re: Указатели в КЮТЕ
Отправлено: kuzulis от Апрель 19, 2011, 17:31
или
Код
C++ (Qt)
quint16 F1(const QByteArray  *arr, int start){
   quint16 rez = arr->at(start++) << 8;
   rez += arr->at(start);
   return rez;
}
 
F2(){
QByteArray a;
quint16 r = F1(&a, 0);
}

Хотя, в данном случае, лучше в F1 передать указатель на данные в виде: const *char


Название: Re: Указатели в КЮТЕ
Отправлено: DenisPA от Апрель 19, 2011, 17:35
О! Спасибо это удобнее!