Код С++ не удается скомпилировать после обновления XCode 5.0 → 5.1 "Первичное объявление класса не может иметь вложенный спецификатор имен"

У меня это в файле .h:

class Ogre::ManualObject;

Я не знаю, как он туда попал, но он всегда компилируется под несколькими компиляторами - до тех пор, пока XCode5.1 не добавит его в качестве ошибки.

У Apple снова изменился компилятор С++?

Ответ 1

Как предложил Джон, измените class Ogre::ManualObject; на namespace Ogre{ class ManualObject;}. У меня была точно такая же проблема (но с разными объявлениями), также с Ogre и Xcode 5.1. Изменено 3 строки, все сработало.

Ответ 2

Возможно, это никогда не было законным. Это будет зависеть от кода вокруг него (трудно сказать только на основе этой одной строки, не зная ссылочных точек). Смотрите этот поток SO.

По-видимому, вы не единственный, кто испытывает эту проблему после обновления XCode 5.1. См. Эту тему в разделе Scaleform (autodesk.com). Однако я не мог найти ничего связанного в примечаниях к выпуску XCode или LLVM/clang.