I'm sorry. Its problem are: (I use Visual Studio)
1>Parser.obj : error LNK2005: "enum Lexer::Tooken_Symbol Lexer::curr_symbol" (?curr_symbol@Lexer@@3W4Tooken_Symbol@1@A) already defined in Lexer.obj
1>Parser.obj : error LNK2019: unresolved external symbol "enum Lexer::Tooken_Symbol __cdecl Lexer::get_symbol(void)" (?get_symbol@Lexer@@YA?AW4Tooken_Symbol@1@XZ) referenced in function "float __cdecl Parser::term(void)" (?term@Parser@@YAMXZ)
> "enum Lexer::Tooken_Symbol Lexer::curr_symbol" already defined in Lexer.obj
By including `Lexer.h', you'll have several sources that define the same global variable.
If you want that each unit has its own copy, declare the variable as static
If you want the variable to be shared, declare it as extern. You'll also need to define it in one (and just one) source file.
> unresolved external symbol "enum Lexer::Tooken_Symbol __cdecl Lexer::get_symbol(void)"
In `Lexer.cpp' you have defined ::get_symbol() but you need to define Lexer::get_symbol()