在分离类时,使用CPP文件中的功能会导致错误

While seperating classes, using a function in cpp file causes errors

本文关键字:功能 错误 文件 分离 CPP 使用      更新时间:2023-10-16

所以我刚刚学会了如何分离类,YouTube Totourial强调这样做很多,这是链接https://www.youtube.com/watch?v=ntip15bhvzc& list = plae85de84440aa6b83& index = 15我的代码与他的代码完全相同,并且在CPP文件中有这件事: 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;
}

我对这些了解不多,所以你能告诉我这里的错误是什么,因为我从这个家伙的套餐中正确复制了所有内容,但仍然不起作用附注:这发生在我很多事情上,我了解一切,什么都没有奏效,我复制一切,什么都没有起作用,然后我从字面上做了这个人的所作所为,仍然没有任何PC的所有操作,所以我不认为问题是使用设备大声笑

我怀疑您完全复制并粘贴了该代码,因为我相当确定老师不应该在没有指定的返回类型的情况下教授功能,但无论如何让我们跳入它...

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

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

可能性#2 您打算创建类成员函数myfunction。您确实应该指定您的功能的返回类型。一些编译器将自动使用int返回类型,因此您创建的功能是int myfunction();,但是您实际上应该将其指定为void myfunction();,因为您没有返回任何内容。addl。信息:C 是否允许默认返回类型?

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

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

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

如果通过项目构建了MainClass.cpp,请尝试添加 #error I'm included!#include "mainclass.h"之后的文件CC_11。如果您遇到了错误I'm included!,则将其链接,并且可以删除#error