C++ 左值作为赋值的左操作数(增加引用变量)C++;

C++ 左值作为赋值的左操作数(增加引用变量)C++;,c++,compiler-errors,pass-by-reference,lvalue,C++,Compiler Errors,Pass By Reference,Lvalue,假设main中有一个变量,我们称之为var。 我有一个函数,我希望能够在其中增加var function (int &var) { //Body &var += 1; } 我得到一个错误: 左值必须作为赋值的左操作数。 我怎样才能解决这个问题 编辑: 然后是错误: Program3Main.cpp:(.text+0x12b):对“addActivities(activity*,int&,int&)”的未定义引用 collect2:错误:ld返回了1个退出状态从函

假设main中有一个变量,我们称之为var。 我有一个函数,我希望能够在其中增加var

function (int &var)
{
    //Body
    &var += 1;
}
我得到一个错误:

左值必须作为赋值的左操作数。 我怎样才能解决这个问题

编辑:

然后是错误:

Program3Main.cpp:(.text+0x12b):对“addActivities(activity*,int&,int&)”的未定义引用
collect2:错误:ld返回了1个退出状态

从函数中的
var
前面删除
&

function (int &var)
{
    //Body
    var += 1;
}
函数中的
&
充当地址运算符,这意味着您实际上是在增加
var
的地址,而不是它所指向的值

另一种措辞方式:使用
&
作为参数(就像您对
函数(int&var)
所做的那样)意味着您实际上是在传递
var
本身,而不是它的值。因此,当您在函数内部递增
var
时,您不再需要对它的引用,因为
var
内部函数与传递到
function()
var
相同(例如,从
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
}
#包括
无效增量(int&var)
{
var++;
}
int main(){
int num=0;
增量(num);
增量(num);

std::cout Just use
var+=1;
我想知道是否应该投票关闭打字错误。当我删除&时,它告诉我函数(var)的未定义引用,很难建议在没有a的情况下做什么。它看起来像
addActivities()的函数定义
接受三个参数:结构数组、指向int的指针和int(作为引用)。您似乎正在向它传递一个结构数组、一个int和另一个int。这是假设错误是由您直接在
//不相关的代码…
下面的调用引起的。当我将引用的int更改为int&在参数中,它告诉我:从int*到int的转换无效。应该更改它的哪一部分以使其匹配?(对于引用的int?)没有返回类型,因为它不是一个真正的函数,为了简单起见,我只是这样做。当我去掉&,它告诉我对这个变量的引用未定义…@Hannahluise,我想。只是确定一下。@Hannahluise,你能给出给出这个错误的完整示例吗?整个事情很可怕,但我试图发布相关位
#include <iostream>

void increment(int &var)
{
    var++;
}

int main() {
  int num = 0;
  increment(num);
  increment(num);
  std::cout << num << std::endl; // prints 2
}