因此,在返回正确类型的变量时,我遇到了这个错误。它说的是&#34的效果;非const的初始值必须是左值"
任何人都可以帮我修改我的代码以正确返回给定索引处的字符吗?这是一个单独链接的项目BTW。
char& MyList::operator[](const int i)
{
if (i > size())
return 'z';
Node* temp = head;
for (unsigned int a = 0; a < i; a++)
{
if (a == i)
return temp->value;
temp = temp->next;
}
}
答案 0 :(得分:2)
问题在于:
return 'z';
'z'
求值为一个常量,该常量不能用作返回char&
的函数的返回值。
快速修复:
char& MyList::operator[](const int i)
{
static char z = 'z';
if (i > size())
return z;
Node* temp = head;
for (unsigned int a = 0; a < i; a++)
{
if (a == i)
return temp->value;
temp = temp->next;
}
}
答案 1 :(得分:1)
我想如果你想回归&#39; z&#39;在索引超出范围的情况下,你必须首先从它做一个左值。这可以通过在函数内使用值&#39; z&#39;声明一个静态const char来完成,然后返回它的名称。
然而,想想你正在尝试做什么 - 你将一个可修改的引用返回到一个静态const char(所以我甚至不确定它会编译) - 但从概念上讲它反正没有意义。
在这种情况下,您可能实际上想要抛出异常或类似内容。