通过引用传递-左值和向量 新到C++和处理个人项目,但有问题通过向量列表传递。
我需要一个可以调用的函数,将用户添加到正在运行的向量用户列表中。其中第一个参数是我通过引用添加到的列表,第二个参数是新用户的名称 也许我对左值和右值的理解是错误的。。。但是用户列表怎么不是左值呢?上面有明确的定义吗 我得到的错误是:通过引用传递-左值和向量 新到C++和处理个人项目,但有问题通过向量列表传递。,c++,vector,reference,g++,pass-by-reference,C++,Vector,Reference,G++,Pass By Reference,我需要一个可以调用的函数,将用户添加到正在运行的向量用户列表中。其中第一个参数是我通过引用添加到的列表,第二个参数是新用户的名称 也许我对左值和右值的理解是错误的。。。但是用户列表怎么不是左值呢?上面有明确的定义吗 我得到的错误是: error: invalid initialization of non-const reference of type 'std::vector<User*>&' from an rvalue of type 'std::vector<U
error: invalid initialization of non-const reference of type 'std::vector<User*>&' from an rvalue of type 'std::vector<User*>*'
User *current_user = add_user(&user_list, "Default User");
^
..\src\main.cpp:8:7: error: in passing argument 1 of 'User* add_user(std::vector<User*>&, std::string)'
User *add_user(vector<User *> &user_list, string name);
有关守则:
包括
包括
包括User.h
使用名称空间std;
用户*添加用户向量和用户列表,字符串名称;
int main{
向量用户列表;
用户*当前用户=添加用户和用户列表,默认用户;
姓名;
当前用户->添加新用户秒;
返回0;
}
用户*添加用户向量和用户列表,字符串名称{
user\u list.push\u back新用户名;
返回user_list.atuser_list.end;
}
用户列表是一个左值&用户列表不可用。这也是错误的类型。如果仔细检查错误消息,您会注意到类型末尾有一个额外的星号。您正在将指针std::vector*传递给需要引用std::vector&的函数。放下&
您的函数签名是通过引用传递用户列表。调用add_user时,您正在传递向量的地址。在函数调用中去掉向量上的-,您应该就可以了
另外,不要忘记删除您在add_friend call中新创建的内存和在push_back call中新创建的内存。我刚刚写了这句话,但也要使用user_list.back而不是user_list.atuser_list.end,这会产生编译错误。
User *current_user = add_user(user_list, "Default User");