我继续收到我的bool testValue
的奇怪意外值。我一直在接收随机数,因为我相信它正试图访问另一个内存区域。我预测这是我的testNumber()
函数中的代码设置方式,但我不确定如何解决它。这是我的逻辑。
我已将ok
设为true。现在,我将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 <<;
输出:
85
答案 0 :(得分:6)
你对如何使用指针实现引用语义有一个基本的误解。您希望通过指针更改指向的内容:
*pOK = ok;
但是,C ++实际上通过引用类型本身支持引用语义,这可能更好:
void testNumber(bool & OK, int n)
{
OK = true;
// ...
}
但更好的是,只需返回一个布尔:
bool testNumber(int n) { /* ... */ }
if (testNumber(x)) //... etc.