Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过引用传递-左值和向量 新到C++和处理个人项目,但有问题通过向量列表传递。_C++_Vector_Reference_G++_Pass By Reference - Fatal编程技术网

通过引用传递-左值和向量 新到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");