Russian Qt Forum

Qt => Общие вопросы => Тема начата: kuzulis от Июнь 03, 2009, 10:52



Название: QMap добавление указателей
Отправлено: kuzulis от Июнь 03, 2009, 10:52
Доброго дня!

Подскажите, как добавить в QMap указатель на вновь созданный объект.

Делаю так:

Код:
....
....
QMap<int, TRegister *> reg0xMap;
....
TRegister *reg;
reg=NULL;
reg = new TRegister(rtype, raddr, 0);
...
       ...
reg0xMap[(int)raddr] = reg; // тут строка 272
 ...

а мне компилятор пишет:
Цитировать
....
modbuscontroller.cpp:272: error: non-lvalue in assignment
....


Название: Re: QMap добавление указателей
Отправлено: mugabe от Июнь 03, 2009, 10:56
это все в одной функции?
или совсем так случайно 272-ая строка оказалась в константной функции класса?


Название: Re: QMap добавление указателей
Отправлено: kuzulis от Июнь 03, 2009, 11:24
Ну,
Код:
QMap<int, TRegister *> reg0xMap;
определена в приватной секции заголовочного файла класса

а все остальное выполняется тут:
Код:
bool TModbusController::createReg(TRegisterType rtype, quint16 raddr) const
{
//проверяем есть ли уже такой регистр с адресом
if (findRegAddr(rtype, raddr)) return false;

TRegister *reg;
reg=NULL;
reg = new TRegister(rtype, raddr, 0);

switch (rtype) {
case Reg_0x:
reg0xMap.insert(raddr, reg); //строка 272 (тут уже я изменил с reg0xMap[(int)raddr] = reg ) и т.п.
break;
case Reg_1x:
reg1xMap.insert(raddr, reg);
break;
case Reg_3x:
reg3xMap.insert(raddr, reg);
break;
case Reg_4x:
reg4xMap.insert(raddr, reg);
break;
case Reg_6x:
reg6xMap.insert(raddr, reg);
break;
default: return false;
}
reg=NULL;
return true;
}

ну ф-я createReg объявлена как константная.. и чо делать?


Название: Re: QMap добавление указателей
Отправлено: kuzulis от Июнь 03, 2009, 11:26
все, решено.. сам понял касяк.. нужно убрать слово const :)