我有派生QList<MyClass>
,成員QMutex
。Qt:派生QList中的QMutex成員<XYZ>,無法訪問QMutex成員編譯錯誤
class WaypointList : public QList<Waypoint> {
private:
mutable QMutex _mutex; /*!< Mutex for thread safety */
..
} // HERE COMPILE ERROR, in this line
編譯,我得到C2248: 'QMutex::operator =' : cannot access private member declared in class 'QMutex'
的原因是,QMutex
是不可拷貝(Q_DISABLE_COPY
,related SO Question)。這裏建議使用to make the member a pointer。 這是最好的辦法嗎?
備註:
- 當我在派生類
Q_OBJECT
使用QMutex _mutex
,它工作正常。任何想法,爲什麼我在這裏得到錯誤,而不是與Q_OBJECT
類? - 在其他語言中,我會將該成員聲明爲transient。其實我不是想要複製它。有沒有聲明只是忽略它?
- 或者正在寫作業/複製操作員更好的方法?
你說得對,我寧願保留「複製」,並在複製和分配不同線程時需要互斥體。我用自己的操作員給它試用(然後我會回來:-) –
就是這樣,歡呼聲。 –