gpt4 book ai didi

c++ - gdb 在单例的静态方法中没有显示 '' 这个''?

转载 作者:太空宇宙 更新时间:2023-11-04 14:41:32 26 4
gpt4 key购买 nike

我有以下情况。这是该类的精简版。我在 Qt creator 中运行它并在真实场景中使用 Qt。

class MyClass
{
public:
MyClass();
static MyClass *instance;
static void myMethod(int a, int b);
int name;
};

MyClass *MyClass::instance = 0;

MyClass::MyClass(){
if (instance)
exit(-1);
instance = this;
}

void MyClass::myMethod(int a, int b){
if(instance->name == a) qDebug() << "hello";
}

int main(int argc, char *argv[])
{
MyClass cls;
cls.myMethod(1,2);
}

我正在尝试通过使用调试器进入它来调试 myMethod。当我进入该方法时,只有 a 1b 2 在 watch 中可见,并且没有对 this 的引用实例

更新答案表明静态方法未绑定(bind)到对象,这就是为什么没有可用的 this 的原因。

在此实现中,静态方法访问 instance,这就是我希望在进入 myMethod 后在调试器中可用的内容。

我如何使它可用/可见?

最佳答案

静态方法实际上是在没有对象的情况下调用的。呼唤

MyClass cls;
cls.myMethod(1,2)

相当于

MyClass::myMethod(1, 1)

因此 myMethod 没有收到任何 this 值。

关于c++ - gdb 在单例的静态方法中没有显示 '' 这个''?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21776307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com