将指针附加到QList QList <class *> </class *>

时间:2013-07-06 14:11:03

标签: c++ pointers append const qlist

在我的mainwindow.h中,我有一个QList m_qlServoList,它应该存储指向Servo对象的指针:

QList<Servo* > m_qlServoList;

当我尝试将新的Servo指针附加到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]

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;
};

如果有人能在这里向我解释我做错了什么,那就太好了。以及如何正确地将指针附加到Servo对象。

1 个答案:

答案 0 :(得分:2)

虽然我们缺乏信息,但您的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 *>