Установка значения по умолчанию для Bool по ссылке - PullRequest
0 голосов
/ 15 февраля 2012

Как мне назначить значение по умолчанию для bool, который является ссылкой?

У меня есть такая функция:

void someFunction(bool a = true, bool& b)
{
 if(a)
   b = false;
 else
   std::cout << "nothings changed" << std::endl;
}

Как мне назначить значение по умолчанию для b вэтот контекст?

void someFunction(bool a = true, bool& b = false)

не будет работать.Так как же это сделать?

Ответы [ 2 ]

5 голосов
/ 15 февраля 2012

Вы не можете инициализировать неконстантные ссылки со значениями. Вам нужна переменная:

bool dummy_variable;

void someFunction(bool a = true, bool& b = dummy_variable)
{
    // ...
}

Но, вероятно, было бы гораздо разумнее просто вернуть bool:

bool someFunction(bool a = true)
{
    return !a;
}

Тогда клиент все еще может решить для себя, хочет ли он игнорировать результат или нет.

0 голосов
/ 15 февраля 2012

Вы не можете привязать временный объект к неконстантной ссылке. Вам нужно использовать не временный объект:

bool bDefaultVal = false;

void someFunction(bool a = true, bool& b = bDefaultVal)
{
    ...
}
...