将结构向量传递到函数中
passing a vector of structs into a function
在程序中,在头文件中定义了以下结构:
\structs.h
#include <vector>
using std::vector;
using namespace std;
struct cell
{
double x;
vector<int> nn;
};
在一个单独的源文件中,我定义了函数:
\functions.cpp
# define _CRT_SECURE_NO_DEPRECATE
# include <stdio.h>
# include <iostream>
# include <math.h>
# include <vector>
# include "structs.h"
using namespace std;
void initial_position(vector<cell>& cluster, int n)
{
cell tmp;
for (int i = 0; i < n; i++)
{
tmp.x = 1;
cluster.push_back(tmp);
}
}
带有头文件:
//functions.h
# include <vector>
using std::vector;
void initial_position(vector<cell>& cluster, int n);
我希望在主脚本中调用此函数:
//main.cpp
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <vector>
#include "functions.h"
#include "structs.h"
using namespace std;
int main()
{
vector <cell> cluster;
int n = 100;
initial_position(cluster,n);
return 0;
}
但收到以下错误:
functions.h(4(:错误 C2065:"单元格":未声明的标识符
functions.h(4(:错误 C2923:"std::vector":"cell"不是参数"_Ty"的有效模板类型参数
functions.h(4(:错误 C3203:"分配器":非专用类模板不能用作模板参数"_Alloc"的模板参数,应为实际类型
main.cpp(14(: 错误 C2664:"void initial_position(std::vector &(":无法将参数 1 从
'std::vector>' 转换为 'std::vector &'
错误的根源是什么? 这一切似乎都得到了很好的定义。
Put
#include "structs.h"
到 functions.h 中,并使用包含保护保护结构体 .h 和函数 h,例如
#pragma once
如果可用。
add
#include "structs.h"
进入 functions.h 因为在 functions.h 编译器不知道单元格是什么。
只需交换
#include "functions.h"
#include "structs.h"
跟
#include "structs.h"
#include "functions.h"
由于单元格是在 structs.h 中声明的,并且在函数中是必需的。
或者更好的是,在functions.h中包含structs.h
您也不应该在标头中使用命名空间 std,这是不好的做法。它可能会导致一些令人讨厌的难以找到的错误,例如为什么"使用命名空间 std"被认为是不好的做法?
相关文章:
- 使用不带参数的函数访问结构元素
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 链表,反向函数,数据结构
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 需要帮助将结构数组传递给函数
- 使用cpp中的结构和函数的多个学生条目
- 如何传递带有通过引用传递的结构参数的函数?
- 在类构造函数中使用结构变量
- 在 c++ 中将变量作为结构构造函数中的引用传递
- 在类构造函数中定义结构变量的参数
- 如何在模板类函数中分配结构值?
- 我应该在C++中将这些结构用作参数化构造函数吗?
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 在结构外部调用指向函数的指针
- 函数:结构的数组
- C++错误:只能为对象和函数结构指定存储类
- 将libuv与函数结构一起使用,而不是函数回调
- 从c#调用c++函数-结构体,指针,函数指针
- 函数结构数组输入cin问题