对Class::Function()的未定义引用

C++ error Undefined reference to Class::Function()

本文关键字:未定义 引用 Class Function      更新时间:2023-10-16

我是一个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:UsersMurmanoxDocuments c++ c++ ProjectsCodeBlocksClass Files Testmain.cpp|11|未定义引用' Log::initialiseLog(ChoppableLog&, int, int)'|

您必须使用其全名定义Log::initialiseLog,如下所示:

void Log::initialiseLog(struct ChoppableLog &par1_log, int par2_int, int par3_int)
{ }

你所做的是定义一个新的名为initialiseLog的自由函数,而不是定义Log的成员函数。

这使得成员函数未定义,并且,当调用它时,编译器(严格来说,是链接器)将无法找到它。

头文件中的函数定义应该指定作用域。在您的示例中,您应该在cpp文件中定义initialiseLog()函数,如下所示:

void Log::initialiseLog(struct ChoppableLog &par1_log, int par2_int, int par3_int)
{
}