Я пытаюсь реализовать калькулятор из языка программирования C ++, главы 10, 14 и 15.
У меня проблема с компоновщиком, когда я пытаюсь запустить его, я получаю эту ошибку:
неопределенная ссылка на `Lexer :: ts '
Я пробовал много вещей, чтобы избавиться от этого, но я не могу. Спасибо за помощь!
dc.h
namespace Lexer{
.
.
.
struct Token{..};
class Token_stream{...};
extern Token_stream ts;
}
.
.
lexer.cpp
#include "dc.h"
Lexer::Token_stream ts{&cin};
.
.
.
parser.cpp
#include "dc.h"
using Lexer::ts;
double Parser::prim(bool get){
if(get) ts.get();
.
.
.
main.cpp
#include "dc.h"
#include <sstream>
using std::string; using std::cout; using std::cin;
using Lexer::ts;
void Driver::calculate() {
for (;;) {
ts.get();
if (ts.current().kind == Lexer::Kind::end) break;
if (ts.current().kind == Lexer::Kind::print)continue;
cout << Parser::expr(false) << '\n';
}
}
int main(int argc, char* argv[]){
Table::table["pi"]=3.14159265;
Table::table["e"]=2.718281828;
Driver::calculate();
return Error::no_of_errors;
}
ОШИБКИ IM IMTING:
/ home / eduardo / Desktop / Utec / Poo2 / unidad-3-a-desk-calculator-Marcuss17 / main.cpp: 10: неопределенная ссылка на `Lexer :: ts '
/ home / eduardo / Desktop / Utec / Poo2 / unidad-3-a-desk-calculator-Marcuss17 / main.cpp: 11: неопределенная ссылка на`Lexer :: ts '
/ home / eduardo / Desktop / Utec / Poo2 / unidad-3-a-desk-calculator-Marcuss17 / main.cpp: 12: неопределенная ссылка на` Lexer :: ts'
CMakeFiles / DeskCalculator.dir / parser.cpp.o: в функции Parser::prim(bool)':
/home/eduardo/Desktop/Utec/Poo2/unidad-3-a-desk-calculator-Marcuss17/parser.cpp:6: undefined reference to
Lexer :: ts '
/ home / eduardo / Desktop / Utec / Poo2 / unidad-3-a-desk-calculator-Marcuss17 / parser.cpp: 8: неопределенная ссылка на `Lexer :: ts '