【发布时间】:2018-08-01 23:07:55
【问题描述】:
假设我在 main 中有一个变量,我们称之为 var。 我有一个函数,我希望能够在其中增加 var。
function (int &var)
{
//Body
&var += 1;
}
我得到错误:
需要左值作为赋值的左操作数。 我该如何解决这个问题?
编辑:
//In header file:
void addActivities(struct activity activityEntry[], int &activityIndex, int
&activityList);
//In Main:
struct activity activityEntry[LIST_SIZE];
int activityIndex = 0;
int activityList = 0;
//unrelated code...
case 1: addActivities(&activityEntry[activityIndex], activityIndex,
activityList);
//In actual function:
void addActivities(struct activity activityEntry[], int *activityIndex, int
&activityList)
{
//unrelated code...
activityList += 1;
}
然后报错:
Program3Main.cpp:(.text+0x12b): undefined reference to `addActivities(activity*, int&, int&)' collect2:错误:ld 返回 1 个退出状态
【问题讨论】:
-
只需使用
var += 1;我想知道我是否应该投票关闭打字错误。 -
当我删除 & 时,它告诉我对函数(var)的未定义引用
-
如果没有minimal reproducible example,很难提出建议。
-
看起来
addActivities()的函数定义需要三个参数:一个结构数组、一个指向 int 的指针,然后是一个 int(作为引用)。您似乎正在向它传递一个结构数组、一个 int 和另一个 int。这是假设错误是由您直接在//unrelated code...下方的调用引起的。 -
当我在参数中将引用的 int 更改为 int& 时,它告诉我:从 int* 到 int 的无效转换。应该更改它的哪个部分以使其匹配? (对于引用的 int?)
标签: c++ compiler-errors pass-by-reference lvalue