C++ 单例类指针赋值不';行不通
我有一个ABC类,它是singleton(这是C++) 当我这样做的时候C++ 单例类指针赋值不';行不通,c++,singleton,C++,Singleton,我有一个ABC类,它是singleton(这是C++) 当我这样做的时候 ABC *b = ABC::getInstance(); ABC* a; a=b; 然后,当我签入调试器时,b的值没有分配给a 在调试器中,a的值显示为0x00000000,ABC成员的所有垃圾值(VS 2008调试器) 我在debugger watch(调试器监视)窗口中执行了a*b,我看到了有效值,当执行a*a时,我看到了所有空值和垃圾值(这是在上述过程结束之后)a和b都是指针 他们所指的地址将是相同的,尽管他们的具
ABC *b = ABC::getInstance();
ABC* a;
a=b;
然后,当我签入调试器时,b的值没有分配给a
在调试器中,a的值显示为0x00000000,ABC成员的所有垃圾值(VS 2008调试器)
我在debugger watch(调试器监视)窗口中执行了a*b,我看到了有效值,当执行a*a时,我看到了所有空值和垃圾值(这是在上述过程结束之后)
a
和b
都是指针
他们所指的地址将是相同的,尽管他们的具体地址会有所不同
另一个原因可能是您正在以发布模式进行调试,并且之后没有使用变量
a
。在这种情况下,编译器可以决定省略a
的声明和赋值,您确定调试器执行了语句a=b代码>
调试器中当前突出显示的行尚未执行。因此,将控件移动到下一行并再次检查值
这听起来可能很愚蠢,但这是我现在唯一能思考的原因
另一个原因,摘自吕基安·格里戈尔的回答:
另一个原因可能是您正在以发布模式进行调试,并且之后没有使用变量a。在这种情况下,编译器可以决定省略a的声明和赋值
当您执行std::时会发生什么?我看不出有什么错误吗?调试器到底显示了什么?你试过打印地址了吗?代码应该可以正常工作(如果getInstance()
没有抛出任何异常)。指针的“特定地址”是什么?你是说他们的地址,&a
和&b
?是的,但我没有得到他们相同的地址…那么解决办法是什么呢?@seahorse为他们,还是从他们那里有区别。@thiton我是说&a
和&b
。这只是一个猜测。。。发布的代码应该可以正常工作。@seahorse如果是这种情况,请发布更多代码,并告诉我们您如何知道它们不指向相同的内容。请尝试在语句a=b
之后分配一个字符串,然后检查是否正确分配了字符串。如果是,请再次检查a
的值。+1询问用户在哪里测试该值。我立即想到的是“断点是在a=b
行上,还是在它之后?”。