我想有这样的声明:如何提供默认参数作为此对象?
void Date::get_days_name(const Date& = this)
,我会明白,如果没有参数提供使用该对象作为参数。出于某种原因,在VS我收到错误消息:
“错误1错误C2355:‘这个’:只能在非静态成员的内部参考”
任何想法,我做错了?
我想有这样的声明:如何提供默认参数作为此对象?
void Date::get_days_name(const Date& = this)
,我会明白,如果没有参数提供使用该对象作为参数。出于某种原因,在VS我收到错误消息:
“错误1错误C2355:‘这个’:只能在非静态成员的内部参考”
任何想法,我做错了?
你可以使重载函数:
void get_days_name(const Date&) const;
void get_days_name() const {
get_days_name(*this);
}
(顺便说一句,this
是一个指针,而不是一个参考。)
我喜欢肯尼的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可以自由地在任何Date
上运行,应该可以是static
。
是的,不错的选择。 – 2010-04-03 16:19:16
您正在编写非法的C++代码 - 您不能在该上下文中使用this。你应该将参数列表看作是在课程的“外部”。 – 2010-04-03 15:59:28
代码中没有足够的上下文。 get_days_name()是一个成员函数吗?你是否试图使用保留字“this”作为参数名称? – msw 2010-04-03 16:00:15
@Neil我怎样才能达到类似的效果? – 2010-04-03 16:00:38