我很确定这可能是一件简单的事情,因为我已经关注了其他人已经在这个网站上做过的事情,但无论我如何设置我的文件和#includes,我都会不断收到链接错误。很奇怪,这里的任何人都是我的代码。
这三个文件不能用g ++ main.cpp Fraction.cpp编译。
我收到此错误:
Undefined symbols for architecture x86_64:
"Fraction::simplify(int, int)", referenced from:
_main in w2-TsJ6zT.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这是我的main.cpp
#include <iostream>
using namespace std;
#include "Fraction.h"
int main() {
Fraction fraction;
int num, den;
fraction.simplify(num, den);
}
这是我的Fraction.h
class Fraction{
private:
//Variables
int numerator;
int denominator;
public:
//Methods
void simplify(int numerator, int denominator);
};
最后是我的Fraction.cpp文件。
#include <iostream>
using namespace std;
#include "Fraction.h"
void simplify(int numerator, int denominator){
//definition here
}
感谢任何帮助和信息。谢谢!
答案 0 :(得分:4)
void simplify(int numerator, int denominator){
//definition here
}
应该是
void Fraction::simplify(int numerator, int denominator){
//definition here
}
您定义它的方式,simplify
是全局范围内的简单函数,而第二个变体实现先前在simplify
中声明的Fraction
的成员函数Fraction.h
。链接错误告诉您从未实现此方法(因为您实际实现了具有相同名称的新函数)。