Действительно ли проверка типа является простым целочисленным сравнением? Или имело бы смысл иметь a GetTypeId
виртуальная функция к различению, которое сделало бы это целочисленным сравнением?
(Просто не хочу вещи быть сравнением строк на именах классов),
Править: То, что я имею в виду, если я часто ожидаю неправильный тип, был бы он иметь смысл использовать что-то как:
struct Token
{
enum {
AND,
OR,
IF
};
virtual std::size_t GetTokenId() = 0;
};
struct AndToken : public Token
{
std::size_t GetTokenId() { return AND; }
};
И используйте GetTokenId
участник вместо доверия dynamic_cast
.