如何提供默认参数作为此对象?

时间:2010-04-03 15:55:41

标签: c++ default-value

我想声明这样的声明:

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

我会理解,如果没有提供参数,请使用此对象作为参数。出于某种原因,在VS中我得到了错误的信息:

'错误1错误C2355:'this':只能在非静态成员'

中引用

知道我做错了吗?

2 个答案:

答案 0 :(得分:5)

你可以制作重载功能:

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

(顺便说一下,this是一个指针,而不是一个参考。)

答案 1 :(得分:1)

我喜欢Kenny的answer,但如果您愿意将参数从引用更改为指针,则可以使用一个函数执行此操作:

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