2014-01-16 104 views
0

我敢肯定,這可能是簡單的事情,因爲我已經遵循其他人已經在這個網站上做過的事情,但不管我如何設置我的文件和#includes 。它很奇怪,這裏的任何人都是我的代碼。C++實現和頭文件鏈接

這三個文件不會用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

我加了一些信息,對不起! – suitegamer

回答

4
void simplify(int numerator, int denominator){ 

//definition here 

} 

應該

void Fraction::simplify(int numerator, int denominator){ 

//definition here 

} 

你定義它的方式,simplify是在全球範圍內一個簡單功能,而第二個變體實現成員函數的Fractionsimplify以前Fraction.h聲明。鏈接錯誤告訴你,你從來沒有實現這個方法(因爲你實際上實現了一個具有相同名稱的新函數)。

+0

謝謝!!!!!!!!!!您!!!!!!!!!如果你不介意,你能告訴我理論是什麼嗎? – suitegamer

+0

太棒了,我現在明白了。感謝您花時間幫助我! – suitegamer

+0

@ John3136它不會讓我12分鐘。別擔心,我正在等待;)。 – suitegamer