Странная ошибка компиляции VC ++, C2244
Взгляните на этот кусочек кода:
template
Pointer BinaryTree::GetBeginning() const
{
return new BinaryTreeIterator(this,BinaryTreeIterator::Position::atBeginning);
}
Когда я пытаюсь скомпилировать его с помощью VSTS 2008, я получаю:
error C2244: 'BinaryTree::GetBeginning' : unable to match function definition to an existing declaration
see declaration of 'BinaryTree::GetBeginning'
2> definition
2> 'Pointer BinaryTree::GetBeginning(void) const'
2> existing declarations
2> 'Pointer BinaryTree::GetBeginning(void) const'
Декларация:
Pointer GetBeginning() const;
находится внутри класса. BinaryTree косвенно наследует от Collection, а BinaryTreeIterator косвенно наследует от Iterator, оба вложенных класса их соответствующих контейнеров.
Вы можете легко увидеть, что даже в отчете об ошибке и определение, и объявление идентичны. Здесь действительно что-то не так?
Я обнаружил, что Microsoft выпустилаисправление: "Определенный код шаблона не компилируется, и после установки Visual Studio 2005 с пакетом обновления 1 возникает ошибка C2244 ", Однако я не могНе найти ссылки на VSTS 2008.
Итак, сначала я хотел проверить, может ли кто-нибудь сразу заметить настоящую ошибку в коде, и еслис VS 's ошибка, кто-нибудь знает, является ли указанное исправление решением и актуально также для 2008 года.