Используя один из методов получения параметра, чтобы установить значение другого параметра в функции C ++? - PullRequest
3 голосов
/ 23 августа 2011

В функции C ++ могу ли я использовать один из методов получения параметра, чтобы установить значение по умолчанию другого параметра, следующего за ним? Например, если у меня есть класс followig Foo,

class Foo{
   public:
      setID();
      getID();
   private:
      string id;
}

Могу ли я написать функцию fooManipulator, как это,

int fooManipulator(Foo bar, string id = bar.getId());

Ответы [ 2 ]

3 голосов
/ 23 августа 2011

Нет, как уже было сказано, порядок вычисления аргументов функции не определен.

Однако вы можете легко добиться эффекта с такой перегрузкой:

int fooManipulator(Foo bar)
{
    return fooManipulator(bar, bar.getId());
}
2 голосов
/ 23 августа 2011

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

Например, в вашей функции fooManipulator аргумент, переданный параметру id, может быть оценен до того, как аргумент передан параметру bar. Это может сделать недопустимым использование bar в качестве аргумента по умолчанию для параметра id.

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