类型检查仅仅是整数比较吗?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
.