运营商问题 - >在VS2010中超载

时间:2010-11-04 23:25:40

标签: c++ visual-studio-2010 operator-overloading intellisense smart-pointers

我在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'
}

有没有人遇到过同样的行为?

0 个答案:

没有答案