Название: Константные функции
Отправлено: demaker от Марта 18, 2014, 14:19
C++ (Qt) struct TekValOUT_SBU { float tec_value_sbu_1; float tec_value_sbu_2; float tec_value_sbu_3; float tec_value_sbu_4; float tec_value_sbu_5; float tec_value_sbu_6; char tec_value_sbu_7[8]; }; class ListModelBrowser: public QAbstractItemModel { Q_OBJECT public: explicit ListModelBrowser(QObject*parent = 0); virtual ~ListModelBrowser(); QString stroka(char *); public: int columnCount(const QModelIndex &parent) const; int rowCount(const QModelIndex &index) const; QVariant data(const QModelIndex &index, int role) const; QModelIndex index(int row, int column, const QModelIndex &parent) const; QModelIndex parent(const QModelIndex &child) const; // bool setData(const QModelIndex &index, const QVariant &value, int role); Qt::ItemFlags flags(const QModelIndex &index) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; //!!! void initRoot(QObject*); public Q_SLOTS: void setRoot(QModelIndex); void initRoot(QObject*); public: QObject*root; }; QVariant ListModelBrowser::data(const QModelIndex &index, int role) const { if (index.column() == 3 && (QVariant(element->metaObject()->className())).toString() == "Preference" ) { Preference *pref = dynamic_cast<Preference*>(element); Function *function = (Function*)(pref->pointFunction); if(function->typeFunction == Monitoring) { if(index.column() == 3) { Device *device = (Device*)(function->parent()); switch(index.row()) { case 0: return device->tvOBuf.tec_value_sbu_1; case 1: return device->tvOBuf.tec_value_sbu_2; case 2: return device->tvOBuf.tec_value_sbu_3; case 3: return device->tvOBuf.tec_value_sbu_4; case 4: return device->tvOBuf.tec_value_sbu_5; case 5: return device->tvOBuf.tec_value_sbu_6; case 6: return stroka((device->tvOBuf).tec_value_sbu_7); //!!!!!!!!!Ошибка???????????? default: break; } } } return QVariant(); } QString ListModelBrowser::stroka(char *data) { QString outStr; char strBufHex[8]; for(int i = 0; i<8; i++) { ::sprintf(strBufHex,"%d",(unsigned char)(data[i])); outStr.append(strBufHex); } return outStr; }
При компиляции выдается ошибка error: passing 'const ListModelBrowser' as 'this' argument of 'QString ListModelBrowser::stroka(char*)' discards qualifiers
Название: Re: Константные функции
Отправлено: Old от Марта 18, 2014, 14:25
Объявите метод stroka константным или не делайте его вообще членом этого класса.
Название: Re: Константные функции
Отправлено: demaker от Марта 18, 2014, 14:26
Объявите метод stroka константным или не делайте его вообще членом этого класса.
Объявлял метод константным,но не помогло
Название: Re: Константные функции
Отправлено: Old от Марта 18, 2014, 14:27
Делал но не помогло
Не может быть. Как делали?
Название: Re: Константные функции
Отправлено: demaker от Марта 18, 2014, 14:33
C++ (Qt) QString stroka(char *) const;
Название: Re: Константные функции
Отправлено: Old от Марта 18, 2014, 14:37
C++ (Qt) QString stroka(char *) const;
А что за ошибки были после этого?
Название: Re: Константные функции
Отправлено: demaker от Марта 18, 2014, 14:38
.\input\ModelView\ListModelBrowser.cpp:86: error: prototype for 'QString ListModelBrowser::stroka(char*)' does not match any in class 'ListModelBrowser' ..\input\ModelView\/ListModelBrowser.h:16: error: candidate is: QString ListModelBrowser::stroka(char*) const
Название: Re: Константные функции
Отправлено: Old от Марта 18, 2014, 14:39
.\input\ModelView\ListModelBrowser.cpp:86: error: prototype for 'QString ListModelBrowser::stroka(char*)' does not match any in class 'ListModelBrowser' ..\input\ModelView\/ListModelBrowser.h:16: error: candidate is: QString ListModelBrowser::stroka(char*) const
Ну так в cpp нужно тоже const добавить.
Название: Re: Константные функции
Отправлено: demaker от Марта 18, 2014, 14:40
Извините забыл в срр-файле const Спасибо
Название: Re: Константные функции
Отправлено: OKTA от Марта 18, 2014, 14:40
Всему виной использование неконстантного метода внутри константного?
Название: Re: Константные функции
Отправлено: demaker от Марта 19, 2014, 12:22
Всему виной использование неконстантного метода внутри константного?
Думаю что да :)
|