Как я это исправил (удаление файлов .ncb / .suo / .user и перестройки не помогло) ...
Я заметил следующую особенность, когда эта ошибка происходила в моем проекте VS 2008:
- Это произошло в одном диалоге + классе, а не в других.
- В файле класса .cpp для разбитого диалога селектор области содержал только элемент "(Global Scope)", никаких других строк (ожидаемый класс отсутствовал)
- Я также проверил файл класса .h, и селектор области был в порядке.
Сначала я исправил эту проблему в # 2(поясняется ниже), затем вышел из VS, удалил файлы * .ncb, * .suo, перезапустил VS, перестроил проект, и мастера снова начали работать.
Чтобы исправить проблему селектора области действия в # 2, я сначала сузилсяэто вплоть до заголовков, не включенных в файл класса .h, то есть у меня было несколько типов, используемых внутри объявления класса, но нет заголовка в файле .h, который объявлял эти типы.Поэтому, если я включу файл класса .h в чистый файл .cpp, он не скомпилируется.Остальная часть проекта компилировалась нормально, потому что все необходимые файлы были добавлены во все соответствующие файлы .cpp до .h класса.После того, как я добавил все необходимые заголовки в верхнюю часть класса .h (настолько чистый файл .cpp скомпилировался бы), селектор области действия в файле .cpp заполнился правильно и, в свою очередь, исправил мастер.
В sidenoteСуществует мнение, что не следует включать какие-либо другие файлы .h в какие-либо из файлов .h, и Microsoft, похоже, придерживается этого метода довольно часто (к счастью, не всегда).Обычно я придерживаюсь другой политики включения - всегда включать заголовки со всеми используемыми объявлениями в файл .h, поэтому, когда мне нужно использовать модуль, мне нужно включать только его файл .h.В том редком случае, когда это не происходило, мастер VS блокировал (или IntelliSense блокировал этот мастер).Это укрепляет мою приверженность этой политике включения.Единственное исключение из этой политики - не помещать какие-либо файлы stdafx.h, windows и MFC в файл .h модуля - это делается по-другому из-за предварительно скомпилированных заголовков.