我想有這樣的聲明:如何提供默認參數作爲此對象?
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