我想在Application.cpp中使用Stats.cpp中的一个函数。这是我的代码片段:
在Stats.h中:
#ifndef STATS_H
#define STATS_H
class Stats
{
public:
void generateStat(int i);
};
#endif
在Stats.cpp中:
#include Stats.h
void generateStat(int i)
{
//some process code here
}
在Application.cpp中:
int main()
{
generateStat(10);
}
我得到一个"未解析的外部符号"然而,我不知道我还需要包含什么才能包含Application.cpp。有什么想法吗?
答案 0 :(得分:2)
在 Stats.cpp
中您需要定义generateStat
,如下所示:
#include Stats.h
void Stats:: generateStat(int i) // Notice the syntax, use of :: operator
{
//some process code here
}
然后创建类Stats
的对象,用它来调用公共成员函数generateStat
Stats s;
s.generateStat( 10 ) ;
使用以下方式构建应用程序:
g++ -o stats Stats.cpp Application.cpp -I.
答案 1 :(得分:0)
generateStat
是您Stats
课程的一部分。您需要实例化Stats
对象(以及Stats.h
类中main
的必要包含)
例如,
Stats stat;
stat.generateStat(i);
此外,您的函数定义需要包含类名Stats::generateStat
。
答案 2 :(得分:0)
同样的错误信息发生在2周前(在工作中)。
乍一看---试试:
void Stats::generateStat(int i) {
//some process code here }
缺少班级名称。因此,未解决。
btw关于你的标题---另一个问题,这个#ifndef指令不应该是必要的,因为你应该只在命名空间中声明一次Stats。
#ifndef CLASS_H
#define CLASS_H
#include "Class.h"
#endif
这是一个通用示例 - 可用于cpp文件。
编辑:现在,我看到了您的调用(您的主要方法)。您需要一个对象实例来调用您的方法。
Stats* stats = new Stats(); //add a default constructor if not done
stats->generateStat(77);
// any other stats stuff ......
// in posterior to the last use
delete(stats);
在标题中:
Stats::Stats(){}; //with an empty body - no need to write it again in the cpp file