C++ 如何将 STL 列表传递给函数

标签 c++ stl

我用 C++ 编写了以下代码。函数“change_list”的声明给出了一个错误: “不允许不完整的类型” 和“标识符“列表”未定义”。你知道为什么吗? 我只是遵循了这篇文章中的答案:C++ pass list as a parameter to a function

#include <iostream>
#include <list>

typedef struct Point {
    int x;
    int y;
} Point;

Point* initPoint(int x, int y) {
    Point* pt = (Point*)malloc(sizeof(Point));
    pt->x = x;
    pt->y = y;
    return pt;
}

void change_list(list<Point*> &mylist){   // ERROR!!!
    mylist.push_back(4);
}

int main()
{
    using namespace std;
    list<Point*> c1; // initiating a list
    c1.push_back(initPoint(1, 1));
    c1.push_back(initPoint(2, 2));
    c1.push_back(initPoint(3, 3));

    change_list(c1);

    for (Point* c : c1)
        cout << " " << c->x;
    cout << "\n";

    return 0;

}

最佳答案

问题是语句mylist.push_back(4) ,其中您传递一个整数,而 mylist期望一个 Point* .如果你这样调用它 mylist.push_back(new Point())它编译。顺便说一句:也许你应该写 std::list或放置 using std::list #include<list> 之后的某处.

关于C++ 如何将 STL 列表传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42920955/

相关文章:

c++ - C++:我在一种方法中得到一个迭代器,如何在另一种方法中通过迭代器修改原始列表?

c++ - 是否有关于更换 MS CRT 的最新引用资料?

c++ - 为什么带变量的左移与带常量的左移产生不同的结果?

c++ - 如何修复来自 getMemberNames() 的 JsonCPP 错误?

c++ - 无法在虚幻引擎中使用 std::vector

c++ - 是否可以按值删除队列元素?

C++ 按条款包含文件

c++ - 使用 constexpr 进行全局和局部变量初始化的区别背后的基本原理

c++ - STL 算法中跨函数边界的循环重新排序

c++ - 将结构上无序集中的选定字段存储到 vector