Я начал работать над языковым парсером и наткнулся на неопределенную ссылку, когда использовал std :: map
/usr/bin/ld: /home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:106: undefined reference to `ProgramObj::envCnfgTable[abi:cxx11]'
/usr/bin/ld: /home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:107: undefined reference to `ProgramObj::envCnfgTable[abi:cxx11]'
/usr/bin/ld: /home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:108: undefined reference to `ProgramObj::envCnfgTable[abi:cxx11]'
/usr/bin/ld: /home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:109: undefined reference to `ProgramObj::envCnfgTable[abi:cxx11]'
/usr/bin/ld: parser.tab.o:/home/leksoBor/Desktop/research/neuLogo/src/./rules/0000_program_base/Program.hh:113: more undefined references to `ProgramObj::envCnfgTable[abi:cxx11]' follow
Это сообщение об ошибке, которое я получаю, а код следующий:
static void resetEnvCnfgTable()
{
envCnfgTable.insert(std::pair<std::string,std::string>("version", "0.0") );
envCnfgTable.insert(std::pair<std::string,std::string>("description", "no description"));
envCnfgTable.insert(std::pair<std::string,std::string>("real-type", "64-bit"));
envCnfgTable.insert(std::pair<std::string,std::string>("whole-type", "32-bit"));
envCnfgTable.insert(std::pair<std::string,std::string>("random-type", "mersenne"));
};
static void printEnvCnfgTable()
{
for(std::map<std::string, std::string>::iterator it = envCnfgTable.begin(); it != envCnfgTable.end(); it ++)
{
std::cout << it -> first << " " << it -> second << '\n';
}
};
static std::map<std::string, std::string> envCnfgTable;
Я использую:
clang++ -g -c -Wall -std=c++11 -o ../../parts/grammar/Program.o Program.cc
Есть предложения? Я видел несколько похожих тем, но не смог решить проблему.