I would like to use one function from Stats.cpp in Application.cpp. Here are my code snippets:
我想从统计数据中使用一个函数。在Application.cpp cpp。下面是我的代码片段:
In Stats.h:
在Stats.h:
#ifndef STATS_H
#define STATS_H
class Stats
{
public:
void generateStat(int i);
};
#endif
In Stats.cpp:
在Stats.cpp:
#include Stats.h
void generateStat(int i)
{
//some process code here
}
In Application.cpp:
在Application.cpp:
int main()
{
generateStat(10);
}
I get an "unresolved external symbol" error however I don't know what I else I would need to include in order for Application.cpp. Any thoughts?
我得到了一个“未解决的外部符号”错误,但是我不知道我还需要包括哪些内容以便应用。任何想法吗?
3 个解决方案
#1
2
In Stats.cpp
在Stats.cpp
you need to define generateStat
like following :
您需要像以下那样定义generateStat:
#include Stats.h
void Stats:: generateStat(int i) // Notice the syntax, use of :: operator
{
//some process code here
}
Then create object of class Stats
, use it to call the public member function generateStat
然后创建类属性的对象,使用它调用公共成员函数generateStat。
Stats s;
s.generateStat( 10 ) ;
Build the application using :
使用以下方法构建应用程序:
g++ -o stats Stats.cpp Application.cpp -I.
g++ - o统计数据。cpp应用程序。cpp - i。
#2
0
generateStat
is part of your Stats
class. You need to instantiate a Stats
object (along with the necessary includes for Stats.h
in your main
class)
generateStat是您的Stats类的一部分。您需要实例化一个Stats对象(同时还需要包括统计数据)。h在你的主课上)
For example,
例如,
Stats stat;
stat.generateStat(i);
Also, your function definition needs to include the class name Stats::generateStat
.
此外,您的函数定义还需要包含类名Stats::generateStat。
#3
0
The same error msg occured 2 weeks ago (at work).
同样的错误发生在两周前(在工作中)。
At first glance --- Try:
乍一看---试试:
void Stats::generateStat(int i) {
//some process code here }
The class name was missing. Hence, unresolved.
这个类名不见了。因此,没有解决。
btw Concerning your header --- another issue, this #ifndef directive should not be necessary cause you should declare Stats only once in a namespace.
关于您的头——另一个问题,这个#ifndef指令不应该是必要的,因为您应该只在名称空间中声明一次统计信息。
#ifndef CLASS_H
#define CLASS_H
#include "Class.h"
#endif
This is a generic example - Usable in cpp files.
这是一个通用的例子,可以在cpp文件中使用。
EDIT: Now, I saw your invocation (main method in your case). You need an object instance to invoke your method.
编辑:现在,我看到了您的调用(在您的例子中主要的方法)。您需要一个对象实例来调用您的方法。
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);
In your header:
在你的头:
Stats::Stats(){}; //with an empty body - no need to write it again in the cpp file
#1
2
In Stats.cpp
在Stats.cpp
you need to define generateStat
like following :
您需要像以下那样定义generateStat:
#include Stats.h
void Stats:: generateStat(int i) // Notice the syntax, use of :: operator
{
//some process code here
}
Then create object of class Stats
, use it to call the public member function generateStat
然后创建类属性的对象,使用它调用公共成员函数generateStat。
Stats s;
s.generateStat( 10 ) ;
Build the application using :
使用以下方法构建应用程序:
g++ -o stats Stats.cpp Application.cpp -I.
g++ - o统计数据。cpp应用程序。cpp - i。
#2
0
generateStat
is part of your Stats
class. You need to instantiate a Stats
object (along with the necessary includes for Stats.h
in your main
class)
generateStat是您的Stats类的一部分。您需要实例化一个Stats对象(同时还需要包括统计数据)。h在你的主课上)
For example,
例如,
Stats stat;
stat.generateStat(i);
Also, your function definition needs to include the class name Stats::generateStat
.
此外,您的函数定义还需要包含类名Stats::generateStat。
#3
0
The same error msg occured 2 weeks ago (at work).
同样的错误发生在两周前(在工作中)。
At first glance --- Try:
乍一看---试试:
void Stats::generateStat(int i) {
//some process code here }
The class name was missing. Hence, unresolved.
这个类名不见了。因此,没有解决。
btw Concerning your header --- another issue, this #ifndef directive should not be necessary cause you should declare Stats only once in a namespace.
关于您的头——另一个问题,这个#ifndef指令不应该是必要的,因为您应该只在名称空间中声明一次统计信息。
#ifndef CLASS_H
#define CLASS_H
#include "Class.h"
#endif
This is a generic example - Usable in cpp files.
这是一个通用的例子,可以在cpp文件中使用。
EDIT: Now, I saw your invocation (main method in your case). You need an object instance to invoke your method.
编辑:现在,我看到了您的调用(在您的例子中主要的方法)。您需要一个对象实例来调用您的方法。
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);
In your header:
在你的头:
Stats::Stats(){}; //with an empty body - no need to write it again in the cpp file