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

C++ assigning an object to another class

本文关键字:另一个 分配 一个对象 C++      更新时间:2023-10-16

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

ASTNode* pAssign = new ASTAssignmentNode();

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

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

我没有C++经验。

将不胜感激任何帮助。

你应该改用ASTAssignmentNode* pAssign 如果您正在为课堂作业执行此操作,并且他们为您提供了您不应该修改的文件,从而使您使用 ASTNode*,请询问您的助教,因为我遇到过这种情况,您应该可以使用解决方法,但它会因不同的作业而异。

尝试强制转换以访问属于 ASTAssignmentNode 类的变量

((ASTAssignmentNode* ) pAssign)->variable

我用的被称为常规石膏。您也可以使用静态投射或M.M.提到的动态投射,如果您想详细了解您需要哪种类型的投射,请在此处查看帖子。

只要您确定ASTAssignmentNode是ASTNode的子节点,就应该没有任何影响。

当你将ASTAssignmentNode投射到ASTNode时,它将只包含ASTNode的类定义,并且它对ASTAssignmentNode一无所知。这就是为什么你需要把它扔回去。

虚拟功能是一个例外。虚函数调用子类实现(如果存在)。

由于 pAssign 是指向基类的指针,因此需要将其强制转换为派生类 ASTAssignmentNode。最好使用 c++ dynamic_cast。

dynamic_cast<ASTAssignmentNode*>(pAssign)->variable
相关文章: