C ++错误对类:: Function()的未定义引用

时间:2014-05-03 01:30:37

标签: c++

我对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)'|

如有必要,我可以发布更多详细信息。

2 个答案:

答案 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)
{

}