我正在Visual Studio 2008中進行C++編程任務。我們與定義下列命名空間層次結構的文件中提供的(名字都只是爲了這個職位的緣故,我知道「命名空間XYZ命名空間」是多餘的):C++編譯器無法找到函數(名稱空間相關)
(MAIN-NAMESPACE){
a bunch of functions/classes I need to implement...
(EXCEPTIONS-NAMESPACE){
a bunch of exceptions
}
(POINTER-COLLECTIONS-NAMESPACE){
Set and LinkedList classes, plus iterators
}
}
主NAMESPACE內容之間的分裂一堆文件,由於某些原因,我不明白運營商< < Set和LinkedList完全在MAIN-NAMESPACE之外(但在Set和LinkedList的頭文件中)。 這裏是集版本:
template<typename T>
std::ostream& operator<<(std::ostream& os,
const MAIN-NAMESPACE::POINTER-COLLECTIONS-NAMESPACE::Set<T>& set)
現在,這裏的問題:我有以下數據結構:
Set A
Set B
Set C
double num
它定義爲在主命名空間中的類。當我創建該類的一個實例並嘗試打印其中一個集合時,它告訴我: 錯誤C2679:二進制'< <':找不到操作符,其類型爲'const'的右手操作數MAIN-NAMESPACE :: POINTER-COLLECTIONS-NAMESPACE :: Set'(或者沒有可接受的轉換)
但是,如果我只寫一個main()函數,並創建Set A,填充它並使用operator- it作品。
任何想法是什麼問題? (注意:我嘗試過使用和包含我能想到的任何組合)。
如果您可以創建一個小而完整的示例來展示問題,以便您可以發佈所有代碼,那麼找到答案會更容易。只要你給的細節,可能會有很多錯誤。 – 2009-01-30 00:12:43
也許如果你粘貼導致錯誤的代碼... – SoapBox 2009-01-30 00:22:19