C ++将对象分配给另一个类

时间:2016-04-26 22:42:11

标签: c++ inheritance

我正在尝试创建一个指向类的指针,如下所示。

ASTNode* pAssign = new ASTAssignmentNode();

但是,pAssign不包含在类ASTAssignmentNode中定义的变量。我错过了什么吗?如何访问ASTAssignmentNode()中定义的变量? ASTAssignmentNode()继承自ASTStatementNode()继承的ASTNode()

编写pAssign->variable时(在ASTAssignmentNode())中声明发生错误" pAssign不包含成员变量的定义"

我没有C ++经验。

感谢任何帮助。

3 个答案:

答案 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