QT 關於emit VS2008和VS2013的不同

今天把在VS2013中一個簡單的QT程序的頭文件和源文件直接添加到VS2008中,按道理是能通過編譯的,但是卻一直報類訪問權限的問題。

大致就是類ClassA中有一個函數static ClassA* getInstance(),有一個信號SignalA,然後我在類之外的一個函數FuncA中發射信號 emit ClassA::getInstance()->SignalA;

這個在VS2013 QT5是沒問題的,但是在VS2008 QT4中就不能通過編譯了。不知道是QT版本的問題,還是VS的問題,感覺應該是VS編譯器版本不同。

解決辦法就是在ClassA中再寫一個static函數發射信號,在FuncA中調用該函數。

一本QT書中寫: 只有定義該信號的類及其子類纔可以發射該信號。

感覺是不是VS2013優化了,而08纔是在遵守上面那條。

/*10/20*/

原因是一個默認是private,另一個默認是protected。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章