在Visual Studio中,由于各种原因,在调试 session 期间无法解析我的大多数对象和变量。这意味着我无法检查或监视对象或其调用它们的功能,这使得调试代码极为困难,因为我的大多数表达式都无法使用。将表达式添加到监视窗口时遇到的一些典型错误包括:

  • CXX0019:错误:类型转换错误
  • CXX0059:错误:左操作数是类而不是函数名
  • CXX0058:错误:找不到重载运算符

  • 这些表达式通常涉及重载的运算符和/或模板类对象。

    为什么会这样呢?您如何解决?

    最佳答案

    您遇到的错误是由于调试器中的限制所致,没有Daniel所暗示的错误。

    监视窗口无法调用重载的运算符。
    如果您有您不能将std::vector<int> vecSomething放入监视窗口,因为vecSomething[0]是重载运算符。因此,对于对象 vector ,无法在监视窗口中执行std::vector<int>::operator[]。您可以编写vecObject[0].SomeMemberVariableOfObject。在Visual Studio的STL实现中,vecObject._Myfirst[0].SomeMemberVariableOfObject是指向第一个元素的 vector 的成员。

    如果将自己的变量和类型添加到监视窗口,请直接将监视添加到数据成员。遵循像_Myfirst这样的指针链是没有问题的。

    编辑:

    实际上,Visual Studio可以在“监视”窗口中调用代码:
    http://geekswithblogs.net/sdorman/archive/2009/02/14/visual-studio-2008-debugging-ndash-the-watch-window.aspx

    因此,为什么不能使用重载运算符有点神秘。

    关于c++ - Visual Studio无法显示某些监视的表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1788702/

    10-13 06:28