看看这段代码:
template <typename K,typename T>
Pointer<typename Collection<T>::Iterator> BinaryTree<K,T>::GetBeginning() const
{
return new BinaryTreeIterator(this,BinaryTreeIterator::Position::atBeginning);
}
当我尝试使用 VSTS 2008 编译它时,我得到:
error C2244: 'BinaryTree<K,T>::GetBeginning' : unable to match function definition to an existing declaration
see declaration of 'BinaryTree<K,T>::GetBeginning'
2> definition
2> 'Pointer<Collection<T>::Iterator> BinaryTree<K,T>::GetBeginning(void) const'
2> existing declarations
2> 'Pointer<Collection<T>::Iterator> BinaryTree<K,T>::GetBeginning(void) const'
声明:
Pointer<Iterator> GetBeginning() const;
在课堂内。BinaryTree 间接继承自 Collection,BinaryTreeIterator 间接继承自 Iterator,两者都是各自容器的嵌套类。
您可以很容易地看到,即使在错误报告中,定义和声明也是相同的。这里真的有问题吗?
我发现微软发布了一个修复程序:“某些模板代码无法编译,安装 Visual Studio 2005 Service Pack 1 后出现错误 C2244”。但是我找不到对 VSTS 2008 的任何引用。
因此,首先我想检查是否有人一眼就能发现代码中的真正错误,如果是 VS 的错,有没有人知道上述修补程序是否是解决方案并且是否与 2008 年相关。