2012-11-05 93 views
-1

我正在使用C++項目(我是一個完整的C++ n00b),它使用根名稱空間訪問以下代碼行中的::tolower方法,但我更改了一些構建設置並出現錯誤。如何通過名稱訪問根名稱空間 - 而不是簡單的`::`?

CCString * CCBReader::toLowerCase(CCString * pString) { 
    std::string copy(pString->getCString()); 
    std::transform(copy.begin(), copy.end(), copy.begin(), ::tolower); 
    return CCString::create(copy.c_str()); 
} 

構建更改對於大多數項目都很重要,並且更改這些不是一個選項。所以作爲一種解決方法,我想嘗試在root命名空間中添加前綴。例如:

std::transform(copy.begin(), copy.end(), copy.begin(), rootns::tolower); 

這可能嗎?如果是這樣,怎麼樣?

由於許多你已經不理會我理想的解決方案是不可能的,並要求誤差,看是否可以解決它自己的方式是什麼,這裏是錯誤的相關部分:

error: '::tolower' has not been declared 
+0

有什麼錯誤? –

+0

這並不能解釋發生了什麼變化,也沒有解釋錯誤是什麼。建議的解決方案無法工作,而且很可能無法解決任何問題。 –

+1

'::'*是*根名稱空間,按名稱和完全限定...你得到了什麼樣的錯誤? –

回答

2

根名稱空間沒有名稱,因此沒有其他方法可以解決它。

相反,您將不得不重新檢查構建更改,也可能考慮得到的錯誤是什麼。這個錯誤可能不是真的關於命名空間。它可能在代碼的早期被其他一些問題觸發。

+0

謝謝 - 這是我正在尋找的直截了當的答案。 – Phil

相關問題