我有一个简单的cpp项目,它有一个.cpp文件( a.cpp )和两个.h文件( h1.h和h2.h )。< / p>
在a.cpp中,我有:
#include "h2.h"
#include "h1.h"
在h1.h,我有:
double abc = fun1(a, b); //using fun1() here. a and b are string types.
在h2.h中,我有:
double fun1(string a, string b)
{ //definition
}
错误:在h1.h =&gt; fun1() in not declared in this scope.
查询是,我这样做吗?可以将函数定义放在头文件中吗?我应该在这里使用内联吗?
修改
这是h1.h
void checkForOneToOneSimilarity(vector <string> & folder1, vector <string> & folder2)
{
int i=0, j=0, l1 = folder1.size(), l2 = folder2.size();
//chunking(folder1[0]);
while(i < l1 && j < l2)
{
if(folder1[i] == folder2[j])
{
double similarity = fun1(folder1[i], folder2[j]);
i++;
j++;
}
else if(folder1[i] > folder2[j]) j++;
else i++;
}
}
答案 0 :(得分:1)
您已在h2.h中声明double fun1()
,
但你调用了函数double fun1(std::string, std::string)
编译器搜索未声明的定义double fun1(std::string, std::string)
。
您应该将h2.h中的函数标题更改为double fun1(string a,string b)
答案 1 :(得分:0)
你在 h2.h 中声明了 fun1()并调用了函数 h1.h 所以当编译器搜索 fun1时()它找不到它 尝试在“h1.h”文件中包含“h2.h”
答案 2 :(得分:0)
您可以将函数定义放在头文件中。 但这里有两件事是错的
您正在h1.h中调用fun1
,但它在h2.h中定义。所以h1.h看不到h2.h中的定义。
为了克服这一点,包括h2.h到h1.h
您的函数调用和定义未匹配。
double fun1(string a, string b)
{ //definition
}
double abc = fun1("some string 1", "some string 2");
<强>附加:强> 正确的三个文件应该是
h1.h
double addTwoStringNumbers (string a, string b)
{
double tot = atof(a.c_str()) + atof(b.c_str());
return tot;
}
h2.h
#include "h1.h"
void showValue()
{
double total = addTwoStringNumbers("2", "3");
std::cout << total << std::endl;
}
a.cpp
#include "h2.h"
int main()
{
showValue();
return 0;
}