C ++ - 获取对我的类的未定义引用

时间:2013-10-09 18:24:18

标签: 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的{​​{1}}文件,此文件具有scanner.cpp的定义

1 个答案:

答案 0 :(得分:8)

scanner.cpp中,您需要:

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

否则你正在实现一个名为scan的免费函数,而不是来自Scanner的成员方法。 (注意我还添加了你缺少的*,但是一旦你添加了Scanner::部分,编译器就会告诉你这个)