这就是我想要完成的事情:
class Schedule
{
public:
enum day{MON, TUE, WED, THU, FRI, SAT, SUN};
void isWeekend(day &dayOfWeek=SUN);
}
我正在尝试在调用isWeekend
的函数中检索日期,将其默认为“SUN”。
在VS2017上,这是我看到的错误:
initial value of reference to non-const must be an lvalue.
我错过了什么?
相同的函数在没有&
即
void isWeekend(day dayOfWeek=SUN)
答案 0 :(得分:3)
问题在于您将参数声明为非const左值引用(如错误消息所示)。左值基本上是可以分配的值,因此左值引用是对现有对象的引用。因此, SUN 不是左值,因此不能用于初始化左值引用。如果您将现有变量声明为左值引用,则调用者必须使用现有变量调用此方法。所以删除引用,因为如果这只是一个输入参数,这里不需要它。
有关详细信息,请参阅此处:http://en.cppreference.com/w/cpp/language/value_category