本文整理汇总了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;
}