我正在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