我想声明这样的声明:
void Date::get_days_name(const Date& = this)
我会理解,如果没有提供参数,请使用此对象作为参数。出于某种原因,在VS中我得到了错误的信息:
'错误1错误C2355:'this':只能在非静态成员'
中引用知道我做错了吗?
答案 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
。