2

オンラインで問題の解決策を見つけようとしましたが、うまくいきませんでした。私の問題はリンクに関連している可能性があると思います。

3 つのファイルscanner.hscanner.cppあり、scanner_test.hできる限りファイルをトリミングしました。

スキャナー.h

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

スキャナー.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.hscanner.cppScanner::scan(char const*)

4

1 に答える 1

8

ではscanner.cpp、次のものが必要です。

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

scanそれ以外の場合は、 のメンバ メソッドではなく、というフリー関数を実装していますScanner。(あなたが行方不明だったことも追加したことに注意してください。ただし、部品*を追加すると、コンパイラはとにかくこれを通知しますScanner::)

于 2013-10-09T18:25:03.417 に答える