2

在我的 mainwindow.h 我有一个 QList m_qlServoList 应该存储指向伺服对象的指针:

QList<Servo* > m_qlServoList;

当我尝试将新的伺服指针附加到 QList 时:

m_qlServoList.append(new Servo(iID, iBaudRate));

以下错误结果:

传递 'const QList<Servo*>' 作为 'void QList<T>::append(const T&) [with T = Servo*]' 的 'this' 参数丢弃限定符 [-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;
};

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

4

1 回答 1

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 *>.

于 2013-07-06T15:11:42.510 回答