Проблема с оператором-> перегружена в VS2010 - PullRequest
1 голос
/ 05 ноября 2010

Я реализовал небольшую платформу в 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'
}

Кто-нибудь испытывает такое же поведение?

...