程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Qt 5.0+ 中 connect 新語法與重載函數不兼容問題的解決方法,以及個人看法

Qt 5.0+ 中 connect 新語法與重載函數不兼容問題的解決方法,以及個人看法

編輯:C++入門知識

Qt 5.0+ 版本提供了 connect 的新語法,相比之前的語法新語法可以提供編譯期檢查,使用也更方便。可是使用過程中發現一個小問題——當某個 signal 和成員函數是重載關系的時候,qmake 無法辨別應該選哪一個導致編譯錯誤。

比如 QNetworkReply 中有這麼倆函數:

 
     NetworkError error()  
       error(QNetworkReply::NetworkError);

這時候你直接用新語法綁定,就編譯通不過。要解決這個問題有兩個選擇:

後一種這麼寫:

 QNetworkReply* MyClass* 
 
 
  (QNetworkReply::* connect(reply, sig, myObject, &MyClass::mySlot);

 

PS: 其實類似的問題,用 c++ 的同學一定都遇到過,c++ 這門語言,除非你使用一個非常保守的子集,否則它一定會出現意外情況,尤其是當你喜歡編寫某些語法糖的時候,標准裡面任何角落裡的某一個細節,都可能讓你的解決方案變得很尴尬。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved