当前位置: 首页>>代码示例>>C++>>正文


C++ TypeClass::getClass方法代码示例

本文整理汇总了C++中TypeClass::getClass方法的典型用法代码示例。如果您正苦于以下问题:C++ TypeClass::getClass方法的具体用法?C++ TypeClass::getClass怎么用?C++ TypeClass::getClass使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TypeClass的用法示例。


在下文中一共展示了TypeClass::getClass方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: visit

void VisitorNodeTyper::visit(ExprOP2 *n){
    n->getLeft()->accept(*this);
    TypeClass* tc = dynamic_cast<TypeClass*>(n->getLeft()->getType());
    Class* old_cur_class = this->cur_class;
    this->cur_class = tc ? tc->getClass() : 0;
    n->getRight()->accept(*this);
    // Type of binary operator is type of operands (with promotion), except for comparison operators
    if (   n->getOperator() == ExprOP2::LT || n->getOperator() == ExprOP2::LTE
        || n->getOperator() == ExprOP2::GT || n->getOperator() == ExprOP2::GTE
        || n->getOperator() == ExprOP2::EQ || n->getOperator() == ExprOP2::NEQ
    )
    {
        n->setType(TypePrimary::getBool());
    }
    else if (n->getOperator() == ExprOP2::DOT)
    {
        if (!tc)
            throw __FILE__ "(" QUOTE(__LINE__) "): Left hand side of . operator must be an object / class.";
        n->setType(n->getRight()->getType());
    }
    else if (n->getOperator() == ExprOP2::ARRAY)
    {
        // TODO Check rhs type
        TypeArray* ta = dynamic_cast<TypeArray*>(n->getLeft()->getType());
        if (!ta)
            throw __FILE__ "(" QUOTE(__LINE__) "): Left hand side of [] operator must be an array.";
        n->setType(ta->getType());
    }
    else    // All other operators
    {
        n->setType(n->getLeft()->getType());
    }
    this->cur_class = old_cur_class;
}
开发者ID:cybrown,项目名称:CyLang,代码行数:34,代码来源:VisitorNodeTyper.cpp


注:本文中的TypeClass::getClass方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。