我收到未定义的参考错误。你能找出原因吗?
错误:
undefined reference to Breuken::Breuken(int, int)
undefined reference to Breuken::som()
(我是c ++编程的新手。我目前正在使用一个头文件,另一个源文件和主源文件来开发项目。)
这是我的代码:
头文件(Breuk.H):
using namespace std;
class Breuken{
Breuken(int, int);
void som();
void setTeller1(int);
void setNoemer1(int);
int getTeller1();
int getNoemer1();
private:
int teller1;
int noemer1;
};
源文件(Breuk.cpp):
#include <iostream>
#include "Breuk.h"
using namespace std;
Breuken::Breuken(int tel1, int noem1)
{
setTeller1(tel1);
setNoemer1(noem1);
}
int Breuken::getTeller1()
{
return teller1;
}
int Breuken::getNoemer1()
{
return noemer1;
}
void Breuken::setTeller1(int tel1)
{
teller1 = tel1;
}
void Breuken::setNoemer1(int noem1)
{
noemer1 = noem1;
}
int Breuken::som()
{
cout<<"Breuken zijn: "<<getTeller1()<<" / "<<getNoemer1()<<endl;
}
主文件(main.cpp):
#include <iostream>
#include "Breuk.h"
using namespace std;
int main()
{
Breuken br(1, 2);
br.som();
return 1;
}
答案 0 :(得分:-1)
如果我做对了,您想使用一个类,但是您所做的唯一一件事就是声明一些函数而没有实际定义它们。
您需要做的是将所有内容放在此类的标题中:
class Breuk {
private:
int teller1;
int noemer1;
public:
Breuk(int tel1, int noem1);
void som();
void setTeller1(int tel1);
void setNoemer1(int noem1);
int getTeller1();
int getNoemer1();
};
此外,不要忘记给函数头中的变量起一个名字!
您需要获取对类的引用(。::之前的部分)的.cpp文件。它必须与您的班级同名。另外,在构造函数中使用setter也不太好。最好直接引用成员变量(类中的变量)。为此,您需要使用“ this-> variable”。 “ this”将引用您所在的当前类。这意味着,如果您编写this-> teller1,它将引用该类内部的teller1变量。
#include <iostream>
#include "Breuk.hpp"
using namespace std;
Breuk::Breuk(int tel1, int noem1)
{
// setTeller1(tel1); theoreticly ok but its better to access
// setNoemer1(noem1); member variables (variables inside a class) directly
this->teller1 = tel1;
this->noemer1 = noem1;
}
int Breuk::getTeller1()
{
return teller1;
}
int Breuk::getNoemer1()
{
return noemer1;
}
void Breuk::setTeller1(int tel1)
{
teller1 = tel1;
}
void Breuk::setNoemer1(int noem1)
{
noemer1 = noem1;
}
void Breuk::som()
{
cout << "Breuken zijn: " << getTeller1() << " / " << getNoemer1() << endl;
}
在main.cpp中,您只犯了一个小错误,即返回0和类的名称。
#include "Breuk.hpp"
using namespace std;
int main()
{
Breuk br(1, 2); // make sure u use the same name your class has
br.som();
return 0; // return 0 at the end: it means that the program executed correctly
// return 1 would mean that an error occured
}
此外,我建议使用.hpp文件而不是.h文件。并没有真正的区别,但是在c ++中使用.hpp更为常见。