在C ++

时间:2018-03-21 17:47:16

标签: c++ enums

这就是我想要完成的事情:

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)

1 个答案:

答案 0 :(得分:3)

问题在于您将参数声明为非const左值引用(如错误消息所示)。左值基本上是可以分配的值,因此左值引用是对现有对象的引用。因此, SUN 不是左值,因此不能用于初始化左值引用。如果您将现有变量声明为左值引用,则调用者必须使用现有变量调用此方法。所以删除引用,因为如果这只是一个输入参数,这里不需要它。

有关详细信息,请参阅此处:http://en.cppreference.com/w/cpp/language/value_category