потом легко в json получать имя. Правильно ли так делать и правильно ли я понимаю что для сравнения можно просто сравнивать адреса?
class AstNodeType {
public:
constexpr AstNodeType(const char* name): name{name} {};
private:
const char* name;
};
class NodeType {
public:
static constexpr AstNodeType Unknown = AstNodeType("Unknown");
static constexpr AstNodeType StringLiteralExpr = AstNodeType("StringLiteralExpr");
static constexpr AstNodeType IntegerLiteralExpr = AstNodeType("IntegerLiteralExpr");
static constexpr AstNodeType FloatLiteralExpr = AstNodeType("FloatLiteralExpr");
};
если у тебя будет много нод, то в чем проблема в каждом из классов прописать имя типа?
А с чем я буду сравнивать потом? Я имею в виду как потом писать что-то типо node.type == ... ?
ну node.gettype() == node.gettype()
ну с адресом статического члена твоего класса, но это только ты можешь гарантировать, что твои функции разбора будут возвращать ссылки на эти экземпляры.
Обсуждают сегодня