所以我刚刚学会了如何分离课程,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
答案 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
。