C++ C++;ostream_随附<&书信电报;运算符编译错误

C++ C++;ostream_随附<&书信电报;运算符编译错误,c++,solaris,C++,Solaris,我正在使用Solaris 10上的旧Solaris编译器编写一些遗留代码(这里没有新的C++0x;-) -bash-3.2$CC-V cc:Sun C++ 5.12 SunSuSSPARC 2011/11/16 我有一个带迭代器的第三方字典类 template<K, V> class DictIterator { public: DictIterator(TheDictClass<K, V>& collection);

我正在使用Solaris 10上的旧Solaris编译器编写一些遗留代码(这里没有新的C++0x;-)

-bash-3.2$CC-V

cc:Sun C++ 5.12 SunSuSSPARC 2011/11/16

我有一个带迭代器的第三方字典类

template<K, V>
class DictIterator
{
    public:
        DictIterator(TheDictClass<K, V>& collection);
        K key() const;
        V value() const;
        // advance the iterator. return true if iterator points to a valid item
        bool operator()();
    ...
};
模板
类词典
{
公众:
辞典编纂者(辞典类和文集);
K键()常数;
V值()常数;
//推进迭代器。如果迭代器指向有效项,则返回true
布尔算子();
...
};
我的代码应该遍历字典中的每一项,但有一个编译错误,我无法解释:

DictIterator iterator(theDictionary);
while(iterator())
{
    cout << iterator.key(); 
}
字典迭代器(字典);
while(迭代器())
{

cout操作符
dicterator
是一个类模板,因此如果没有更多的上下文,这是没有意义的:
dicterator迭代器(字典);
。还有
键()
是私有的。请尝试创建一个显示给我们看。您是否定义/重载了
键&
应该是
const键&
@n.m。我使用的是旧代码,而在旧代码中它不是const。如果您能回答为什么它必须是const,那么我洗耳恭听;-)
DictIterator iterator(theDictionary);
while(iterator())
{
    Key key(iterator.key());
    cout << key; 
}