2

我试图在网上找到解决问题的方法,但没有成功。我认为我的问题可能与链接有关。

我有 3 个文件,scanner.h我已经尽我所能修剪了这些文件。scanner.cppscanner_test.h

扫描仪.h

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

扫描仪.cpp

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

扫描仪测试.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.hundefined reference to `Scanner::scan(char const*)

这是我对代码的理解: scanner_test.h包括在编译期间scanner.h链接到的文件,scanner.cpp并且该文件具有以下定义Scanner::scan(char const*)

4

1 回答 1

8

scanner.cpp中,您需要:

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

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

于 2013-10-09T18:25:03.417 回答