2016-05-19 2 views
-1

У меня возникла проблема, когда Visual Studio подчеркивает код, который Im довольно уверенно не в ошибке (т. Е. Компилируется и запускается). Я использую Visual Studios Professional 2013 и C++ - это язык. Вот мои коды:Visual Studio показывает ошибку, которая не существует

WindowMgr.h файл:

class Screen; 
class WindowMgr { 
public: 
    void clear(int ind); 
private: 
    std::vector<Screen> screens; 

// there's some other stuff in here too 
}; 

screen.h файл:

#include "WindowMgr.h" 

class Screen { 
    friend void WindowMgr::clear(int ind); 
private: 
    std::string privateVal; 

// theres some other stuff in here 
}; 

WindowMgr.cpp файл:

#include "Screen.h" 

WindowMgr::clear(int ind) { 
    Screen &s = screens[i]; 

    // this is where the error is: 
    // VS telling me WindowMgr cant access privateVal 
    s.privateVal = ""; 
} 

Как я уже сказал, это код компилируется и запускается, как и следовало ожидать, потому что метод clear является другом Screen. Тем не менее, VS подчеркивает призыв к privateVal, говоря мне, что он недоступен. Это в основном просто раздражает, но если у кого-нибудь есть идеи, как исправить, я был бы благодарен.

Вещи, которые я пробовал до сих пор: очистка раствора и перестройка. Закрытие VS и повторное открытие. Отключаем мой ноутбук и снова включаем его снова.

+1

В Visual Studio 2010 у меня была IDE, показывающая, что красные squiggles в ** комментариях ** даже ... Это время от времени, и да, это ошибка в среде IDE. Иногда может помочь удаление файлов кеша IntelliSense. – MicroVirus

+0

IDE - это просто инструмент. Используйте его руководство, когда это полезно. Игнорируйте это, когда это не так. –

ответ

1

Я считаю, что это ошибка со старыми версиями Visual Studio, и что более новые версии постепенно исправили проблему.

Поскольку вы используете версию Professional, вы можете посмотреть, доступны ли какие-либо пакеты обновления для Visual Studio 2013; если нет, вы можете захотеть получить лицензию на Visual Studio 2015, в зависимости от того, что ваша школа/компания желает предоставить. В худшем случае вы можете попробовать использовать версию Community Visual Studio (которая бесплатна), хотя я не знаю, нарушит ли это какие-либо функциональные возможности/требования к лицензии.

+0

Или он мог просто игнорировать «красные squiggles» как ненадежные - вот что они ... –

+1

@JesperJuhl Вообще говоря, я обычно не рассматриваю «Игнорирование» как приемлемый ответ, если все остальные варианты не исчерпаны и нашел желающих. Ложные Положительные эффекты в Intellisense загромождают среду IDE и затрудняют отслеживание реальных ошибок. – Xirema

+0

Несомненно. Я не согласен. Но вы действительно должны пожаловаться на Microsoft и заставить их исправить свое дерьмо. Что еще вы можете сделать помимо этого и игнорировать его? –

0

Парсер, который Visual Studio использует, чтобы дать вам «красные squiggles», не является настоящим компилятором. Итак, скомпилируйте свой код и посмотрите, хорошо ли это.

Просто потому, что ваша IDE указывает на то, что проблема не означает, что на самом деле она есть. Относитесь к подсказкам IDE, как ничто другое, - подсказки.

+1

Более конкретно, IntelliSense (источник «красных squiggles») использует модифицированную версию интерфейса EDG, которая полностью отделена от компилятора Microsoft, который был разработан полностью внутри компании. – 0x5f3759df

Смежные вопросы