C ++ - передача указателя в функцию - PullRequest
0 голосов
/ 17 марта 2012

Я продолжаю получать странные неожиданные значения для моего 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

1 Ответ

6 голосов
/ 17 марта 2012

У вас есть фундаментальное недопонимание того, как используются указатели для реализации ссылочной семантики. Вы хотите изменить вещь, которая указана на указателем:

*pOK = ok;

Однако C ++ фактически поддерживает семантику ссылок изначально через ссылочные типы , что может быть предпочтительным:

void testNumber(bool & OK, int n)
{
    OK = true;
    // ... 
}

Еще лучше, если просто вернуть bool:

bool testNumber(int n) { /* ... */ }

if (testNumber(x)) //... etc.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...