在我的 mainwindow.h 中,我有一个 QList m_qlServoList ,它应该存储指向 Servo 对象的指针:
QList<Servo* > m_qlServoList;
当我尝试将新的伺服指针 append 到 QList 时:
m_qlServoList.append(new Servo(iID, iBaudRate));
以下错误结果:
passing 'const QList<Servo*>' as 'this' argument of 'void QList<T>::append(const T&) [with T = Servo*]' discards qualifiers [-fpermissive]
The Servo class header looks as follows:
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;
};
如果有人能解释我在这里做错了什么,那就太好了。以及如何正确地将指针 append 到 Servo 对象。
最佳答案
虽然我们缺乏信息,但很可能您的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 *>
.
关于c++ - 将指向类的指针 append 到 QList QList<Class* >,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17503747/