我对C ++很陌生,我现在已经坚持了几个小时。我正在尝试为视频游戏相关体验计算器设置基础,但我无法解决这个问题。
的main.cpp
#include <iostream>
#include "Log.h"
using namespace std;
int main()
{
Log Logs;
enter code here
struct ChoppableLog Yew;
Logs.initialiseLog(Yew, 60, 175);
return 0;
}
Log.h
#ifndef LOG_H
#define LOG_H
struct ChoppableLog
{
int level;
int xp;
};
class Log
{
public:
void initialiseLog(struct ChoppableLog &par1_log, int par2_int, int par3_int);
Log();
};
#endif // LOG_H
Log.cpp
#include "Log.h"
#include <iostream>
using namespace std;
Log::Log()
{
}
void initialiseLog(struct ChoppableLog &par1_log, int par2_int, int par3_int)
{
}
我得到的错误是
C:\ Users \ Murmanox \ Documents \ C ++ \ C ++ Projects \ CodeBlocks \ Class Files Test \ main.cpp | 11 |未定义引用`Log :: initialiseLog(ChoppableLog&amp;,int,int)'|
如有必要,我可以发布更多详细信息。
答案 0 :(得分:1)
您必须使用其全名定义Log::initialiseLog
,如下所示:
void Log::initialiseLog(struct ChoppableLog &par1_log, int par2_int, int par3_int)
{ }
您正在做的是定义一个名为initialiseLog
的新的免费函数,而不是定义Log
的成员函数。
这使得成员函数未定义,并且在调用它时,您的编译器(以及技术上的链接器)将无法找到它。
答案 1 :(得分:1)
头文件中函数的定义应指定范围。在您的情况下,您应该在cpp文件中定义initialiseLog()
函数,如下所示:
void Log::initialiseLog(struct ChoppableLog &par1_log, int par2_int, int par3_int)
{
}