我试图在网上找到解决问题的方法,但我没有成功。我认为我的问题可能与链接有关。
我有3个文件scanner.h
,scanner.cpp
和scanner_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
的定义
答案 0 :(得分:8)
在scanner.cpp
中,您需要:
Token* Scanner::scan(const char *text) { ... }
// ^^^^^^^^^
否则你正在实现一个名为scan
的免费函数,而不是来自Scanner
的成员方法。 (注意我还添加了你缺少的*
,但是一旦你添加了Scanner::
部分,编译器就会告诉你这个)