2013-03-20 92 views
-1

我想製作一個模板函數來輸出boost :: circular_buffer的內容。 這裏是有問題的代碼:發生Print boost :: circular_buffer <T>

template <typename T> 
std::ostream& operator<<(std::ostream& os, const boost::circular_buffer<T>& cb){ 
    boost::circular_buffer<T>::const_iterator it; 
    for(it=cb.begin(); it!=cb.end(); it++){ 
     os << it; 
    } 
    os << std::endl; 
    return os; 
} 

以下錯誤:預先

need ‘typename’ before boost::circular_buffer<T>::const_iterator’ because ‘boost::circular_buffer<T>’ is a dependent scope 

THX。

+2

你甚至讀過錯誤嗎? – mfontanini 2013-03-20 14:29:08

+2

我認爲它和C++錯誤信息一樣清晰且具有啓發性;-) – NPE 2013-03-20 14:29:58

+0

這是少數幾個模板錯誤之一,它們讓你愛編譯器表現得很好。 – mfontanini 2013-03-20 14:32:49

回答

2

請有下一次看看錯誤信息,什麼是錯的非常清楚:之前的boost :: circular_buffer ::爲const_iterator

需要 '類型名稱'」,因爲 '提高:: circular_buffer'是一個依賴範圍

所以,是的,只是做了錯誤信息說:

typename boost::circular_buffer<T>::const_iterator it; 

您可以閱讀有關從屬名稱in this thread

+0

Thx爲關於從屬名稱的鏈接。 – Eric 2013-03-20 14:55:56

相關問題