• 3883阅读
  • 2回复

[提问]QT中自己机制定义了一个类,使用signal与slot [复制链接]

上一主题 下一主题
离线小鸟一只
 
只看楼主 倒序阅读 楼主  发表于: 2013-03-22
Qt中自己定义了一个类,使用signal与slot机制,这个类继承QObject,里面有一个自己定义的带参数的构造函数,还有一些设置private变量的函数,获取private变量值的函数,重载了=,==,!=等操作符,还声明了一下signal,最后还有一些private变量。具体代码如下,
class Devices : public QObject
{
      Q_OBJECT
public:
      Devices(QObject* parent = 0);
       Devices(QString DeviceName,bool role):        
                   deviceName(DeviceName),
                   cco_if(role){}    

     ~Devices();

     void  setDeviceName(QString DeviceName){ deviceName = DeviceName;}
     void setCcoIf(bool role) {cco_if = role;}

    QString getDeviceName(){ return deviceName;}

     bool getCcoIf(){return cco_if;}

    Devices& operator=(const Devices& dev)
     {
              deviceName = dev.deviceName;
              cco_if = dev.cco_if;
              return *this;
      }      

     bool operator ==(const Devices& dev)const
     {
                return (deviceName == dev.deviceName)&&
                           (cco_if  == dev.cco_if);
       }    

      bool operator !=(const Devices& dev)const
      {
                return !operator == (dev);
        }
       QString getHumanName(TU8* userHfid);
signals:  
      void finishUpgBin(int upg_bin);
       void finishUpgFw(int upg_fw);
        void finishUpgParam(int upg_param);
      
private:
        QString deviceName;
        bool cco_if;
            .
            .
            .
};




结果编译的时候出现以下错误
错误:C2248: 'QOject::QOject' : cannot access private member declared in class 'QObject',貌似是说QObject对象及派生类不能进行copy与赋值,当我把带参数的构造函数,与重载的运算符的代码都去掉时还是报这样的错,求解。多谢

离线lcl_data
只看该作者 1楼 发表于: 2013-03-22
是因为 Q_DISABLE_COPY(QObject)导致的。

去掉那些代码之后你的class是什么样子的?按道理来说去了就应该好了的
离线小鸟一只
只看该作者 2楼 发表于: 2013-03-22
回 1楼(lcl_data) 的帖子
是的,去掉带参数的构造函数,与重载的运算符的代码这些吗?去掉这些后还是报错。
快速回复
限100 字节
 
上一个 下一个