我正在尝试创建一个指向类的指针,如下所示。
ASTNode* pAssign = new ASTAssignmentNode();
但是,pAssign
不包含在类ASTAssignmentNode
中定义的变量。我错过了什么吗?如何访问ASTAssignmentNode()
中定义的变量? ASTAssignmentNode()
继承自ASTStatementNode()
继承的ASTNode()
。
编写pAssign->variable
时(在ASTAssignmentNode())
中声明发生错误" pAssign不包含成员变量的定义"
我没有C ++经验。
感谢任何帮助。
答案 0 :(得分:1)
您应该使用ASTAssignmentNode * pAssign。如果您正在为类分配执行此操作,并且他们为您提供了文件,您不应该修改它使您使用ASTNode *,请询问您的TA,因为我一直处于这种情况,应该有可以使用的解决方法但它不同于不同的任务。
答案 1 :(得分:1)
尝试强制转换以访问属于ASTAssignmentNode类
的变量((ASTAssignmentNode* ) pAssign)->variable
我所使用的被称为常规演员。您也可以使用M.M.提到的静态铸造或动态铸造。如果您想详细分析所需的演员类型,请查看post here。
只要您确定ASTAssignmentNode是ASTNode的子节点,就不会有任何影响。
当您将ASTAssignmentNode转换为ASTNode时,它将只包含ASTNode的类定义,并且它对ASTAssignmentNode一无所知。这就是你需要把它丢回的原因。
此例外是虚函数。虚函数调用子类实现(如果存在)。
答案 2 :(得分:0)
由于pAssign是指向基类的指针,因此需要将其强制转换为派生类ASTAssignmentNode。最好使用c ++ dynamic_cast。
dynamic_cast<ASTAssignmentNode*>(pAssign)->variable