在VC ++调试器上计算表达式时,为什么会出现“成员函数不存在”错误?

时间:2009-06-26 22:46:40

标签: c++ debugging visual-c++

我在另一个DLL MyClass::myMethod()上有一个静态方法MyDll.dll。在我的代码中,我调用了这个方法,它编译并运行良好。

但是当我在即时窗口(或观察窗口)中尝试MyClass::myMethod()时,我总是得到:

MyClass::myMethod()
CXX0052: Error: member function not present

为什么?

更新:我发现当我使用context operator时,它有效:

{,,MyDLL}MyClass::myMethod()

我不确定为什么需要它,所以我要稍等一下,看看是否有人有一个很好的解释。

更新2 :我被要求提供更多信息。不幸的是,我所描述的几乎就是我所拥有的一切。这是第三方代码。该方法驻留在不同的DLL上,声明如下:

class MyClass
{
 public:
 // ...
 _declspec(dllimport) static const char *getDirectory(void);
}

,它被调用如下:

MyClass::getDirectory ()

我没有得到消息来源。它是在VC ++ 9下的Debug模式下编译的。

2 个答案:

答案 0 :(得分:2)

好吧,我不知道为什么,但是调试器不够聪明,不知道该类在另一个DLL中,所以你必须使用context operator明确告诉它:

{,,MyDLL}MyClass::myMethod()

答案 1 :(得分:0)

这可能是因为您的静态函数是内联定义的。

我对这堂课的考试:

class myclass
{
public:
    static int inlinetest() 
    { 
        return 0; 
    }
    static int test();
};

int myclass::test()
{
    return 0;
}

在我的即时窗口中给出了这个输出:

myclass::inlinetest()
CXX0052: Error: member function not present
myclass::test()
0