Я реализовал небольшую платформу в C ++, которую я использую в курсе, который я преподаю в колледже, чтобы помочь студентам выполнить свою домашнюю работу.Одним из наиболее ценных классов этой платформы является класс интеллектуальных указателей, который, как вы можете себе представить, перегружает оператор ->
.
Недавно я обновил VS2008 до VS2010, и иногда у меня возникают проблемы сintellisense после ввода оператора.Вместо того, чтобы показывать методы и поля, доступные в указанном типе данных, он показывает методы и поля класса интеллектуального указателя.Обратите внимание, что это происходит не всегда, но как только это происходит, это немного расстраивает, потому что я теряю много времени.
Испытывали ли вы какие-либо проблемы, подобные этой?Любая идея или предложение обойти это будет очень цениться.
Это может звучать как незначительная проблема, но это делает недействительным использование VS2010 в курсе, пока я не смогу решить это.Спасибо заранее!
РЕДАКТИРОВАТЬ
Мне удалось воспроизвести проблему в меньшем контексте.Предположим, у меня что-то вроде этого:
template <class T>
struct ptr
{
T* operator->(){ return 0; }
void otherMember() {}
};
template <class T>
struct node
{
T value;
};
template <class T>
void foo()
{
ptr<node<int>> pi;
ptr<node<T>> pt;
pi->value = 10; // OK, intellisense shows 'value'
pt-> // wrong! intellisense shows 'operator->()' and 'otherMember()', instead of 'value'
}
Кто-нибудь испытывает такое же поведение?