说我的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):对`addActivities(activity *,int&,int&)'的未定义引用 collect2:错误:ld返回1退出状态
答案 0 :(得分:0)
从函数内的&
前面删除var
:
function (int &var)
{
//Body
var += 1;
}
函数内部的&
充当地址运算符,这意味着您实际上是在递增var
的 address 而不是它指向的值。
另一种措辞方式:使用&
作为参数(就像对function(int &var)
所做的那样)意味着您实际上是在传递var
本身,而不是值。因此,当您在函数内部递增var
时,就不再需要对其进行引用,因为内部var
与传递到var
中的function()
(从例如在main()
中。
并且不要忘记函数的返回类型。您也可以使用递增运算符来递增var
,如下所示:
#include <iostream>
void increment(int &var)
{
var++;
}
int main() {
int num = 0;
increment(num);
increment(num);
std::cout << num << std::endl; // prints 2
}