2013-10-09 19 views
2

我試圖找到一個解決方案在線我的問題,但我一直不成功。我認爲我的問題可能與鏈接有關。C++ - 獲取我的類的未定義引用

我有3個文件scanner.hscanner.cppscanner_test.h我已盡我所能地修剪文件。

scanner.h

class Scanner { 
public: 
Token *scan (const char *); 
}; 

scanner.cpp

#include "scanner.h" 
Token scan(const char *text){ 
// Do something code 
} 

scanner_test.h

#include "scanner.h" 
Scanner *s ; 
void test_setup_code () { 
    s = new Scanner() ; 
} 
Token *tks = s->scan (text) ; //This line gives the error 

當我嘗試編譯和運行是從scanner_test.h undefined reference to `Scanner::scan(char const*)

錯誤

這是我的理解代碼: scanner_test.h包括scanner.h文件,該文件是在編譯過程中鏈接到scanner.cpp並且此文件具有Scanner::scan(char const*)

回答

8

scanner.cpp的定義,你需要:

Token* Scanner::scan(const char *text) { ... } 
//  ^^^^^^^^^ 

否則你是實現一個名爲scan的免費函數,而不是從Scanner的成員方法。 (注意我還加了*你錯過了,但編譯器會告訴你,無論如何,一旦你添加了Scanner::部分)