我正在研究涉及STL及其跨平臺的大量使用的項目。在Windows上,我使用的是MSVC 2010 Pro,在Mac上,我在Snow Leopard的頂部安裝了XCode 4.2。
我的代碼看起來是這樣的:
m_sort.m_type.size() == 0 ? m_sort.m_type.push_back(SortObject(SORT_BY_NAME, true)) : m_sort.m_type.insert(it - 1, SortObject(SORT_BY_NAME, true));
其中m_sort.m_type是標準::矢量<>將被用於排序另一個的std ::矢量<>。
Visual Studio編譯好這段代碼:沒有警告,沒有錯誤。 但是,試圖編譯上了XCode這個代碼我得到這個錯誤:
Left operand to ? is void, but right operand is of type 'iterator' (aka '__normal_iterator')
是否有解決Mac上的錯誤一個簡單的方法? 爲什麼此代碼在Windows上成功構建? 或者,也許它在STL實現XCode for SL與MSVC在Windows上的區別?
謝謝。
解決這個問題的最簡單方法可能是明確的if分支。 (我假設三元運算符的要點是用一個表達式來計算其中一個表達式,但不是另一個,這不是正確的方式) – Xarn
如果這種情況發生*是相關的 - 這可能是XCode默認情況下不使用'libC++'標準庫實現 - 我知道你沒有使用Boost,但如果這有助於看看http://stackoverflow.com/a/20615086/368896 –
@Xarn,我打算表現明智嗎?還有「?」保存源代碼行。 ;-) – Igor