Как предоставить аргумент по умолчанию в качестве этого объекта? - PullRequest
1 голос
/ 03 апреля 2010

Я хотел бы получить объявление, подобное этому:

void Date::get_days_name(const Date& = this)

что я понимаю, что если аргумент не указан, используйте этот объект в качестве аргумента. По какой-то причине в VS я получаю сообщение об ошибке:

'Ошибка 1, ошибка C2355:' this ': на нее можно ссылаться только внутри нестатического элемента'

Есть идеи, что я делаю не так?

Ответы [ 2 ]

5 голосов
/ 03 апреля 2010

Вы можете сделать перегруженную функцию:

void get_days_name(const Date&) const;
void get_days_name() const {
  get_days_name(*this);
}

(Кстати, this - это указатель, а не ссылка.)

1 голос
/ 03 апреля 2010

Мне нравится ответ Кенни , но если вы хотите изменить параметр со ссылки на указатель, вы можете сделать это с помощью одной функции:

void Date::get_days_name(const Date* value_ = NULL) const
{
  const Data* value =
    value_ != NULL ?
    value_ :
    this;
  // the rest of the code operates on value.
}

Использование указателя более четко указывает на то, что value_ также является необязательным параметром.

Однако, get_days_name, вероятно, должно быть static, если оно может свободно работать с любым Date.

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