我继续收到我的bool奇怪的意外值testValue
.我一直在接收随机数,因为我相信它正试图访问另一个内存区域.我预测我的代码是在我的testNumber()
函数中设置的,但我不确定如何解决它.这是我的逻辑.
我已经设定ok
为真.现在我分配的内存地址ok
为pOk
.
void TextBox::lengthTest(bool *pOk, int length) {
bool ok;
if (length < MAX_LENGTH) {
ok = true;
pOk = &ok;
} else {
ok = false;
pOk = &ok;
}
}
bool lengthTestBool = lengthTest(*pOk, length);
cout << lengthTestBool <<;
Run Code Online (Sandbox Code Playgroud)
输出:
85
Run Code Online (Sandbox Code Playgroud)
您对如何使用指针实现引用语义有一个基本的误解.你想改变的东西指向由指针:
*pOK = ok;
Run Code Online (Sandbox Code Playgroud)
但是,C++实际上通过引用类型本身支持引用语义,这可能是更好的:
void testNumber(bool & OK, int n)
{
OK = true;
// ...
}
Run Code Online (Sandbox Code Playgroud)
然而,更好的是简单地返回一个布尔:
bool testNumber(int n) { /* ... */ }
if (testNumber(x)) //... etc.
Run Code Online (Sandbox Code Playgroud)