C++如何将 STL 列表传递给函数
C++ how to pass an STL list to a function
我用C++编写了以下代码。函数"change_list"的声明给出了一个错误:"不允许使用不完整的类型"和"标识符"列表"未定义"。你知道为什么吗?我只是遵循了这篇文章中的答案:C++将列表作为函数的参数传递
#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
或在#include<list>
之后的某个地方放置一个using std::list
.
您的代码中有两个问题:
- 你在main中使用了命名空间std,要么全局使用std(不好的做法(,要么使用std::list。
-
在函数 change_list 中,推送有效的 Point 类型指针,您正在推送一个整数。
void change_list(std::list<Point*> &mylist){ // ERROR!!! mylist.push_back(initPoint(8, 8)); }
相关文章:
- 如何在C++中泛化调用函数列表?
- 不带初始值设定项的构造函数列表,其中包含带有已删除构造函数的对象
- 具有可变参数的std ::函数列表如何工作
- 空向量的构造函数列表初始化
- C++ 中的构造函数列表
- 为什么初始化构造函数列表参数时会发生异常?
- 完美转发函数以构建函数列表类
- 如何在 c++ 中将函数列表应用于字符串
- 什么是结构开头的函数列表指针,称为 c++
- <函数列表>的多重定义
- 指向函数(列表)的指针
- 如何使用Boost预处理器获取类函数可访问的函数列表
- 避免使用容器调用函数列表
- 提取头文件中的函数列表
- 提升::p tr_vector 成员函数列表
- 完整的函数列表,来自c ++的MS Word命令
- 获取DLL中定义的函数列表
- 在运行时获取名称空间中的函数列表
- 如何在类构造函数列表中初始化结构
- 在c++中使用函数列表来调用async