В моем mainwindow.h у меня есть QList m_qlServoList, который должен хранить указатели на объекты Servo:
QList<Servo* > m_qlServoList;
Когда я пытаюсь добавить новый указатель сервомотора в QList:
m_qlServoList.append(new Servo(iID, iBaudRate));
Следующие ошибки:
прохождение 'const QList<Servo *>'как' этот 'аргумент' void QList<T>:: append (const T) [with T = Servo *] 'отбрасывает квалификаторы [-fpermissive]
Заголовок класса Servo выглядит следующим образом:
class Servo
{
public:
Servo(const int &iID, const int &iBaudRate);
~Servo();
void write_data(Data const& data) const;
Data& receive_data() const;
private:
Data m_oData;
};
Было бы здорово, если бы кто-нибудь объяснил мне, что я здесь делаю не так. И как правильно добавлять указатели к серво объектам.
Хотя нам не хватает информации, вполне вероятно, что ваш QList<Servo *>
является const
,
Это может произойти, если ваш звонок был сделан с const
метод класса проведения QList
,
Давайте посмотрим на пример:
class MyClass
{
private:
QList<Servo *> m_qlServoList;
public:
void addServo(Servo *ptr) const /* Notice the const here */
{
m_qlServoList.append(prt);
}
};
/* from main */
MyClass c;
c.addServo(new Servo(iID, iBaudRate));
Этот код не будет компилироваться, потому что addServo()
метод const
, Который означает, что m_qlServoList
будет рассматриваться как const QList<Servo *>
,
Других решений пока нет …