我通过 StackOverflow 上的类实现发现了一种类似于 Java 的枚举的新方法。
在自己的头文件中声明的符号类
class Symbols {
public:
Symbols() {}
static const Symbols CREATE;
. . .
private:
std::string the_symbol;
// Symbols constructor
Symbols (std::string symbol){
this->the_symbol = symbol;
}
public:
std::string get_symbol(void) {
return the_symbol;
}
void set_symbol(std::string new_value) { the_symbol = new_value; }
void initialize(void){
const Symbols CREATE = Symbols("create");
. . .
}
};
以多种方式在课堂上使用
bool RecursiveDescentParser::type_name(){
if (accept(Symbols::STRING) || accept(Symbols::INTEGER)){
return true;
}
else
return false;
}
和
symbol_ = Symbols::WHERE;
if (!boost::iequals(tokenizer_->peekAtNext(), symbol_.get_symbol(), loc_)){
// complete any tokens
std::string temp = tokenizer_->completeToken();
}
标Symbols
头包含在几个类中。有很多类型的编译器错误
1>recursive_descent_parser.obj : error LNK2001: unresolved external symbol "public: static class Symbols const Symbols::VALUES" (?VALUES@Symbols@@2V1@B)
是什么赋予了?我收到了所有 39 个未解决的外部问题,其中一些与这个问题无关。我正在正确定义头文件以确保没有重复的声明并且所有类都能正确编译。