C++ C++;,将本地定义的结构链接到外部函数
我的任务是在我的C++ C++;,将本地定义的结构链接到外部函数,c++,struct,C++,Struct,我的任务是在我的main()函数中定义struct,但在其他文件中使用它。如果我在头文件中定义了struct,我的代码就可以工作了,但是我不知道如何在main()中定义struct,并且仍然在给定范围之外使用它 我现在拥有的示例: 3个文件:main.cpp、header.h和function.cpp main.cpp 标题.h v2 #如果包含NDEF标题# #定义包含的标题 #包括 使用名称空间std; 模板 void-myFunction(向量&); #endif//包括页眉 现在我收到
main()
函数中定义struct
,但在其他文件中使用它。如果我在头文件中定义了struct
,我的代码就可以工作了,但是我不知道如何在main()
中定义struct
,并且仍然在给定范围之外使用它
我现在拥有的示例:
3个文件:main.cpp
、header.h
和function.cpp
main.cpp
标题.h v2
#如果包含NDEF标题#
#定义包含的标题
#包括
使用名称空间std;
模板
void-myFunction(向量&);
#endif//包括页眉
现在我收到了错误:
错误:函数.cpp
的第7行未在此范围内声明“myStruct”
如何在function.cpp
中使用myStruct
,而在main.cpp
的main()
中仍然定义myStruct
?这样使用模板是正确的,在function.cpp中出现问题,对吗
您尝试在header.h中定义函数“myFunction(..”,
并删除function.cpp,此程序将运行良好
如果必须在function.cpp中实现该功能,则必须创建一个模板类。不管怎样,要求您执行的操作毫无意义。C++不这样工作。别,别,别,好的,谢谢。我将避免使用和namepace std
。我之所以使用它,是因为它默认插入到Code::Blocks中。如果该结构仅在main.cpp中定义,那么myFunction
不能将它的向量作为parameter@EmilioGarcia@AlgirdasPreidžius在大多数情况下都是推荐的,但是有一些变通方法可以将template.h与template.cpp实现分离。来自同一来源的答案:“……不必将实现放在头文件中,请参阅此答案末尾的替代解决方案。”
#include <iostream>
#include "header.h"
using namespace std;
int main()
{
vector<myStruct> myVec;
myFunction(myVec);
return 0;
}
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
#include <vector>
using namespace std;
struct myStruct{
int typeInt;
string typeString;
double typeDouble;
};
void myFunction(vector<myStruct>&);
#endif // HEADER_H_INCLUDED
#include <iostream>
#include <vector>
#include "header.h"
using namespace std;
void myFunction(vector<myStruct>& myVec){
myVec.push_back(myStruct());
myVec[0].typeInt=5;
cout<<myVec[0].typeInt<<endl;
}
#include <iostream>
#include "header.h"
using namespace std;
int main()
{
struct myStruct{
int typeInt;
string typeString;
double typeDouble;
};
vector<myStruct> myVec;
myFunction(myVec);
return 0;
}
#ifndef HEADER_H_INCLUDED
#define HEADER_H_INCLUDED
#include <vector>
using namespace std;
template <typename myStruct>
void myFunction(vector<myStruct>&);
#endif // HEADER_H_INCLUDED