我的任务是在struct
函数中定义main()
,但在其他文件中使用它。如果我在头文件中定义struct
,我的代码可以工作,但我无法弄清楚如何在struct
内定义main()
并仍在其给定范围之外使用它。
我现在拥有的例子:
3个文件:main.cpp
,header.h
和function.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;
}
现在,这适用于我需要它做的事情。不幸的是,我告诉我无法在struct myStruct
内定义header.h
,而是必须在main()
的{{1}}内进行定义。
我尝试将代码更改为以下代码(main.cpp
未更改):
function.cpp
#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
第7行error: 'myStruct' was not declared in this scope
。
如何在function.cpp
中使用myStruct
,同时仍在function.cpp
的{{1}}中定义myStruct
?
答案 0 :(得分:0)
这种方式使用模板是正确的,这个问题出现在function.cpp中吗?
你试着在header.h中定义函数“myFunction(..)”, 并删除function.cpp,这个程序运行良好。
如果必须在function.cpp中实现该功能,则必须创建模板类。