今天把在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。