在分隔类时,使用cpp文件中的函数会导致错误

时间:2017-12-15 03:51:03

标签: c++ class header-files

所以我刚刚学会了如何分离课程,youtube totourial强调要做很多,这里是链接 https://www.youtube.com/watch?v=NTip15BHVZc&list=PLAE85DE8440AA6B83&index=15 我的代码和他的代码完全相同,而在cpp文件中这个东西: mainClass::myfunction;(mainclass是我班级的名字,myfunction是我的职能) 当我尝试执行我的程序时,它会出错:

unidentified reference to 'mainClass::myfunction()'

这是我的main.cpp文件代码:

#include <iostream>
#include "mainclass.h"

using namespace std;

int main()
{
    mainClass bo;
    bo.myfunction();
    return 0;
}

这是我的mainclass.h代码:

#ifndef MAINCLASS_H
#define MAINCLASS_H

class mainClass
{
    public:
        myfunction();
};

#endif // MAINCLASS_H

我的mainclass.cpp:

#include "mainclass.h"
#include <iostream>

using namespace std;

mainClass::myfunction()
{
    cout << "I am a banana" << endl;
}

我对这些不太了解所以你能告诉我这里的错误是什么,因为我从这个家伙的手中正确地复制了一切,但它仍然不起作用 PS:这件事发生在我身上很多,我理解一切,没有任何作用,我复制一切,没有任何作品,然后我确实完成了这个人正在做的事情,仍然没有任何东西适用于所有三个PC,所以我不认为问题是与设备lol

1 个答案:

答案 0 :(得分:1)

我怀疑你是否完全复制并粘贴了该代码,因为我相当确定教师不应该教授没有指定返回类型的功能,但不管怎么说,让我们跳进去...

可能性#1 你的意思是为类创建一个构造函数。在这种情况下,请确保构造函数与类具有相同的名称。此外,您无法通过.mainClass()调用它,因为它是构造函数。

class mainClass
{
    public:
        mainClass();
};
mainClass::mainClass()
{
    cout << "I am a banana" << endl;
}

可能性#2 您打算创建类成员函数myfunction。你真的应该指定你的函数的返回类型。有些编译器会自动假定int返回类型,因此您创建的函数是int myfunction();,但您确实应该将其指定为void myfunction();,因为您没有返回任何内容。 ADDL。信息:Does C++ allow default return types for functions?

接下来,通过添加返回类型来更改给定定义的方式。

void mainClass::myfunction()
{
    cout << "I am a banana" << endl;
}

可能性#3 这些应该可行,但另一个问题是您可能没有链接mainclass.cpp,因此没有可用的定义。在代码块中,右键单击项目名称并单击Add Files,然后添加mainclass.cpp,以便链接器可以定义mainClass::myfunction()

要解决使用项目构建mainclass.cpp的问题,请尝试添加 #error I'm included!之后的文件mainclass.cpp #include "mainclass.h"。如果您收到错误I'm included!,则会将其关联,您可以删除#error