c++ - 分离类时,在 cpp 文件中使用函数会导致错误

标签 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

我的主类.cpp:

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

using namespace std;

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

我对这些不太了解所以你能告诉我这里的错误是什么吗,因为我从那个人的旅游指南中正确地复制了所有内容但仍然不起作用 P.S:这种情况经常发生在我身上,我明白一切,没有任何效果,我复制了所有内容,没有任何效果,然后我确实按照这个人正在做的事情做了,但在所有三台 PC 上仍然没有任何效果,所以我不认为问题是与设备哈哈

最佳答案

我怀疑您是否完全复制并粘贴了该代码,因为我相当确定老师不应该教授没有指定返回类型的函数,但无论如何让我们开始吧...

可能性#1 您打算为该类创建一个构造函数。在这种情况下,请确保构造函数与类同名。此外,您不能通过 .mainClass() 调用它,因为它是一个构造函数。

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

可能性 #2 您打算创建类成员函数 myfunction。你真的应该指定你的函数的返回类型。某些编译器会自动采用 int 返回类型,因此您创建的函数是 int myfunction();,但您确实应该将其指定为 void myfunction (); 因为你没有返回任何东西。添加。信息: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 included!#include "mainclass.h" 之后的文件 mainclass.cpp。如果您遇到错误 I'm included!,则它已链接,您可以删除 #error

关于c++ - 分离类时,在 cpp 文件中使用函数会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47825562/

相关文章:

c++ - VRPN C++ 代码在 Linux 而不是 Windows 上编译

c++ - 获取由库调用创建的窗口的窗口句柄 (HWND)

c++ - 包括来自不同目录的头文件的问题[不是路径问题]

C:当所有类型相同时用不同的类型重新声明

c++ - 如何从 C++ 中的自定义结构数据中获取特定元素?

c++ - 有序 QVector 中的二进制搜索

class - UML 类图

class - Fortran 中的模板?

c++ - 操作符不匹配* =

c - header 相互使用结构和枚举?