我正在尝试创建一个指向一个类的指针,如下所示。
ASTNode* pAssign = new ASTAssignmentNode();但是,pAssign不包含类ASTAssignmentNode中定义的变量。我是不是错过了什么?如何访问ASTAssignmentNode()中定义的变量?ASTAssignmentNode()继承自ASTStatementNode(),而ASTNode()继承自ASTNode()。
当编写pAssign->variable (在ASTAssignmentNode())中声明)时,出现错误"pAssign不包含成员变量的定义“
我在C++方面没有经验。
都会很感谢你的帮助。
发布于 2016-04-27 06:47:51
您应该使用ASTAssignmentNode* pAssign。如果你这样做是为了一个类分配,他们给了你不应该修改的文件,让你使用ASTNode*,请咨询你的助教,因为我曾经遇到过这种情况,应该有一些你可以使用的变通办法,但不同的分配会有所不同。
发布于 2016-04-27 06:53:40
尝试强制转换以访问属于ASTAssignmentNode类的变量
((ASTAssignmentNode* ) pAssign)->variable我所使用的被称为常规造型。你也可以使用M.M.提到的静态转换或动态转换。如果你想详细了解你需要哪种类型的转换,请查看post here。
只要您确定ASTAssignmentNode是ASTNode的孩子,就不应该有任何影响。
当您将ASTAssignmentNode转换为ASTNode时,它将只包含ASTNode的类定义,而对ASTAssignmentNode一无所知。这就是为什么你需要回溯它的原因。
虚拟函数是一个例外。虚函数调用子类实现(如果它们存在)。
发布于 2016-04-27 07:12:10
由于pAssign是指向基类的指针,因此需要将其强制转换为派生类ASTAssignmentNode。优选地具有c++ dynamic_cast。
dynamic_cast<ASTAssignmentNode*>(pAssign)->variablehttps://stackoverflow.com/questions/36877098
复制相似问题